Páginas

Arduino Wifi Ethernet Control



1)- Esquema de ligações com galeria de fotos.
2)- Fotos e Vídeos: Arduino Wifi Ethernet Control.
3)- Descrição de funcionamento e instalações.
4)- Como montar e configurar corretamente o Ethernet Shield com o Arduino:
5)- Programa Arduino.
6)- Lista de Materiais.




Gratis:

 Programa código Arduino para o app. Arduino Wifi Ethernet Control;

 Esquema de ligações;

 Fotos e Vídeos;

 Descrição de funcionamento e Lista de materiais.


 Adiquira o aplicativo - Arduino Wifi Ethernet Control em:




1)- Esquema de ligações com galeria de fotos: Arduino Wifi Ethernet Control.



































2)- Fotos e Vídeos: Arduino Wifi Ethernet Control.








Adiquira o aplicativo - Arduino RGB Colors Buttons Functions em:


3)- Descrição de funcionamento e instalações.


Esta versão comunica com roteador a cabo ou wifi rede interna porta:80 ou rede externa porta:8090 utilizando roteador com IP real(entre no site meu IP e descubra qual é seu IP) ou host fazendo um cadastro grátis em "no-ip"(your_name.ddns.net).

Desta forma torna-se este aplicativo bem versátil podendo comunicar a qualquer distância ou local, bastando apenas ter um numero de IP e uma conexão(via cabo, wifi ou 3G)com a internet.

Veja a descrição e instalação completa no blog em:  http://sergioarduino.blogspot.com.br/p/arduino-wifi-ethernet.html

O Aplicativo Arduino Wifi Ethernet Control instalado no smartphone Android controla remotamente o Arduino conectado a um roteador via wifi, cabo de rede ou 3G;

 O aplicativo Arduino Wifi Ethernet Control instalado no smartphone controla remotamente o Arduino(
via cabo, wifi ou 3G
), com ate 10 canais(porta analógica pinos: A0, A1, A2, A3 e A4 e porta digital pinos: D2, D3, D4, D5 e D6);

Através destes pinos podemos conectar uma placa com 10 reles(vendida no ebay ou mercado livre), onde podemos controlar ate 10 equipamentos lidados a rede elétrica residencial;

Acionamento(liga e deslida) de lâmpadas, abatjours, luminarias, travas elétricas de portas, motores, bombas, solenóides, contatores, forno elétrico, aparelhos eletrodomésticos, etc.

Obs.: Os acionamentos podem atuar de forma independente ou simultânea, facilitando sua operação e abrindo multiplas possibilidades ao projeto como exemplo em automação residêncial onde voce precisa de acionar luminárias dos comodos, salas, quartos, halls, cozinha,  de forma mais  inteligente.

Como funciona:

O aplicativo Arduino Wifi Ethernet Control instalado no Smartphone com Android comunica enviando "strings"  ao roteador 
via cabo, wifi ou 3G
 que está conectado à placa Ethernet shield que por sua vez está conectada ao Arduino;

 O Arduino recebe estas strings que por sua vez interpreta e faz o comando dos relés(placa de acionamento de relés)  que está conectada nas portas digitais e analógicas correspondente do Arduino(porta analógica digital pinos  A0, A1, A2, A3, A4 e D2, D3, D4, D5 e D6;

O Arduino também transmite de volta via wifi do roteador o Staus das portas acionadas, de forma que qualquer modificação de acionamento dos reles possa ser visualizada instantaneamente no smartphone Android; Então no caso de uma automação residencial podemos monitorar o acionamento à distância.


Gratis:

 Programa código Arduino para o app. Arduino Wifi Ethernet Control;

 Esquema Elétrico;

 Fotos e Vídeos;

 Descrição de funcionamento e Lista de materiais.


 Adquira o aplicativo - Arduino Wifi Ethernet Control em:


4)- Como montar e configurar corretamente o Ethernet Shield com o Arduino:

