Páginas

Arduino Camera IP Wifi Control


CAMERA AND CONTROL SWITCHES IN THE SAME APP.

Ethernet Wifi 3G Mode.




Google Play: https://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.Arduino_Camera_IP_Wifi_Control&hl=pt_BR

Camera IP Arduino Ethernet Wifi 3G Controle com  12 Switches Relays ON/OFF Botões Editáveis.

Camera IP Arduino Ethernet Controle  12 Switches Relays ON/OFF Botões Editáveis conectados ao Arduino Uno com Ethernet Shield.
Visualizar sua casa e ao mesmo tempo dispositivos(ON/OFF) sendo acionados através da Camera IP tudo isso no mesmo aplicativo conectados ao Arduino Uno com Ethernet Shield.

Este App.  controla até 12 dispositivos Switches ON/OFF com Camera IP, conectados ao Arduino Uno com Ethernet Shield, utilizando até 12 relés conectados à rede 110V/220V.

Automação residencial: Monitorar e visualizar(câmera) o acionamento dos dispositivos(switches ON/OFF) à distância.

Apresentação do aplicativo: Arduino Camera IP Wifi Control


CAMERA AND CONTROL SWITCHES IN THE SAME APP.

Ethernet Wifi 3G Mode.

SWITCHES MODE:
- 12 Switches Control ON/OFF Mode Relay 110V/220V;
- 12 Editable Devices Mode;
- 12 Status Arduino Ports.
- * 03  Pulse Switches Control ON/OFF Mode Relay 110V/220V, timer 2000ms, electric gate.
* Code Arduino Free!

BUTTON LOCK/UNLOCK:
Lock/Unlock Mode Editable Setting Names of the Devices.

BUTTON NET:
Editable Arduino IP: http://
Editable Camera  IP: http://

BUTTON SAVE:
Saves Editable Setting and Names of the Devices.

BUTTON MONITOR TO CAMERA:
Camera Settings;
IP Camera Wifi 3G
Net Connection;
Alarm Setting;
Control Panel;
Diagnosis Tool;
Login/Logout;
320 x 240 Mode;
640 x 480 Mode.

BUTTON PAN TILT MOVIMENTS MODE:
Left, Right, Up and Down Mode.

BUTTON ZOOM CAMERA MODE:
1 x and 2, 5 x Zoom Button camera vision mode.

**Open Electric Lock / Lectric Gate - Pulse Button:
Código para abertura de fechadura elétrica, 3 botões para pulso de 2 segundos;
Device  10,11 e 12, Arduino porta digital D6, D7 e D8.
Código Arduino Gratuito no blog.

Google Play: https://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.Arduino_Camera_IP_Wifi_Control&hl=pt_BR

Imagens do Aplicativo - Arduino Camera IP Wifi Control:






















Google Playhttps://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.Arduino_Camera_IP_Wifi_Control&hl=pt_BR

Veja também:

1- Programa código Arduino completo para o App.: Arduino Camera IP Wifi Control;
2- Esquema de ligações com galeria de fotos;
3- Descrição de funcionamento e instalações.
4- Como montar e configurar corretamente o Ethernet Shield com o Arduino e Camera IP;
5- Ligações com o Roteador e configurações dos numeros de IP e portas de entrada e saída;
6- Lista de Materiais.

Como funciona:

O aplicativo Arduino Camera IP Wifi Control comunica-se com o roteador a cabo, wifi ou 3G, utilizando rede interna porta:80 ou rede externa porta:8090 utilizando roteador com IP real ou host.
Então utilizaremos um numero de IP com duas portas distintas, uma porta para o controle dos switches e outra porta para o controle da câmera.

Vídeo do local(câmera) e comunicação de dados 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.

Controle com até  12 canais(porta analógica pinos: A0, A1, A2, A3, A4 e A5 e porta digital pinos: D2, D3, D5, D6, D7 e D8); Conectar ao módulo relé para acionamentos ON/OFF em rede elétrica 110V/220V.

Todos os Botões Switches são Editáveis, Programáveis e Salvos no Bando de Dados do Aplicativo.

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

Câmera para visualizar o local ou dispositivos sendo acionados;

Acionamento(liga e deslida) de lâmpadas, abatjours, luminarias, ventiladores, travas elétricas de portas, motores, bobinas solenóide, contatores, forno elétrico, forno microondas, TV, som, torradeira,  salas aparelhos eletrodomésticos, etc.

O Arduino também transmite de volta via cabo de rede, wifi ou 3G do roteador o Status das portas acionadas, de forma que qualquer modificação de acionamento dos relés possa ser visualizada através da câmera e alteração dos status dos dispositivos com os botões switches e portas do Arduino instantaneamente no smartphone Android;

Automação residencial: Monitorar e visualizar(câmera) Acionamento dos dispositivos(switches ON/OFF) à distância.




 Como montar e configurar corretamente o Ethernet Shield com o Arduino:


Neste primeiro instante faremos as instalações com o Arduino, Ethernet Shield e Roteador, A Câmera será configurada e instalada na próxima etapa.


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 DO ROTEADOR:

Neste projeto utilizamos como exemplo o Roteador D-Link DI-524 por se tratar de um roteador de fácil acesso às configurações e recomendado para quem está aprendendo a trabalhar com Aplicativos utilizando Arduino e Ethernet com Wi-fi ou 3G comunicação de dados, imagem ou vídeo; Isto não impede de se utilizar qualquer outro roteador compatível de sua preferencia.

