
Automação com Arduino, Ethernet, RTC, LCD e DHT11
Seguindo com os projetos de automação com a AutomationShield 2.0, hoje vamos publicar um projeto com Ethernet W5100, RTC DS130, LCD I2C, DHT11, aplicativo Android e uma página HTML para configuração, agendamento e acionamento da placa.
Página html para configuração, agendamento, acionamento e leitura de temperatura da placa.
Aplicativo Android
Já publicamos outros projetos com WS5100. O projeto não é compatível com shields baseados no chip ENC28J60, mas diferentes versões do W5100 podem ser usadas.
Mini Shield
Shield para Arduino
Os dois shields são 100% compatíveis com o projeto e código fonte, vamos ver em detalhes as conexões com o Automation Shield.
Lista de componentes
1 - Placa Automation Shield 2.0, a venda em nossa loja virtual.
1 - Arduino NANO V3.0
1 - RTC DS1307.
1 - LCD 1602 com interface serial I2C.
1 - Shield de Ethernet baseado no chip W5100.
10 - Fios com conectores MODU para conexão do módulo.
6- Barras de terminais para conexão do Ethernet com o Arduino Nano.
1 - Fita RGB
1 - Sensor de temperatura e umidade DH11.
1 - Fonte 12V x 3A.
Conexões do projeto com mini Shield
A imagem abaixo mostra como deve ser a conexão ICSP entre e Shield e Arduino Nano. A conexão deve ser feita de forma que os shield se conecte conforme imagem abaixo. Além da conexão ICSP é necessário jumpear os pinos D13, D12, D11 e D10.
Conexões das Saídas
Código Fonte
O código fonte do projeto é 100% compatível com os dois Shields de Ethernet baseados no chip w5100 (Mini Shield e Arduino Uno).
Página Html
A página HTML deve ser aberta no browser e pode ser executada a partir de computadores ou dispositivos Android.
No cabeçalho é apresentado o horário, temperatura, umidade e Modo. Apenas no modo Automático(Agendado) é permitido o acionamento direto das saídas. A página atualiza a cada 5 segundos o horário e estado das saídas da placa.
A página possui uma funcionalidade para alteração do horário gravado no DS1307
Permite alterar os horários de agendamento das saídas de relés
E no modo manual, os botões ficam habilitados para acionar as saídas diretamente
Na página é configurado o IP de acesso a placa, se o IP da placa for alterado é necessário alterar a variável ipArduino com o novo IP de acesso.
Código fonte Arduino.
O código fonte do Arduino usa a mesma base do projeto do Aquadroid. Abaixo destaco três itens importantes, o primeiro é a configuração do endereço I2C do LCD, o código fonte está configurado com o endereço "0x3F", ele é o endereço default dos LCDs 1602, alguns LCDs 4004 utilizam o endereço 0x27, é necessário identificar o endereço correto para funcionamento do LCD, no caso de problemas, utilizem o I2cScanner. O segundo item é o IP, se for necessário trocar, altere o conteúdo da variável byte ip[] com o novo IP.
O programa possui a variável EEPROMComandos que está atribuída com o valor false. Alterando para true ela irá gravar na EEPROM os últimos comandos recebidos, dessa forma, se ocorrer uma queda de energia e a placa reiniciar, ela será restabelecida com os últimos comandos enviados pelo usuário. A EEPROM do Arduino tem uma vida útil de 100.000 gravações, manter na EEPROM todos os comandos recebidos irá inutilizá-la, sendo assim, verifique qual será a quantidade de comandos enviados diariamente para determinar a vida útil. As variáveis de horário de agendamento e modo são gravadas diretamente na EEPROM e não devem ser removidas.
Vamos ver um vídeo do projeto.
Configurando o acesso externo (Pela Internet).
O primeiro passo é retestar a conexão antes de iniciar as configurações, se ocorrer algum problema será mais difícil de identificar a causa.
Teste diretamente o retorno da placa, digite no browser o ip http://192.168.0.202 da placa. A resposta da placa deve ser apresentada conforme imagem abaixo.
Se o retorno for apresentado com sucesso, podemos ir para o próximo passo de configuração do roteador. Não tente configurar o acesso externo antes de conectar com sucesso na rede local.
Configurando o roteador
Será usado um roteador DPC3925, ele é um dos modelos fornecidos em comodato pela Net.