Arduino Ethernet Shield W5100 é outro dispositivo dessa família, que além de possibilitar o acesso às informações na sua rede local, ainda pode ser conectado à internet e permitir o seu monitoramento.
Arduino Ethernet Shield W5100
Acoplando o Arduino Ethernet Shield W5100 ao seu Arduino, basta um simples cabo de rede para que, em poucos minutos, você passe a monitorar o estado de sensores, chaves e outros dispositivos à partir do browser do seu computador ou celular. Este Shield é baseado no ethernet chip Wiznet W5100 (datasheet) e fornece um endereço IP compatível com os protocolos TCP e UDP.
O primeiro passo para setar corretamente o seu shield ethernet é configurá-lo com um endereço IP válido da sua rede. Vamos mostrar como obter as informações de rede no Windows 7, mas você pode usar o mesmo princípio para outros sistemas operacionais.
CONFIGURAÇÃO IP:

Clique em INICIAR e, na caixa de diálogo, digite CMD. Em seguida pressione a tecla ENTER :

Windows 7 - Iniciar

Na janela de prompt de comando, digite “ipconfig /all” (sem as aspas) e aperte ENTER :

Prompt de comando - Ipconfig

O comando será executado e várias informações aparecerão na tela. Procure pela informação referente à sua placa de rede principal, semelhante à esta destacada na imagem, pois são essas informações que você irá precisar para configurar o shield : Endereço IP,  Máscara de sub-rede e Gateway Padrão :

IPConfig - Resultados

Esses três parâmetros são definidos logo no início do programa, e devem ser alterados de acordo com a configuração da sua rede:

IPAddress ip(192,168,1,50) : Troque por um endereço IP no mesmo formato daquele que você copiou na janela de prompt de comando, mas o último número deve ser diferente. Exemplo : o IP do nosso equipamento é 192.168.1.120, e no programa utilizamos o 192.168.1.50. Antes de usar qualquer endereço da rede, certifique-se que o mesmo ainda não está em uso por nenhum outro equipamento.
Obs.: utilize um numero de IP que esteja dentro do range de seu roteador e que não esteja sendo utilizado por outro
dispositivo.

IPAddress gateway(192,168,1,1) : Utilize o mesmo endereço do Gateway Padrão que você obteve na janela de prompt de comando. No nosso caso, 192.168.1.1

IPAddress subnet(255,255,255,0) : Utilize o mesmo endereço referente à máscara de sub-rede, que você obteve na janela de prompt de comando : 255.255.255.0

Copie o código Arduino fornecido vá  para o IDE Arduino e cole o código
Veja o código Arduino e não esqueça então de fazer as modificações de IP, Gateway e Subnet capturados de sua rede, conforme explicado acima;

Veja a parte do código onde deve-se fazer as alterações com seus dados de rede;
Para testes você pode usar o MAC padrão como descrito no código abaixo(byte mac[ ]);
Copie o código completo conforme mostra item 5)- e altere os parametros de configuração de rede
com seus dados conforme descrito acima;



















No IDE verifique e Upload o código para a placa Arduino;
Monte o Ethernet Shield no Arduino conforme figura;
Plugar um cabo de rede entre o Ethernet Shield e o roteador;
Se tudo estiver correto, entrar no aplicativo Arduino Wifi Ethernet Control;
Ligue o Wifi do Smartphone e ligue também o roteador wifi  e o Arduino com suas fontes respectivas;
Pressione o botão IP change e digite seu numero de IP igual ao utilizado no código Arduino;
Pressione o botão IP save para salvar este número de IP na memória do smartphone;
Se desejar entrar com outro numero de IP repita a operação anterior ou pressione o botão Esc para sair
sem fazer alterações;
Pronto! Agora é só pressionar os botões de acionamento para ligar e deslidar dispositivos;
Para testar voce pode utilizar leds nas portar do Arduino;
Para efetuar comandos elétricos(ligar/desligar lâmpadas 110V/220V) será necessário utilizar e relés,
conforme descrição;

Resumo:

Para conexão local via wifi  insira no aplicativo smartphone o mesmo  IP com porta:80 do roteador que também está gravado no código Arduino;
Exemplo:192.168.1.50:80. Utilizado para conexão local rede interna.
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
Para conexão rede externa via cabo de rede, wifi ou 3G insira no aplicativo smartphone o IP com porta:8090 e pronto!
Exemplo:178.161.324.101:8090. Utilizado para conexão rede externa.