- Ligar a placa de rede de seu computador à porta LAN do roteador;


- Windows, 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 Ethernet Shield : Endereço IP,  Máscara de sub-rede e Gateway Padrão :

IPConfig - Resultados

Estes 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:

Obs1.: Agora iremos entrar na configuração do roteador e alterar seu IP para 192.168.2.1, esta decisão evita futuros conflitos no caso de você utilizar outros roteadores; Normalmente de fábrica o roteador vem com IP 192.168.1.1 e as pessoas utilizam este IP mas se um dia você adquirir um outro roteador e ligar em cascata ou como repetidor de sinal poderá ocorrer conflito de repetição do mesmo número de IP, então já de inicio por precaução vamos alterar este número para IP: 192.168.2.1 

Obs2.: É claro que se você quiser manter seu numero de IP ou estiver utilizando outro roteador que tenha outro número como IP: 10.0.0.1 e muitos outros IP´s, então fique à vontade para utilizar qualquer IP apenas como exemplo vamos seguir as instruções deste blog para seguirmos no mesmo raciocinio ok.
 - Alterando o numero de IP do Roteador D-Link:

Configuração do Roteador D-Link DI-524.





Exemplo com IP do meu roteador IP:192.168.1.1


- Ligar um cabo de rede da saída LAN de seu roteador à entrada de rede de seu computador;
- Para conectar ao seu roteador digite em seu Navegador o numero de IP que consta em seu roteador, exemplo com o Roteador D-Link DI-524.

 Em meu caso estou com o nome de usuário default de fábrica: admin e estou sem uma senha então neste caso pode deixar o campo de senha em branco  e fazer o login;





- Veja nesta tela em Home a LAN com IP: 192.168.1.1 do seu roteador:






- Em Home e LAN altere o IP Address para 192.168.2.1 como segue abaixo:




-Agora pressione "Apply" e depois "Continue" para salvar suas configurações:


   - Veja nesta tela em Home e DHCP o range de IP: 192.168.2.100  à   IP:     192.168.2.199 , neste roteador temos 200 posições disponíveis para dispositivos:


Importante: Advanced e Virtual Server:

- Enable para habilitar uma inclusão;
- Name: Digite Arduino;
- IP Interno ou Private IP: 192.168.2.50
- Protocolo Type: TCP;
- Porta Interna ou Private Port: 80
- Porta Externa ou Public Port: 8090
- Shedule: Always;
- Disabled;
- Pressione Apply para salvar e depois Continue e veja novamente nesta página logo abaixo está sua inclusão do Arduino  192.168.2.1 TCP80/8090 Always. 



Obs.: Lembre-se para entrar em configurações de seu roteador vá para o navegador e digite 192.168.2.1, conforme alteramos acima.

Repita estas operações:

- Windows, 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 Ethernet Shield : Endereço IP,  Máscara de sub-rede e Gateway Padrão :



Estes 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;
 Troque por um endereço IP no mesmo formato mostrado acima na janela de prompt de comando, mas o último número deve ser diferente. Exemplo : o IP do nosso computador é 192.168.2.173, e no programa utilizaremos o IP 192.168.2.50. Antes de usar qualquer endereço da rede, certifique-se que o mesmo ainda não está em uso por nenhum outro equipamento, para evitar conflito este IP deve ser único.