Acesse a interface de configuração do roteador através do IP http://192.168.0.1 no browser. A página abaixo deve ser apresentada.
As configurações de fabrica desse modelo de roteador não exigem UserName e Password, verifique no manual do seu roteador o IP e autenticação de acesso. No modelo DPC3925 clicamos em LogIn sem preencher nenhum campo. Após o login, clicar no menu Applications & Gaming.
E depois no submenu PortRange Forwarding.
Devemos configurar uma linha da tabela com:
External Start Port e EndPort: Preencher com a porta que será utilizada para acesso, devemos escolher uma porta diferente da 80, que geralmente é bloqueada pelas operadoras, como sugestão utilize a porta 8091.
IP Address: Esse é o IP da rede interna que será redirecionado pela porta 8091 para acesso externo, digite o IP 192.168.0.202 configurado nas conexões do Arduino.
Start Port e End Port: São as portas utilizadas no IP que está sendo configurado, no Arduino usamos a porta 80.
Protocol: Selecione a opção TCP.
Enable: Marque a opção para habilitar a configuração.
Devemos configurar uma linha da tabela com:
External Start Port e EndPort: Preencher com a porta que será utilizada para acesso, devemos escolher uma porta diferente da 80, que geralmente é bloqueada pelas operadoras, como sugestão utilize a porta 8091.
IP Address: Esse é o IP da rede interna que será redirecionado pela porta 8091 para acesso externo, digite o IP 192.168.0.202 configurado nas conexões do Arduino.
Start Port e End Port: São as portas utilizadas no IP que está sendo configurado, no Arduino usamos a porta 80.
Protocol: Selecione a opção TCP.
Enable: Marque a opção para habilitar a configuração.
Clique em Save Settings para salvar as configurações.
Testando o acesso externo
Para testar o acesso externo precisamos descobrir o IP externo do nosso roteador, o modo mais fácil é acessar o site www.meuip.com.br.
Testando o acesso externo
Para testar o acesso externo precisamos descobrir o IP externo do nosso roteador, o modo mais fácil é acessar o site www.meuip.com.br.
Para confirmarmos que nossa configuração foi realizada com sucesso, abrimos no browser nosso IP externo com a porta configurada no passo anterior. http://189.121.XXX.XXX:8091. Por questões de privacidade, apenas nesse post eu troquei meus últimos seis números do IP por XXX, use seu IP corretamente. O acesso a placa pode ser feito na rede local pelo IP do Arduino e pelo acesso externo com o IP do roteado e Porta configurada.
A página html pode ser alterada para acesso externo, basta alterar a variável com o IP e Porta.
Por exemplo, Se o IP do roteador for 200.201.202.203 a alteração deve ficar:
var ipArduino = 'http://200.201.202.203:8091', não esqueça de colocar : entre o IP e Porta.
Por exemplo, Se o IP do roteador for 200.201.202.203 a alteração deve ficar:
var ipArduino = 'http://200.201.202.203:8091', não esqueça de colocar : entre o IP e Porta.
A página de setup deve ser aberta corretamente.
Configurando o aplicativo Android.
A configuração do aplicativo Android é simples, devemos apenas trocaro IP do Arduíno pelo IP do Roteador e Porta configurada, conforme feito na página de setup.
A configuração do acesso externo do roteador requer uma atenção especial. Se alguém descobrir seu IP e o protocolo da placa terá acesso total a sua placa de automação! Existe alguma forma de resolver isso? Sim, mas com alguns modelos de roteadores que permitem atualização para um firmware que suporta a criação de uma VPN, a VPN cria um túnel entre o roteador e o dispositivo que está acessando. Mas isso é assunto para uma futura postagem. Nunca acesse sua placa de redes abertas ou não seguras.
Configurando o aplicativo Android.
A configuração do aplicativo Android é simples, devemos apenas trocaro IP do Arduíno pelo IP do Roteador e Porta configurada, conforme feito na página de setup.
Após a configuração, o acesso é realizado com sucesso.
O código fonte está disponível no github, em breve publicaremos novos projetos com o AutomationShield 2.0.
Abraços e até a próxima.
Abraços e até a próxima.