Entre na configuração de seu roteador:
Com o roteador conectado na rede digite o IP do roteador exemplo:192.168.1.1 e tecle Enter;
Entre no menu de REDIRECIONAMENTO DE PORTA e insira um nome para o dispositivo exemplo: Arduino e insira a  PORTA INTERNA:80 e PORTA EXTERNA:8090.

E pronto você já pode comunicar com o Arduino pela rede de internet a qualquer distância.
Obs.: não se esqueça de utilizar para isso um IP real;
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
Para conexão rede externa via cabo de rede, wifi ou 3G criando um Host:

Entre na configuração de seu roteador:
Com o roteador conectado na rede digite o IP do roteador exemplo:192.168.1.1 e tecle Enter;
Entre no menu de REDIRECIONAMENTO DE PORTA e insira um nome para o dispositivo exemplo: Arduino e insira a  PORTA INTERNA:80 e PORTA EXTERNA:8090.


Entre no site meu ip e veja qual é o seu ip anote e copie para o aplicativo smartphone;
Se desejar utilizar um host, isso facilita pois voce não precisará utilizar um numero mas sim 
um host como: seu_nome.ddns.net
Para isso entre no site "no-ip" e faça um cadastro grátis então utilize seu numero de ip real
e também a porta externa 8090.
No aplicativo smartphone insira o host que voçe criou, exemplo:  seu_nome.ddns.net e pronto,
voce está pronto para comunicação com a internet utilizando seu host.

Veja fotos de  exemplo de configuração do roteador:





































Veja no site: http://www.noip.com/





































Atenção para o risco de choque elétrico ou curto-circuitos ao trabalhar com rede elétrica ou partes energizadas com tensões de 110V ou 220V;
 Requer conhecimento de redes elétricas ou acompanhamento técnico especializado.


Veja fotos e vídeos sobre toda a montagem e utilização do Arduino Wifi Ethernet Control neste blog.

5)- Programa Arduino para o app. Arduino Wifi Ethernet Control.

//----------------------------------------------------------------------------------------------------------//

#include <SPI.h>

#include <String.h>

#include <Ethernet.h>



//-------------------------------------------------------------------

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//MAC padrão;

IPAddress ip(192, 168, 1, 50);//Define o endereco IPv4(trocar final);

IPAddress gateway(192, 168, 1, 1);      //Define o gateway

IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede

EthernetServer server(80); // Porta de serviço

//-------------------------------------------------------------------

int AA0 = A0;//Arduino analogica A0;

int AA1 = A1;//Arduino analogica A1;

int AA2 = A2;//Arduino analogica A2;

int AA3 = A3;//Arduino analogica A3;

int AA4 = A4;//Arduino analogica A4;

//-------------------------------------------------------------------

int D2 = 2;//Arduino digital D2;
int D3 = 3;//Arduino digital D3;
int D4 = 4;//Arduino digital D4;
int D5 = 5;//Arduino digital D5;
int D6 = 6;//Arduino digital D6;
//-------------------------------------------------------------------
String readString = String(30); // string para buscar dados de endereço
boolean statusA0 = false; // Variável para o status do led 
boolean statusA1 = false; // Variável para o status do led 
boolean statusA2 = false; // Variável para o status do led 
boolean statusA3 = false; // Variável para o status do led 
boolean statusA4 = false; // Variável para o status do led 
boolean statusD2 = false; // Variável para o status do led 
boolean statusD3 = false; // Variável para o status do led 
boolean statusD4 = false; // Variável para o status do led 
boolean statusD5 = false; // Variável para o status do led 
boolean statusD6 = false; // Variável para o status do led 
//--------------------------------------------------------------------
void setup(){
  // Inicia o Ethernet
  //Ethernet.begin(mac, ip);
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
//-----------------------Define pino como saída-----------------------
  pinMode(AA0, OUTPUT);
  pinMode(AA1, OUTPUT);
  pinMode(AA2, OUTPUT);
  pinMode(AA3, OUTPUT);
  pinMode(AA4, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);
  pinMode(D4, OUTPUT);
  pinMode(D5, OUTPUT);
  pinMode(D6, OUTPUT);
//---------------------------------------------------------------------
  // Inicia a comunicação Serial
  Serial.begin(9600); 
}

