Olá Garagistas,
Dando prosseguimento à nossa série de tutoriais de automação utilizando a placa AutomationBoard, iremos mostrar neste tutorial como utilizar o módulo ESP8266 para incluir a comunicação via Wi-Fi com a placa. A conexão é bem fácil e a instalação dispensa a utilização de cabos de rede ou outros módulos. Outra vantagem dessa configuração é que o acesso pode ser feito através de celulares, tablets ou PCs, sem a necessidade de instação de programas ou aplicativos.
Por que usar a AutomationBoard para sistemas de automação?
A AutomationBoard facilita muito o trabalho, pois traz algumas vantagens importantes:
- Dispensa o uso de fontes porque pode ser alimentada direto da rede elétrica
- Já vem com relés na própria placa, facilitando a montagem e instalação
- Permite o uso de shields, conexão de sensores e módulos com facilidade
- Placa protegida contra ruídos e interferências
Em especial, a vantagem que usaremos nesse tutorial:
- Permite a conexão de dispositivos 3.3V sem a necessidade de reguladores ou conversores de nível lógico
Ou seja, o módulo ESP8266 precisa ser alimentado com 3.3V, e a comunicação com ele não pode ser feita diretamente porque ele não é tolerante a 5V. Mas a AutomationBoard já tem conversores e regulador na placa (nos headers para XBee), permitindo que o módulo seja conectado diretamente, bastando para isso, alguns jumpers.
Então, vamos colocar a mão na massa!
Materiais
1x Placa AutomationBoard (incluir conversor e cabo com plug de tomada)
Abaixo, você poderá conferir como as ligações devem ser feitas. Veja como é simples.
Utilizamos pinos da AutomationBoard que já possuem conversor de nível lógico (5V-3.3V), e que estão conectados aos pinos RX/TX do Arduino UNO montado internamente na placa. Assim, não é possível utilizar o módulo conversor USB/Serial e o ESP8266 ao mesmo tempo. Você precisa passar a programação para a placa e depois conectar o ESP8266. Se desejar, você pode manter todas as ligações, mas desligar o Vcc do módulo ESP8266 sempre que enviar um novo código à placa.
Abaixo segue o código para este tutorial. Ele cria um webserver utilizando comandos AT do firmware que já vem de fábrica com o ESP8266-01.
Programação
Como simplificação para os desenvolvedores mais iniciantes, este código que preparamos gera uma página com links, que ao serem acessados, recarregam a página e acionam os relés correspondentes, informando ainda o estado de cada relé. Você poderá substituir esses links por botões ou imagens, apenas alterando a forma como a página é gerada no código. Além disso, poderá utilizar "forms" com métodos POST ou GET.
Não esqueça de alterar o código na área indicada para os dados da sua rede. Coloque ali o SSID e senha da sua rede WiFi e escolha um endereço de IP compatível com sua rede local. Exemplo: Se o seu roteador responde no endereço 192.168.0.1, escolha um IP do tipo 192.168.0.XXX, onde o XXX está no range permitido nas configurações do seu roteador, exemplo: 192.168.0.99. No nosso caso, utilizamos 192.168.0.142, porque gostamos do número "42". ;-)
Depois de carregado o código e montado o circuito, abra um browser em qualquer dispositivo que esteja conectado à rede local, seja um tablet, celular (que estejam acessando a sua rede) ou PC e digite no lugar da URL o IP que você colocou no código acima. Você verá a seguinte página (que poderá ser personalizada posteriormente):
Agora, clique em um dos links e aguarde o completo carregamento da página. Você verá o relé correspondente na placa acionar e o link clicado mudar de "desligado" para "ligado", indicando o novo estado do relé.
Dica para programação
Os desenvolvedores mais avançados que desejarem implementar modificações no código acima, poderão alterar a definição "Debug" para "true" no início do código, e adicionar um segundo módulo conversor USB/Serial, ou Arduino sem o ATmega, aos pinos 10 e 11, onde criamos uma porta serial por software (SoftwareSerial) exclusiva para debug. Nesse caso, todas as respostas do módulo ESP8266 poderão ser acompanhadas nessa porta criada em qualquer terminal serial.
Como acessar o sistema de fora da rede local, pela internet?
O dispositivo que você acaba de criar é acessível pela rede local, mas existe uma forma de torná-lo acessível de fora, via internet. Trata-se do "encaminhamento de porta" ou "port forwarding".
Esse é um recurso disponível em praticamente todos os roteadores, e com certeza, o seu roteador também tem. Funciona da seguinte maneira: Cria-se uma porta, que tem um número, exemplo: 91. Essa porta corresponderá a um endereço de IP da sua rede local, exemplo 91 = 192.168.0.99. Quando algum dispositivo solicitar ao seu roteador o acesso a porta 91, ele automaticamente irá redirecionar o tráfego para o IP configurado, que será o do dispositivo de automação.
Assim, para acessar externamente, basta digitar no browser o endereço de IP (externo) do seu roteador seguido do número da porta. Exemplo: 201.AAA.BBB.CC:91. E quem irá responder é o módulo ESP8266 com a página que criamos na programação.
Para saber mais sobre encaminhamento de porta e entender como configurar o seu roteador, sugerimos uma busca no Google pelos termos "encaminhamento de porta" seguidos do modelo do seu roteador. É bem simples de fazer.
Lembramos que o firmware acima se dispõe apenas ao objetivo didático, e portanto, não possui qualquer proteção ou senha para acesso externo. Por segurança, sugerimos que este recurso seja implementado para uso residencial ou comercial.
Como conectar os relés às cargas como lâmpadas?
É muito simples. Os detalhes, inclusive com imagens podem ser conferidos neste tutorial:
http://labdegaragem.com/profiles/blogs/tutorial-sistema-de-automaca...
Referências
Sugerimos as seguintes leituras para o caso de dúvida:
http://labdegaragem.com/profiles/blogs/primeiros-passos-com-a-autom...
http://labdegaragem.com/profiles/blogs/tutorial-sistema-de-automaca...
http://forum.arduino.cc/index.php?topic=283043.0
http://wiki.iteadstudio.com/ESP8266_Serial_WIFI_Module#AT_Commands
http://allaboutee.com/2014/12/30/esp8266-and-arduino-webserver/
Comentar
Eduardo,
A princípio sim. Mas não sei dizer a velocidade que seria possível alcançar. Eu já trabalhei com imagens geradas com Arduino para VGA e TFT e posso dizer que a velocidade de processamento é um problema. Fora armazenamento em RAM.
Tudo vai depender de aspectos como tipo de câmera, protocolos, tamanho da imagem, tipo de compactação, e por aí vai.
Obrigado pela resposta, mas em outro projeto, usando o ESP8266 seria possível?
Eduardo,
Infelizmente esse projeto não possibilita essa aplicação.
Abraço!
Ao invés de um relé, eu poderia acessar as imagens de uma câmera?
Consegui, funcionou certinho, achei que precisava configurar/atualizar o ESP antes, mas é só plug and play para o ESP, ficou muito bom.
Tiago,
Não precisa localizar na rede. Você mesmo define o IP nas primeiras linhas do código, no mesmo bloco onde define a sua rede wifi e senha.
Ai é só digitar o IP escolhido no seu browser.
Boa sorte!
Flavio de fato é isso mesmo, agora que fiz eu entendi, para montar um breakout para o esp-01 fica bem facilitado, só preciso achar um header que consiga conectar o esp.
só estou apanhando para encontrar meu ESP na rede
Olá Tiago, o problema é como colocar mais um fio dentro do conector de 3.3v do xbee, logo essa foi a saída mais rápida.
Poderia ter soldado um fio também, do Vcc do módulo para CH_PD.
Vou tentar hj, mas uma duvida, porque não usar o 3,3v disponivel para o xbee?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)