Obs.: utilize um numero de IP que esteja dentro do range de seu roteador e que não esteja sendo utilizado por outro dispositivo.
Subnet - Mascara de sub-rede(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
Gateway(192,168,2,1) : Utilize o mesmo endereço do Gateway Padrão que você obteve na janela de prompt de comando: 192.168.2.1

Copie o código Arduino fornecido e vá  para o IDE Arduino e cole os dados no 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.
- Testes você pode usar o MAC padrão como descrito no código abaixo(byte mac[ ]).
- Copie o código Arduino completo fornecido neste blog e altere os parâmetros de configuração de rede com seus dados conforme descrito acima;




Atenção: Esta porta 80 citada acima deve ser mantida no programa Arduino sempre, mesmo quando for utilizar a comunicação pela porta externa, mantenha a mesma porta 80 no programa Arduino!

Neste primeiro instante faremos as instalações com o Arduino, Ethernet Shield e Roteador, A Câmera será configurada e instalada na próxima etapa.

IDE  Arduino Faça o Upload do 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;
- Ligue primeiramente o Roteador e aguarde 30 segundos para estabilização;
- Ligue o Wifi do Smartphone e conectar a mesma rede Wifi de seu Roteador  e o Arduino com suas fontes respectivas;
- Pressione o Botão Icone Cadeado(Aberto para desbloquear)  e pressione o Botão Teclado/Rede e no campo Arduino IP: digite seu numero de IP igual ao utilizado no código Arduino exemplo: http://192.168.2.50:80
- Pressione o Botão Icone Cadeado Aberto>Fechado para bloquear e salve suas configurações de IP na memória do banco de dados do smartphone pressionando o Botão Icone Discket;
- Pressione o Botão Atualizar para receber o Status atualizado dos botões de acionamentos e portas do Arduino;
- Veja abaixo como configurar seu roteador;
- Pronto! Agora é só pressionar os botões de acionamento para ligar e deslidar dispositivos;
- Para testar você pode utilizar leds nas portas do Arduino ou relés, veja esquema elétrico de exemplo neste blog;
- Para efetuar comandos elétricos(ligar/desligar lâmpadas 110V/220V) será necessário utilizar e relés, conforme descrição.

 - Observe que neste primeiro momento utilizamos um numero de IP que corresponde a uma conexão interna, funcionando prosseguiremos com o próximo nível que será utilizar um IP Verdadeiro -  Rede Externa e Câmera.
Com isso poderemos acionar dispositivos a qualquer distância e local com uma Câmera que irá fornecer vídeo em tempo real dos dispositivos ou locais a serem monitorados.

Resumo:

Para conexão rede interna 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.2.50:80 utilizado para conexão rede interna local.
1- Pressione o botão: ícone teclado;

 2- Pressione o botão: ícone cadeado para desbloquear e fazer a edição;
 3- Em Arduino IP: Insira seu numero de IP com a porta 80 neste formato mostrado abaixo:

  4- Pressione o botão: ícone cadeado para bloquear a edição;
  5- Pressione o botão: ícone disquete para salvar a edição no banco de dados do      aplicativo;
  6- Pronto para uso! Agora você já pode pressionar o botão: Ícone atualizar para receber os dados atualizados do Servidor Arduino via Wifi e fazer acionamentos dos 12 canais  switches ON/OFF.






Para conexão rede externa via cabo de rede, wifi ou 3G insira no aplicativo smartphone o IP com porta:8090 e pronto!
Exemplo:http://178.161.324.101:8090. Utilizado para conexão rede externa.

Entre no site: www.meuip.com.br ou no navegador Google digite: Qual é o meu ip?


Desta forma você estará utilizando seu numero de IP Real e pronto para utilizar seu App. como conexão rede externa  e  acesso à qualquer distância ou local, bastando apenas um numero de IP.
Agora iremos trabalhar com porta externa 8090.

Veja como exemplo na figura abaixo como é simples:



Consultar lista de IP´s relacionados ao nosso Roteador D-Link DI-524:
Entre em Home DHCP:
Vamos entrar em configurações do roteador digite em seu navegador o numero de IP de seu roteador, nosso caso exemplo IP: 192.168.2.1 e veja a lista abaixo com Name e IP Address:

- ASP-PC: Nome do meu computador IP: 192.168.2.173 cabo RJ45; 

- Android: Nome do meu Smartphone com o aplicativo IP Camera and Ethernet Control IP: 192.168.2.182;

- IP Camera(Wifi) IP: 192.168.2.188 conexão Wifi;

- IP Camera(Cable) IP: 192.168.2.189 conexão cabo RJ45;

- Arduino com Ethernet Shield está com IP:192.168.2.1.50 via cabo RJ45 já configurado anteriormente mas não aparece nesta lista, somente na página do roteador em  Advanced Virtual Server como já vimos;

Então estes são os numeros de IP´s que estão conectados ao nosso roteador, como exemplo veja a figura abaixo:




Criando um Host:

Importante: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.


Veja a sequência de imagens images abaixo:

Pesquise como dlinkddns.
Click em  creat an account:


Preencha os campos utilizando o Serial Number e MAC do seu Roteador D-Link:

Veja seu Host Name1234.dlinkddns.com:


Veja no exemplo como é fácil, seu Host mantém atualizado todas as vezes que ocorre uma mudança de IP. 

Host para controle do Arduino: MyName.dlinkddns.com:8090

Host para controle da Câmera: MyName.dlinkddns.com:81



- Aplicativo: Arduino Camera IP Wifi Control  - controla ON/OFF até 12 Dispositivos ligados através de relés à rede elétrica 110/220V e mais imagem da Câmera pode ser ativada simultaneamente;
- Arduino Uno R3 montado com o Ethernet Shield deverá ser ligado à LAN do roteador;
- As saídas do Arduino deverão ser ligadas aos módulos de relés para acionamento de dispositivos;
- As saídas dos relés deverão ligar ou desligar ON/OFF os dispositivos ligados a rede elétrica.
- O APP. é capaz de conectar-se à uma Câmera IP e Monitorar imagem ou vídeo em tempo real de seus dispositivos sendo acionados; Veja figuras abaixo:


- Veja também o esquema elétrico completo com lista de materiais.





Câmera IP:
Capturando Imagem ou Vídeo em tempo Real:






Consultar lista de IP´s relacionados ao nosso Roteador D-Link DI-524:
Entre em Home DHCP:
Vamos entrar em configurações do roteador digite em seu navegador o numero de IP de seu roteador, nosso caso exemplo IP: 192.168.2.1 e veja a lista abaixo com Name e IP Address:

- ASP-PC: Nome do meu computador IP: 192.168.2.173 cabo RJ45; 

- Android: Nome do meu Smartphone com o aplicativo IP Camera and Ethernet Control IP: 192.168.2.182;

- IP Camera(Wifi) IP: 192.168.2.188 conexão Wifi;

- IP Camera(Cable) IP: 192.168.2.189 conexão cabo RJ45;

- Arduino com Ethernet Shield está com IP:192.168.2.1.50 via cabo RJ45 já configurado anteriormente mas não aparece nesta lista, somente na página do roteador em  Advanced Virtual Server como já vimos;

Então estes são os numeros de IP´s que estão conectados ao nosso roteador, como exemplo veja a figura abaixo:




 Conexão Rede Interna Local com roteador via cabo RJ45: 
Aplicativo - entre com o numero de IP  em Camera IP: veja abaixo:



Consulte o manual da câmera a porta utilizada:

Note que para a câmera utilizamos o numero de IP com porta 81, pois a câmera que utilizei como exemplo possui uma porta 81 informada no manual ou folha de dados.
Então quando da compra da câmera este numero da porta(81) será informado no manual.

Neste manual em Port Settings, item 8: Informa que a porta alocada pela câmera é 81.
Este numero da porta pode variar dependendo do fabricante e modelo da câmera, consulte o manual de sua câmera.
Existem outras formas de saber a porta de sua câmera, quando você adquire uma câmera mesmo esta que estou utilizando neste projeto que foi comprada no Ebay, Aliexpress ou mercado Livre todas vem com manual e CD de instalação.
  
Então com CD de Instalação fica simples:
Instale o programa do CD e veja abaixo o manual de minha câmera utilizada neste projeto:



Resumo:

 Manual de Instruções da câmera;

1-           Instalar este executável;

2-                      Abrir este executável com duplo click;

3-               Abrir a tela de configurações da câmera, veja figura abaixo:



Net Config veja o numero de IP da câmera, Port, User e Password:
Open Device:
Open Device abre o Navegador com o numero de IP e porta da câmera;
Login: Neste exemplo User: admin e Password: admin;
Utilizando um computador click em Login:

Para sair click em Logout, se desejar veja também todas as configurações e opções da câmera.

Obs.: Todas estas opções também estão disponíveis em nosso aplicativo  IP Camera and Ethernet Control;
Apenas entramos com o computador da primeira vez que a câmera foi acionada para demonstrar e pesquisarmos o numero de IP: 192.168.2.188 e porta 81;

Veja em nosso aplicativo: Arduino Camera IP Wifi Control

Agora click no botão: Ícone Monitor:



Click em Net Connection e veja as configurações de rede da câmera;
Se desejar arraste a imagem ou click no botão: Lupa+ ou Lupa- para visualizar suas operações:

Na barra azul do lado esquerdo encontre a seta voltar e click em Logout, utilize a opção Login Mobile:

Login:



Login Mobile:

Vídeo:



Zoon Mode - lupa+ lupa-:
BUTTON ZOOM CAMERA MODE:
1 x and 2, 5 x Zoom Button camera vision mode.
Vídeo ou Imagem:
320 x 240 Mode;
640 x 480 Mode.
Veja também movimentos da câmera em todas as direções com botões: Esquerda, direita, para cima e para baixo:



Conexão Rede Externa muito simples, basta editar o Camera IP: conforme explicado anteriormente utilizando seu numero de IP Real, aquele que pesquisamos no site MeuIp, veja abaixo:





Opcional - Configurações da IP Câmera Wifi - Sem Cabo:

- Conexão Wifi sem fio entre o roteador e câmera;

- Câmera conexão via Wifi sem fio - Configurações:

Entre na tela principal do seu roteador e selecione Home  e Wireless:

Obs.: Lembre-se para entrar em configurações de seu roteador vá para o navegador e digite 192.168.2.1, conforme alteramos acima.

- SSID: Digite um nome da sua rede Wifi que aparecerá quando você for se conectar com o celular ou tablet;
- Channel: 6;
- Security: Escolha WPA-PSK como nível de segurança que aceita dados móveis e vídeos;
- Encryption: TKIP;
- Preshare Key: Escolher uma senha alfanumérica, com letras e números; Esta senha será exigida apenas na primeira conexão no modo Wifi, sem fio.




Veja logo abaixo que sua câmera está conectada:
 - Com Cabo IP: 192.168.2.189;
 - Modo Wifi Sem Cabo IP: 192.168.2.188;

IP Câmera Wifi - Sem Cabo:

Obs.: Entrar com estes dados de IP e porta no Aplicativo, não se esqueça de digitar: http://192.168.2.188:81 para acesso rede interna;
http://178.161.324.101:81 para acesso rede externa;

Entrar em configurações do roteador, digite senha e Login:

Network Settings, veja suas configurações:

Wireless Connection:
Faça todas as configurações conforme abaixo e não se esqueça da senha que é a mesma senha que você utilizou em seu roteador ;
Click em Search wifi router para encontrar seu roteador;
Save.



Verifique que seu roteador Wifi foi encontrado;
Digite a senha da camera Wifi de seu roteador;
Selecione Encrypt WPA2-PSK e Type AES;
Refresh e Save: Aguarde enquanto os dados são recuperados e salvos, não desliggue o sistema neste momento.
Veja ao final o Status: Connected e pronto!
Agora é só retirar o cabo e utilizar a câmera sem fio!


Entre novamento nas configurações do roteador e veja como ficou sua IP Câmera (Wifi) - IP: 192.168.2.188.




Resumo:
Estamos demonstrando o funcionamento opcional da câmera IP que possui Wifi então podemos usar também este recurso de trabalhar com uma conexão Wifi sem fio entre o roteador e câmera, mas se você possuir uma câmera IP sem Wifi pode ser utilizada normalmente com cabo como já descrevemos acima.


Conexão entre Roteador e IP Câmera Wifi (sem cabo) veja figura abaixo:
















Podemos concluir nosso projeto onde demonstramos todas as situações de funcionamento:
- Aplicativo: Arduino Camera IP Wifi Control;
- Arduino/Ethernet Shield: Montagem, configurações, IP rede interna ou IP rede externa, programa Arduino.ino;
- Módulo Relé/Shield: Acionamento dos Devices(12 Switches ON/OFF);
- Câmera IP: Configurações de uso com cabo e Wifi(sem cabo), IP rede interna ou IP rede externa;
- Roteador D-Link modelo DI-524: Configurações necessárias de IP com porta interna e externa, modo cabo, Wifi, senhas, verificações de dispositivos, etc;
- Esquema Elétrico: Ligações de todos os dispositivos envolvidos no projeto com imagens e vídeos;
- Lista de Materiais: Descrição com imagens;


Esquema Elétrico - Ligações:


Esquema 1:


Esquema 2:


Esquema didático para conferência dos acionamentos, indicados por 12 Leds como dispositivos;

Obs.: Veja que ligamos o Catodo(K) do led diretamente nas portas Arduino como A0, A1, A2... 
 Este App. faz o acionamento colocando "0V" nas portas como saída, assim facilita o uso dos módulos com relés ou Relé Shield;

Obs.: Utilize o Ethernet Shield montado sobre o Arduino Uno R3:





Veja a figura abaixo como Ethernet Shield mondado sobre o Arduino:


Esquema 3:


O módulo relé possui uma lógica invertida quando desejamos acionar ou energizar a bobina no relé precisamos colocar nível "0V' na entrada do módulo relé(lógica invertida) com isso um contato normalmente aberto é fechado de forma correta.



Exemplo ligação com uma Lâmpada  em rede de 110V:


Esquema 4:


Repita estas ligações para os 12 Dispositivos a serem acionados através dos Relés(IN1-IN2-IN3-IN4-IN5-IN6-IN7-IN8-IN9-IN10-IN11-IN12).
Pinagem de saída Arduino:A0-A1-A2-A3-A4-A5-D2-D3-D5-D6-D7-D8.

Atenção para o risco de choque elétrico, utilize cabos dimensionados pela capacidade de corrente;
Utilize sempre Disjuntores ou fusíveis para cada  Dispositivo a ser acionado.

Programa Arduino - Arduino Camera IP Wifi Control.ino:



/*
-------------------------------------------------------------------------------
APP. - Arduino Camera IP Wifi Control.

-------CAMERA AND CONTROLLED SWITCHES IN THE SAME APP.-------

SWITCHES MODE:
- 12 Switches Control ON/OFF Mode Relay 110V/220V;
- 12 Editable DeviceS Mode;
- 12 Status Arduino Ports.

BUTTON LOCK/UNLOCK:
Lock/Unlock Mode Editable Setting Names of the Devices.

BUTTON NET:
Editable Arduino IP: http://
Editable Camera  IP: http://

BUTTON SAVE:
Saves Editable Setting and Names of the Devices.

BUTTON MONITOR TO CAMERA:
Camera Settings;
IP Camera Wifi 3G
Net Connection;
Alarm Setting;
Control Panel;
Diagnosis Tool;
Login/Logout;
320 x 240 Mode;
640 x 480 Mode.

BUTTON PAN TILT MOVIMENTS MODE:
Left, Right, Up and Down Mode.

BUTTON ZOOM CAMERA MODE:
1 x and 2, 5 x Zoom Button camera vision mode.

ARDUINO UNO R3 - INPUT/OUTPUT PINS:

A0 - Device 1;
A1 - Device 2;
A2 - Device 3;
A3 - Device 4;
A4 - Device 5;
A5 - Device 6;
D0 - N/C;
D1 - N/C;
D2 - Device 7;
D3 - Device 8;
D4 - Ethernet Shield SD Card;
D5 - Device 9;
D6 - Device 10;
D7 - Device 11;
D8 - Device 12;
D9 - N/C;
D10 -Ethernet Shield Controller; 
D11 -Ethernet Shield MOSI; 
D12 -Ethernet Shield MISO;  
D13 -Ethernet Shield SCK;  
--------------------------------------------------------------------
*/

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
//-------------------------------------------------------------------
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//MAC padrão;
IPAddress ip(192, 168, 2, 50);//Define o endereco IPv4(trocar final);
IPAddress gateway(192, 168, 2, 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 AA5 = A5;//Arduino analogica A5;
//-------------------------------------------------------------------
int D2 = 2;//Arduino digital D2;
int D3 = 3;//Arduino digital D3;
int D5 = 5;//Arduino digital D5;
int D6 = 6;//Arduino digital D6;
int D7 = 7;//Arduino digital D7;
int D8 = 8;//Arduino digital D8;
//-------------------------------------------------------------------
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 statusA5 = 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 statusD5 = false; // Variável para o status do led 
boolean statusD6 = false; // Variável para o status do led 
boolean statusD7 = false; // Variável para o status do led 
boolean statusD8 = 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(AA5, OUTPUT);
  
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);
  pinMode(D5, OUTPUT);
  pinMode(D6, OUTPUT);
  pinMode(D7, OUTPUT);
  pinMode(D8, OUTPUT);
  
 //Devido a lógida invertida de acionamento dos relés,
 //devemos iniciar os canais AA0, AA1, AA2...D8; 
 //com nível alto 5V(HIGH) como segue abaixo;

 //Módulo relé atua com lógica invertida:
 //Entrada do módulo relé em nível lógico "0V":Bobina Energizada;
 //Contato N/A(N/O)>>Fecha contato;
 //Entrada do módulo relé em nível lógico "5V":Bobina Desernegizada;
 //Contato N/A(N/O)>>Abre contato;

 digitalWrite(AA0,HIGH);
 digitalWrite(AA1,HIGH);
 digitalWrite(AA2,HIGH);
 digitalWrite(AA3,HIGH);
 digitalWrite(AA4,HIGH);
 digitalWrite(AA5,HIGH);

 digitalWrite(D2,HIGH);
 digitalWrite(D3,HIGH);
 digitalWrite(D5,HIGH);
 digitalWrite(D6,HIGH);
 digitalWrite(D7,HIGH);
 digitalWrite(D8,HIGH);
//---------------------------------------------------------------------
  // 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;
          {
           // Turn ON the Relay.
            digitalWrite(AA0, LOW);//Arduino porta digital A0=5V;
            statusA0 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a0low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA0, HIGH);//Arduino porta digital A0=0V;
            statusA0 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a1high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA1, LOW);//Arduino porta digital A1=5V;
            statusA1 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a1low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA1, HIGH);//Arduino porta digital A1=0V;
            statusA1 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a2high")>=0)//Recebido do Android;
          {
            // Turn ON the Relay.
            digitalWrite(AA2, LOW);//Arduino porta digital A2=5V;
            statusA2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a2low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA2, HIGH);//Arduino porta digital A2=0V;
            statusA2 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a3high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA3, LOW);//Arduino porta digital A3=5V;
            statusA3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a3low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA3, HIGH);//Arduino porta digital A3=0V;
            statusA3 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a4high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA4, LOW);//Arduino porta digital A4=5V;
            statusA4 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a4low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA4, HIGH);//Arduino porta digital A4=0V;
            statusA4 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a5high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA5, LOW);//Arduino porta digital A5=5V;
            statusA5 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a5low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA5, HIGH);//Arduino porta digital A5=0V;
            statusA5 = false;
          }          