void loop(){
  // Criar uma conexão de cliente
  EthernetClient client = server.available();
  
  if (client) {
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        // ler caractere por caractere vindo do HTTP
        if (readString.length() < 30)
        {
          // armazena os caracteres para string
          readString += (c);
        }
       
        //se o pedido HTTP terminou
        if (c == '\n')
          {
//------------------------------------------------------------------
        if(readString.indexOf("a0high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(AA0, HIGH);//Arduino porta digital D2=5V;
            statusA0 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a0low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(AA0, LOW);//Arduino porta digital D2=0V;
            statusA0 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a1high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(AA1, HIGH);//Arduino porta digital D2=5V;
            statusA1 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a1low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(AA1, LOW);//Arduino porta digital D2=0V;
            statusA1 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a2high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(AA2, HIGH);//Arduino porta digital D2=5V;
            statusA2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a2low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(AA2, LOW);//Arduino porta digital D2=0V;
            statusA2 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a3high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(AA3, HIGH);//Arduino porta digital D2=5V;
            statusA3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a3low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(AA3, LOW);//Arduino porta digital D2=0V;
            statusA3 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a4high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(AA4, HIGH);//Arduino porta digital D2=5V;
            statusA4 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a4low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(AA4, LOW);//Arduino porta digital D2=0V;
            statusA4 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d2high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(D2, HIGH);//Arduino porta digital D2=5V;
            statusD2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d2low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(D2, LOW);//Arduino porta digital D2=0V;
            statusD2 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d3high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(D3, HIGH);//Arduino porta digital D2=5V;
            statusD3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d3low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(D3, LOW);//Arduino porta digital D2=0V;
            statusD3 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d4high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(D4, HIGH);//Arduino porta digital D2=5V;
            statusD4 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d4low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(D4, LOW);//Arduino porta digital D2=0V;
            statusD4 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d5high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(D5, HIGH);//Arduino porta digital D2=5V;
            statusD5 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d5low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(D5, LOW);//Arduino porta digital D2=0V;
            statusD5 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d6high")>=0)//Recebido do Android;
          {
            // O Led vai ser ligado
            digitalWrite(D6, HIGH);//Arduino porta digital D2=5V;
            statusD6 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d6low")>=0)//Recebido do Android;
          {
            // O Led vai ser desligado
            digitalWrite(D6, LOW);//Arduino porta digital D2=0V;
            statusD6 = false;
          } 
//------------------------------------------------------------------         
        // dados HTML de saída começando com cabeçalho padrão
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();      
        client.print("<font size='20'>");
//------------------------------------------------------------------  
 if (statusA0) {
          client.print("azeroon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("azerooff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------  
if (statusA1) {
          client.print("aoneon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("aoneoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
if (statusA2) {
          client.print("atwoon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("atwooff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------  
if (statusA3) {
          client.print("athreeon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("athreeoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
if (statusA4) {
          client.print("afouron");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("afouroff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------        
        if (statusD2) {
          client.print("dtwoon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dtwooff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        if (statusD3) {
          client.print("dthreeon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dthreeoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        if (statusD4) {
          client.print("dfouron");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dfouroff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        if (statusD5) {
          client.print("dfiveon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dfiveoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        if (statusD6) {
          client.print("dsixon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dsixoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        //limpa string para a próxima leitura
        readString="";
        
        // parar cliente
        client.stop();
        }
      }
    }
  }
}
//--------------------------------------------------------------------------------------------------------//

6)- Lista de materiais.

Arduino Uno r3.











Ethernet shield.













Roteador Wifi.













Protoboard com leds e jumpers.













Fonte de 9V DC /500mA.
















Bateria de 9V.
















Protoboard.











Jumpers.













Resistores de 220R ou 330R.














Módulo com 2 relés ou conforme necesidade.
















Leds.













Cabo J4 femea para bateria de 9V.












Cabo USB para conectar o PC ao Arduino.














Cabo de rede com RJ45.


2 comentários:

  1. Olá, parabéns pelo projeto, incrível. Gostaria de saber como você fez no código do android para receber os dados vindo do arduino. Qual o método? vai ajudar bastante esclarecer essa parte do seu projeto. Obrigado.

    ResponderExcluir
  2. Boa tarde meu amigo !!!
    Gostaria que vc me enviasse a biblioteca string.h

    ResponderExcluir