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:
Veja o vídeo no Youtube: https://www.youtube.com/watch?v=LwmMhB2g37A&list=PL70c1gJPe5BpwWXjImGlwLfYZnzh-Yoj-
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:
Veja o vídeo no Youtube: https://www.youtube.com/watch?v=LwmMhB2g37A&list=PL70c1gJPe5BpwWXjImGlwLfYZnzh-Yoj-
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:
Veja o vídeo no Youtube: https://www.youtube.com/watch?v=LwmMhB2g37A&list=PL70c1gJPe5BpwWXjImGlwLfYZnzh-Yoj-
4)- Como montar e configurar corretamente o Ethernet Shield com o Arduino:
O 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.
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 :
Na janela de prompt de comando, digite “ipconfig /all” (sem as aspas) e aperte ENTER :
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 :
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 outrodispositivo.
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!
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 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/
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();
}
}
}
}
}
//--------------------------------------------------------------------------------------------------------//
Arduino Uno r3.
Ethernet shield.
Roteador Wifi.
Protoboard com leds e jumpers.
Bateria de 9V.
Protoboard.
Jumpers.
Resistores de 220R ou 330R.
Módulo com 2 relés ou conforme necesidade.
Cabo J4 femea para bateria de 9V.
Cabo USB para conectar o PC ao Arduino.
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.
ResponderExcluirBoa tarde meu amigo !!!
ResponderExcluirGostaria que vc me enviasse a biblioteca string.h