//------------------------------------------------------------------        
          if(readString.indexOf("d2high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D2, LOW);//Arduino porta digital D2=5V;
            statusD2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d2low")>=0)//Recebido do Android;
          {
            // Turn OFF the Relay.
            digitalWrite(D2, HIGH);//Arduino porta digital D2=0V;
            statusD2 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d3high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D3, LOW);//Arduino porta digital D3=5V;
            statusD3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d3low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D3, HIGH);//Arduino porta digital D3=0V;
            statusD3 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d5high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D5, LOW);//Arduino porta digital D5=5V;
            statusD5 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d5low")>=0)//Recebido do Android;
          {
            // Turn OFF the Relay.
            digitalWrite(D5, HIGH);//Arduino porta digital D5=0V;
            statusD5 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d6high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D6, LOW);//Arduino porta digital D6=5V;
            statusD6 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d6low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D6, HIGH);//Arduino porta digital D6=0V;
            statusD6 = false;
          }
//------------------------------------------------------------------        
          if(readString.indexOf("d7high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D7, LOW);//Arduino porta digital D7=5V;
            statusD7 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d7low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D7, HIGH);//Arduino porta digital D7=0V;
            statusD7 = false;
          } 
//------------------------------------------------------------------        
          if(readString.indexOf("d8high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D8, LOW);//Arduino porta digital D8=5V;
            statusD8 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d8low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D8, HIGH);//Arduino porta digital D8=0V;
            statusD8 = 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 (statusA5) {
          client.print("afiveon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("afiveoff");//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 (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;
        }
//------------------------------------------------------------------ 
        if (statusD7) {
          client.print("dsevenon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dsevenoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------ 
        if (statusD8) {
          client.print("deighton");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("deightoff");//Ethernet envia string para Android;
          //String apenas letras;
        }        
//------------------------------------------------------------------ 
        //limpa string para a próxima leitura
        readString="";
        
        // parar cliente
        client.stop();
        }
      }
    }
  }
}






