Na empresa em que trabalho, estamos desenvolvendo um projeto para uma usina hidrelétrica, no qual a intenção é abrir o portão eletrônico com um sistema baseado em Arduíno. Até aí a ideia parece simples, mas somente até aí!
A situação é a seguinte: O portão fica na entrada da usina, o comando de abrir e fechar o portão fica na sala de controle das turbinas. O problema é a distância entre o comando e o portão. Algo em torno de 700 metros.
Próximo ao portão, teremos pontos de rede, pois serão instaladas algumas câmeras IP que também serão controladas da sala de controle das turbinas.
Pensamos no seguinte, um módulo Arduíno na sala de controle das turbinas recebendo o sinal do comando de abertura do portão e enviando para o outro módulo Arduíno que por sua vez dá o comando para o portão abrir ou fechar e também recebe o sinal da "campainha" do portão e envia para o módulo da sala de controle, tudo isso em rede. Ufa!!! Acho que consegui explicar a ideia!!!
O problema maior é que eu pesquisei muito na internet e ainda não achei nada semelhante, somente algumas ideias para abrir o porão via browser ou android.
Será que alguém consegue me dar uma luz???
Tags:
Jair, bom dia.
Que tal usar um Ethernet shield .
Tem varios projetos aqui no LG que utilizam este shield.
Use-os como refêrencia para o seu projeto.
Rui
A intenção é justamente essa, usar 2 arduinos e 2 ethernet shields, a minha dúvida maior é na questão da comunicação entre eles.
Muito obrigado pela colaboração!!!
Cara, sua implementação pode ser feita de varias formas, vou citar 3.
1- Cabo simples ligando arduinos.
2- Via ethernet.
3- Via comunicação sem fio.
1 - Pra o primeiro, ligação via cabo, não há muito o que falar, é só passar os cabos e ver pela distancia qual o melhor protocolo, que eu lembro tem o SPI ( http://labdegaragem.com/profiles/blogs/tutorial-comunica-o-spi-seri... ) e o Serial ( http://labdegaragem.com/forum/topics/comunica-o-serial-entre-dois-a... )
2- Para comunicação Ethernet o nosso nobre Rui viana já expos, o resto é estudar.
3- Já se o lance passa a ser comunicação sem fio, ai a coisa fica bonita, pois posso sugerir 3 modelos:
a- Xbee - É mais profissinal, porem, mais caro, tem modulos que podem alcançar facilmente a distancia que você deseja.
b- NRF24L01 - O modulo de maior potencia possibilita alcance de 1.200m sem barreiras, se entrar barreira no meio, ai a coisa é outra, esse é bem mais barato, mas o suporte para ele vem da comunidade, ao contrario dos xbees que são produtos industriais.
c- ESP8266 - Ao contrario dos xbee e nrf24l01, não cria rede propria, ele usa sua rede wifi para comunicação, é coisa nova, não tenho muito conhecimeto, mas sei que é barato, algo na casa dos R$ 35,00 cada modulo.
Bem, fica a seu gosto e bolso.
Na verdade, aí é que a coisa muda um pouco de figura, vamos fazer uma rede de fibra óptica para a usina. (Agora que a coisa ficou um pouco mais chique! kkk...)
Então vai ter que ser com ethernet shield mesmo, pq a distância a ser coberta tem vários obstáculos, o maior deles é a diferença do terreno, pois ao passar pelo portão, vc já encontra uma subida e logo depois uma bela descida, ou seja, sem fio fica meio inviável (no meu ponto de vista)!
O meu maior problema é fazer os dois arduinos se comunicarem (parte lógica da coisa), pois a parte física, beleza... é bem simples!
Muito obrigado pela colaboração!!!
já que o uso de ethernet shield foi escolhido, agora basta vc programar o sketch do arduino para fazer o ethernet shield rodar em modo webserver e webclient ao mesmo tempo. Dessa forma, o arduino que estará na sala de comando irá operar no modo webclient para enviar o comando de abertura do portão eletrônico e atuará no modo webserver para receber a informação de que a campainha foi acionada
O arduino que estará na entrada da usina irá operar no modo webserver para receber o comando de abertura do portão eletrônico (comando este que virá do arduino webclient da sala de comando) e atuará no modo webclient para enviar a informação de que a campainha foi acionada
já que o projeto é comercial, aceito inclusive receber honorários como consultor para ajudá-lo a implementar ;)
Muito obrigado pela colaboração!!!
Jair Boa Noite, bom fiz isso aqui em minha casa, acredito que funcionaria normalmente, você poderá usar apenas um Arduíno e um Shield Ethernet e um rele 5V para ligar na saída e dar o pulso na central do portão. Eu criei um servidor no meu roteador que ao digitar o IP externo do meu provedor ele direcionava diretamente para o site que criei e deixei salvo no Arduíno, no site do Arduíno eu acendia um LED em um dos pinos do Arduíno.
Fiz um filmagem realizando o procedimento do 3G do meu celular, e o LED na placa do Arduíno na minha internet fixa acendeu normalmente.
(Não utilizei o PC para alimentar o Arduino deixei ele ligado a uma fonte e o cabo de internet que ia para o roteador)
Consegui associar tudo utilizando os tutoriais aqui no forum
Normalmente, as câmeras IP possuem comando para abrir e fechar trancas e também para acender e apagar luzes. Claro que necessita de algum circuito que recebe o comando da câmera IP e aciona os reles.
Caso não tenha os comandos, sugiro você montar um servidor na sua sala, pode ser apenas um computador com XAMPP (Apache, PHP e MySQL) e no portão, um Arduino com Ethernet Shield configurado como servidor.
Para dar a luz, você coloca o Relay Shield e liga a lampada nele.
Espero ter ajudado e boa sorte,
'Eiju
//Programa: Automacao Residencial com Arduino e Ethernet Shield
//Autor: FILIPEFLOP
#include <SPI.h>
#include <Ethernet.h>
String readString;
int
pino_rele1 = 3;
int
pino_rele2 = 4;
boolean ligado =
true
;
boolean ligado_2 =
true
;
//Informacoes de endereco IP, gateway, mascara de rede
byte mac[] = { 0xA4, 0x28, 0x72, 0xCA, 0x55, 0x2F };
byte ip[] = { 192, 168, 0, 110 };
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
void
setup()
{
Serial.begin(9600);
pinMode(pino_rele1, OUTPUT);
pinMode(pino_rele2, OUTPUT);
//Inicializa Ethernet Shield
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.println(
"FILIPEFLOP - Automacao Residencial"
);
//Desliga os dois reles
digitalWrite(pino_rele1, HIGH);
digitalWrite(pino_rele2, HIGH);
}
void
loop()
{
EthernetClient client = server.available();
if
(client) {
while
(client.connected())
{
if
(client.available())
{
char
c = client.read();
if
(readString.length() < 100) {
readString += c;
}
if
(c ==
'\n'
)
{
//Controle do rele1
Serial.println(readString);
//Liga o Rele 1
if
(readString.indexOf(
"?ligar"
) > 0)
{
digitalWrite(pino_rele1, LOW);
Serial.println(
"Rele 1 Ligado"
);
ligado =
false
;
}
else
{
//Desliga o Rele 1
if
(readString.indexOf(
"?desligar"
) > 0)
{
digitalWrite(pino_rele1, HIGH);
Serial.println(
"Rele 1 Desligado"
);
ligado =
true
;
}
}
//Controle do rele2
Serial.println(readString);
//Liga o Rele 2
if
(readString.indexOf(
"?2_ligar"
) > 0)
{
digitalWrite(pino_rele2, LOW);
Serial.println(
"Rele 2 Ligado"
);
ligado_2 =
false
;
}
else
{
//Desliga o Rele 2
if
(readString.indexOf(
"?2_desligar"
) > 0)
{
digitalWrite(pino_rele2, HIGH);
Serial.println(
"Rele 2 Desligado"
);
ligado_2 =
true
;
}
}
readString =
""
;
client.println(
"HTTP/1.1 200 OK"
);
client.println(
"Content-Type: text/html"
);
client.println();
client.println(
"<html>"
);
client.println(
"<head>"
);
client.println(
"<title>FILIPEFLOP - Automacao Residencial</title>"
);
client.println(
"<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>"
);
client.println(
"<meta name='viewport' content='width=720, initial-scale=0.5' />"
);
client.println(
"<link rel='stylesheet' type='text/css' href='http://img.filipeflop.com/files/download/automacao/automacao_reside...' />"
);
client.println(
"<script type='text/javascript' src='http://img.filipeflop.com/files/download/automacao/automacao_reside...'></script>"
);
client.println(
"</head>"
);
client.println(
"<body>"
);
client.println(
"<div id='wrapper'><img alt='FILIPEFLOP' src='http://img.filipeflop.com/files/download/automacao/logoFF.jpg'/><br/>"
);
client.println(
"<div id='div1'>Rele 1</div>"
);
client.println(
"<div id='div2'>Rele 2</div>"
);
client.print(
"<div id='rele'></div><div id='estado' style='visibility: hidden;'>"
);
client.print(ligado);
client.println(
"</div>"
);
client.println(
"<div id='botao'></div>"
);
client.println(
"<div id='botao_2'></div>"
);
client.print(
"<div id='rele_2'></div><div id='estado_2' style='visibility: hidden;'>"
);
client.print(ligado_2);
client.println(
"</div>"
);
client.println(
"</div>"
);
client.println(
"<script>AlteraRele1()</script>"
);
client.println(
"<script>AlteraRele2()</script>"
);
client.println(
"</div>"
);
client.println(
"</body>"
);
client.println(
"</head>"
);
delay(1);
client.stop();
}
}
}
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por