terça-feira, 19 de maio de 2015
quinta-feira, 15 de janeiro de 2015
Automação residencial com Arduino e Ethernet
Fala pessoal!
Depois de muito tempo sem novidades, vamos começar um projeto novo!!!
A ideia desse projeto é automatizar um pequeno apartamento, nele vamos focar em itens básicos, para num futuro agregar mais funcionalidades.
Basicamente vamos utilizar no inicio do desenvolvimento:
Simples, mas funcional, ao apertar os botões o microcontrolador ira enviar um código RF, os receptores de RF vão receber esse código e analisar se tem que tomar alguma ação ou não, controlando assim os dispositivos.
Nesse post não vamos tratar da configuração de rede entre o modulo ethernet (IP/MAC) verifique os códigos de exemplo e a pagina do arduino.
Para construir a pagina acima utilize o seguinte código:
Programe seu microcontrolador e entre no IP especificado!
Até a próxima.
Depois de muito tempo sem novidades, vamos começar um projeto novo!!!
A ideia desse projeto é automatizar um pequeno apartamento, nele vamos focar em itens básicos, para num futuro agregar mais funcionalidades.
Basicamente vamos utilizar no inicio do desenvolvimento:
O Arduino ficara conectado ao Ethernet Shield, tudo conectado na rede do apartamento via porta RJ-45 do roteador WIFI, podendo ser acessado por smartphones/tablets e PCs em geral.
Feito isso, as funcionalidades iniciais serão:
- Controlar todas luzes e tomadas.
- Acendimento de luzes automática a noite.
- Gerar sequencia de acendimento aleatória da luzes.
- Acionar ar condicionado a distancia (via infra-vermelho).
- Abrir portão da garagem a distancia (necessário controle remoto).
- Abrir portão social a distancia.
- Verificar temperatura/umidade
- Verificar consumo kw.
Para controlar os dispositivos a distancia sem fios, vamos utilizar um transmissor de radiofrequência, cada objeto terá um receptor. A parte do controle vamos deixar para depois. Inicialmente vamos focar na pagina WEB que o usuário acessa para dar comandos ao microcontrolador.
Essa é a cara de nossa pagina:
Simples, mas funcional, ao apertar os botões o microcontrolador ira enviar um código RF, os receptores de RF vão receber esse código e analisar se tem que tomar alguma ação ou não, controlando assim os dispositivos.
Nesse post não vamos tratar da configuração de rede entre o modulo ethernet (IP/MAC) verifique os códigos de exemplo e a pagina do arduino.
Para construir a pagina acima utilize o seguinte código:
- #include <SPI.h>
- #include <Ethernet.h>
- #include <TextFinder.h>
- byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
- byte ip[] = { 192,168,0,75 };
- EthernetServer server(80);
- String leituraString;
- char flag_a;
- char flag_b;
- char flag_c;
- char flag_d;
- void setup()
- {
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(8, OUTPUT);
- Serial.begin(9600);
- Ethernet.begin(mac, ip);
- server.begin();
- Serial.print("Meu IP:");
- Serial.println(Ethernet.localIP());
- }
- void loop()
- {
- EthernetClient client = server.available();
- if (client)
- {
- while (client.connected())
- {
- if (client.available())
- {
- char c = client.read();
- if (leituraString.length() < 100)
- {
- leituraString += c;
- //Serial.print(c);
- }
- if (c == '\n')
- {
- Serial.println(leituraString);
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html");
- client.println();
- client.println("<HTML>");
- client.println("<HEAD>");
- client.println("<TITLE>Nosso AP</TITLE>");
- client.println("</HEAD>");
- client.println("<BODY>");
- client.println("<center>");
- client.println("<H1>Nosso AP - Controle Remoto </H1>");
- client.println("</center>");
- client.println("Tempo de funcionamento:");
- long tempo=((millis()/1000)/60);
- if(tempo<=1)
- {
- client.println(tempo);
- client.print(" minuto");
- }
- if(tempo>=2)
- {
- client.println(tempo);
- client.print(" minutos");
- }
- client.print("<br>");
- client.println("Controle T:");
- client.print(" <input type=submit value='ALL ON' style=width:100px;height:45px onClick=location.href='/?on2468'>");
- client.print(" <input type=submit value='ALL OFF' style=width:100px;height:45px onClick=location.href='/?off3579'>");
- client.print("<br><br>");
- client.println("Controle A:");
- client.print("<input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on2'>");
- client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href='/?off3'>");
- client.print("<br><br>");
- client.println("Controle B:");
- client.print("<input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on4'>");
- client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href='/?off5'>");
- client.print("<br><br>");
- client.println("Controle C:");
- client.print("<input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on6'>");
- client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href='/?off7'>");
- client.print("<br><br>");
- client.println("Controle D:");
- client.print("<input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on8'>");
- client.print("<input type=submit value=OFF style=width:100px;height:45px onClick=location.href='/?off9'>");
- client.println("<center>");
- client.println("<H1>Status Atual </H1>");
- client.println("</center>");
- client.println("Controle A:");
- if(leituraString.indexOf('2') >0)
- {
- flag_a=1;
- }
- if(leituraString.indexOf('3') >0)
- {
- flag_a=0;
- }
- if(flag_a==1)
- {
- client.print("Ligado");
- }
- if(flag_a==0)
- {
- client.print("Desligado");
- }
- client.print("<br>");
- client.println("Controle B:");
- if(leituraString.indexOf('4') >0)
- {
- flag_b=1;
- }
- if(leituraString.indexOf('5') >0)
- {
- flag_b=0;
- }
- if(flag_b==1)
- {
- client.print("Ligado");
- }
- if(flag_b==0)
- {
- client.print("Desligado");
- }
- client.print("<br>");
- client.println("Controle C:");
- if(leituraString.indexOf('6') >0)
- {
- flag_c=1;
- }
- if(leituraString.indexOf('7') >0)
- {
- flag_c=0;
- }
- if(flag_c==1)
- {
- client.print("Ligado");
- }
- if(flag_c==0)
- {
- client.print("Desligado");
- }
- client.print("<br>");
- client.println("Controle D:");
- if(leituraString.indexOf('8') >0)
- {
- flag_d=1;
- }
- if(leituraString.indexOf('9') >0)
- {
- flag_d=0;
- }
- if(flag_d==1)
- {
- client.print("Ligado");
- }
- if(flag_d==0)
- {
- client.print("Desligado");
- }
- // adiciona uma meta de refrescamento, o browser vai pegar dados a cada 5 segundos:
- client.println("<meta http-equiv=\"refresh\" content=\"5\">");
- client.println("</BODY>");
- client.println("</HTML>");
- delay(1);
- client.stop();
- if(leituraString.indexOf('2') >0)//checa por 2
- {
- digitalWrite(5, HIGH); // pino 5 alto
- Serial.println("Computador a Ligado");
- }
- if(leituraString.indexOf('3') >0)
- {
- digitalWrite(5, LOW);
- Serial.println("Computador a Desligado");
- }
- if(leituraString.indexOf('4') >0)
- {
- digitalWrite(6, HIGH);
- Serial.println("Computador b Ligado");
- }
- if(leituraString.indexOf('5') >0)
- {
- digitalWrite(6, LOW);
- Serial.println("Computador b Desligado");
- }
- if(leituraString.indexOf('6') >0)
- {
- digitalWrite(7, HIGH);
- Serial.println("Computador c Ligado");
- }
- if(leituraString.indexOf('7') >0)
- {
- digitalWrite(7, LOW);
- Serial.println("Computador c Desligado");
- }
- if(leituraString.indexOf('8') >0)
- {
- digitalWrite(8, HIGH);
- Serial.println("Computador d Ligado");
- }
- if(leituraString.indexOf('9') >0)
- {
- digitalWrite(8, LOW);
- Serial.println("Computador d Desligado");
- }
- leituraString="";
- }
- }
- }
- }
- }
Programe seu microcontrolador e entre no IP especificado!
Até a próxima.
Assinar:
Postagens (Atom)