Programa Arduino - Arduino Camera IP Wifi Control.ino.
Código acionamento de fechadura elétrica, intalado em Arduino pinos digitais: D6, D7e D8.
Divice 10,11 e 12 tempo do pulso em 2 segundos, relé contato temporizado em 2000ms. 

/*
-------------------------------------------------------------------------------
APP. - Arduino Camera IP Wifi Control.

-------CAMERA AND CONTROLLED SWITCHES IN THE SAME APP.-------

SWITCHES MODE:
- 12 Switches Control ON/OFF Mode Relay 110V/220V;
- 12 Editable DeviceS Mode;
- 12 Status Arduino Ports.

BUTTON LOCK/UNLOCK:
Lock/Unlock Mode Editable Setting Names of the Devices.

BUTTON NET:
Editable Arduino IP: http://
Editable Camera  IP: http://

BUTTON SAVE:
Saves Editable Setting and Names of the Devices.

BUTTON MONITOR TO CAMERA:
Camera Settings;
IP Camera Wifi 3G
Net Connection;
Alarm Setting;
Control Panel;
Diagnosis Tool;
Login/Logout;
320 x 240 Mode;
640 x 480 Mode.

BUTTON PAN TILT MOVIMENTS MODE:
Left, Right, Up and Down Mode.

BUTTON ZOOM CAMERA MODE:
1 x and 2, 5 x Zoom Button camera vision mode.

ARDUINO UNO R3 - INPUT/OUTPUT PINS:

A0 - Device 1;
A1 - Device 2;
A2 - Device 3;
A3 - Device 4;
A4 - Device 5;
A5 - Device 6;
D0 - N/C;
D1 - N/C;
D2 - Device 7;
D3 - Device 8;
D4 - Ethernet Shield SD Card;
D5 - Device 9;
D6 - Device 10;
D7 - Device 11;
D8 - Device 12;
D9 - N/C;
D10 -Ethernet Shield Controller;
D11 -Ethernet Shield MOSI;
D12 -Ethernet Shield MISO;
D13 -Ethernet Shield SCK;
--------------------------------------------------------------------
*/

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
//-------------------------------------------------------------------
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//MAC padrão;
IPAddress ip(192, 168, 2, 50);//Define o endereco IPv4(trocar final);
IPAddress gateway(192, 168, 2, 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 AA5 = A5;//Arduino analogica A5;
//-------------------------------------------------------------------
int D2 = 2;//Arduino digital D2;
int D3 = 3;//Arduino digital D3;
int D5 = 5;//Arduino digital D5;
int D6 = 6;//Arduino digital D6;
int D7 = 7;//Arduino digital D7;
int D8 = 8;//Arduino digital D8;
//------------------------------------------------------------------
int contD6=0;
int contD7=0;
int contD8=0;
//-------------------------------------------------------------------
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 statusA5 = 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 statusD5 = false; // Variável para o status do led
boolean statusD6 = false; // Variável para o status do led
boolean statusD7 = false; // Variável para o status do led
boolean statusD8 = 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(AA5, OUTPUT);
 
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);
  pinMode(D5, OUTPUT);
  pinMode(D6, OUTPUT);
  pinMode(D7, OUTPUT);
  pinMode(D8, OUTPUT);
 
 //Devido a lógida invertida de acionamento dos relés,
 //devemos iniciar os canais AA0, AA1, AA2...D8;
 //com nível alto 5V(HIGH) como segue abaixo;

 //Módulo relé atua com lógica invertida:
 //Entrada do módulo relé em nível lógico "0V":Bobina Energizada;
 //Contato N/A(N/O)>>Fecha contato;
 //Entrada do módulo relé em nível lógico "5V":Bobina Desernegizada;
 //Contato N/A(N/O)>>Abre contato;

 digitalWrite(AA0,HIGH);
 digitalWrite(AA1,HIGH);
 digitalWrite(AA2,HIGH);
 digitalWrite(AA3,HIGH);
 digitalWrite(AA4,HIGH);
 digitalWrite(AA5,HIGH);

 digitalWrite(D2,HIGH);
 digitalWrite(D3,HIGH);
 digitalWrite(D5,HIGH);
 digitalWrite(D6,HIGH);
 digitalWrite(D7,HIGH);
 digitalWrite(D8,HIGH);
//---------------------------------------------------------------------
  // Inicia a comunicação Serial
  Serial.begin(9600);  

}//Setup


void loop(){
 
//-----------------------------
contD6++;//Incrementa contagem;
contD7++;//Incrementa contagem;
contD8++;//Incrementa contagem;
//-----------------------------
 
 if(contD6 >= 200)// Tempo = 10ms x 200 = 2 segundos, Device10;
{
 // Turn OFF the Relay.
 digitalWrite(D6, HIGH);
 //client.print("dsixoff");//Ethernet envia string para Android;
 statusD6 = false;
 contD6=0;
}
//----------------------
 if(contD7 >= 200)// Tempo = 10ms x 200 = 2 segundos, Device11;
{
  //Turn OFF the Relay.
 digitalWrite(D7, HIGH);
 //client.print("dsevenoff");//Ethernet envia string para Android;
 statusD7 = false;
 contD7=0;
}
//----------------------
 if(contD8 >= 200)// Tempo = 10ms x 200 = 2 segundos, Device12;
{
 // Turn OFF the Relay.
 digitalWrite(D8, HIGH);
 //client.print("deightoff");//Ethernet envia string para Android;
 statusD8 = false;
 contD8=0;
}
//----------------------
 
  // 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;
          {
           // Turn ON the Relay.
            digitalWrite(AA0, LOW);//Arduino porta digital A0=5V;
            statusA0 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a0low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA0, HIGH);//Arduino porta digital A0=0V;
            statusA0 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a1high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA1, LOW);//Arduino porta digital A1=5V;
            statusA1 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a1low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA1, HIGH);//Arduino porta digital A1=0V;
            statusA1 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a2high")>=0)//Recebido do Android;
          {
            // Turn ON the Relay.
            digitalWrite(AA2, LOW);//Arduino porta digital A2=5V;
            statusA2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a2low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA2, HIGH);//Arduino porta digital A2=0V;
            statusA2 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a3high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA3, LOW);//Arduino porta digital A3=5V;
            statusA3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a3low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA3, HIGH);//Arduino porta digital A3=0V;
            statusA3 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a4high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA4, LOW);//Arduino porta digital A4=5V;
            statusA4 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a4low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA4, HIGH);//Arduino porta digital A4=0V;
            statusA4 = false;
          }
//------------------------------------------------------------------
       if(readString.indexOf("a5high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(AA5, LOW);//Arduino porta digital A5=5V;
            statusA5 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("a5low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(AA5, HIGH);//Arduino porta digital A5=0V;
            statusA5 = false;
          }        
//------------------------------------------------------------------      
          if(readString.indexOf("d2high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D2, LOW);//Arduino porta digital D2=5V;
            statusD2 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d2low")>=0)//Recebido do Android;
          {
            // Turn OFF the Relay.
            digitalWrite(D2, HIGH);//Arduino porta digital D2=0V;
            statusD2 = false;
          }
//------------------------------------------------------------------      
          if(readString.indexOf("d3high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D3, LOW);//Arduino porta digital D3=5V;
            statusD3 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d3low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D3, HIGH);//Arduino porta digital D3=0V;
            statusD3 = false;
          }
//------------------------------------------------------------------      
          if(readString.indexOf("d5high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D5, LOW);//Arduino porta digital D5=5V;
            statusD5 = true;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d5low")>=0)//Recebido do Android;
          {
            // Turn OFF the Relay.
            digitalWrite(D5, HIGH);//Arduino porta digital D5=0V;
            statusD5 = false;
          }
//------------------------------------------------------------------      
          if(readString.indexOf("d6high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D6, LOW);//Arduino porta digital D6=5V;
            statusD6 = true;
            contD6=0;//Zera a contagem de 2 segundos;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d6low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D6, HIGH);//Arduino porta digital D6=0V;
            statusD6 = false;
          }
//------------------------------------------------------------------      
          if(readString.indexOf("d7high")>=0)//Recebido do Android;
          {
           // Turn ON the Relay.
            digitalWrite(D7, LOW);//Arduino porta digital D7=5V;
            statusD7 = true;
            contD7=0;//Zera a contagem de 2 segundos;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d7low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D7, HIGH);//Arduino porta digital D7=0V;
            statusD7 = false;
          }
//------------------------------------------------------------------      
          if(readString.indexOf("d8high")>=0)//Recebido do Android;
          {
          // Turn ON the Relay.
            digitalWrite(D8, LOW);//Arduino porta digital D8=5V;
            statusD8 = true;
            contD8=0;//Zera a contagem de 2 segundos;
          }
          // Se a string possui o texto L=Desligar
          if(readString.indexOf("d8low")>=0)//Recebido do Android;
          {
           // Turn OFF the Relay.
            digitalWrite(D8, HIGH);//Arduino porta digital D8=0V;
            statusD8 = 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 (statusA5) {
          client.print("afiveon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("afiveoff");//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 (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;
        }
//------------------------------------------------------------------
        if (statusD7) {
          client.print("dsevenon");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("dsevenoff");//Ethernet envia string para Android;
          //String apenas letras;
        }
//------------------------------------------------------------------
        if (statusD8) {
          client.print("deighton");//Ethernet envia para Android;
          //String apenas letras;
        } else {
          client.print("deightoff");//Ethernet envia string para Android;
          //String apenas letras;
        }      


        //limpa string para a próxima leitura
        readString="";
       
        // parar cliente
        client.stop();
        }
      }
    }
  }


 
delay(10);//Base de tempo para contagem de D6, D7 e D8;
 
}


Lista de Materiais:



Arduino Uno R3:


Ethernet Shield:


Módulo de relé ou relé shield com até 12 relés:


Roteador D- Link DI-524 ou qualquer outro compatível co fonte de alimentação:




Câmera IP Wifi Pan/Tilt ou fixa com fonte de alimentação:


1ª- Opção: Fonte de alimentação para o Arduino 5V/2A com saída USB:
Obs1.: Corrente de 2A devido à alimentação do Arduino/Ethernet Shield e Módulo de relés.
Obs2.: Aquecimento reduzido pois 5V da fonte já está na tensão de operação do sistema todo.


2ª- Opção:Fonte de alimentação para o Arduino 9V/2A com saída P4:
Obs1.: Corrente de 2A devido à alimentação do Arduino/Ethernet Shield e Módulo de relés.
Obs2.: Esta opção gera um Aquecimento maior na placa Arduino devido à tenão da fonte de 9V passar por um regulador de tensão de 5V existente na placa Arduino  para alimentar todo o sistema.



Protoboard para montagens:




Leds para montagem didática e verificação de funcionamento:


Resistores para ligar aos leds e limitar a corrente em 20mA:






Fios Jumpers - Macho/Macho, Fêmea/Fêmea e Macho/Fêmea:




Cabo USB - tipo A/tipo B para ligação entre Arduino e PC:



1x Cabo de rede RJ45 para ligação entre Roteador e Ethernet Shield;
1x Cabo de rede RJ45 para ligação entre Roteador e Câmera IP.




6 comentários:

  1. Olá amigo!! Comprei seu app e fiz minha instalação com os 12 canais. Estão ligado todos corretamente e funcionando perfeitamente! Consegui ligar ele via internet local. Não consegui ligar via internet móvel. Pois não sei o que será, vc poderia mim ajudar. Nessa parte? Outra coisa também. Comprei uma câmera IP da marca JORTAN uma branca. Sendo que ela não tem onde mostrar a porta pra que eu configure no app, já no app da câmera ele funciona perfeitamente. Só está faltando isso pra que meu projeto está completo ☺️ ficarei grato se mim ajudar nesse sonho que eu tenho!!! 🙏🤝 Tenho whatsapp se ficar melhor pra você! 81987415816 desde já obrigado!

    ResponderExcluir
  2. Olá....preciso entrar em contato contigo

    ResponderExcluir
    Respostas
    1. tenho algumas dúvidas....gostaria de ver se você me solucionava algumas. Obrigado. whatsapp(17)99719-1278 Marcelo.

      Excluir
  3. Oi, assistir o vídeo no YouTube Achei bem interessante, já conhecia o Arduino, comprei uma vez mas não consegui instalar. Vendo seu vídeo Achei bem simples só tenho uma dúvida Pelo que eu entendi as câmeras são ligadas nas saídas, sendo assim para que que serve a câmera IP?

    ResponderExcluir
  4. Com esse app consigo colocar assistente de voz como o Google home ou Google assistente aguardo Att Carlos

    ResponderExcluir
  5. boa noite sergio ? mudei meu celular e nao to conseguindo fazer o download do app arduino camera ip wifi control ! nao esta mais na play store ! o que eu faço pra recupera no meu novo dispositivo?

    ResponderExcluir