Manual
do
Maker
.
com
No post anterior foi apresentada a introdução à atualização sem fio via OTA, previamente upado pela IDE do Arduino para o ESP8266 na board Wemos.
Nesse post veremos como fazer a atualização via browser. Se não leu o post anterior e seu ESP8266 ainda não tem OTA configurado, sugiro fortemente a leitura desse post, que lhe auxiliará introduzindo-o aos processos necessários para obter o suporte em sua ESP.
O tutorial é feito utilizando a board Wemos, mas serve para qualquer ESP8266. Nessa board o modelo é ESP-12EX.
Para os Arduineiros de plantão, claro que é mais simples já estar na IDE do Arduino e fazer o upload da imagem de forma transparente, mas existem casos de uso que realmente esse método se torna ideal, dentre os quais:
O poder desse ARM é realmente impressionante e seus recursos são generosos. Para essa implementação serão utilizadas duas classes principais, sendo a ESP8266mDNS e a ESP8266WebServer. Por pouco os includes não ocupam mais espaço que o código necessário para habilitar o servidor no ESP.
MDNS.begin(host);
httpUpdater.setup(&httpServer);
httpServer.begin();
MDNS.addService("http","tcp",80);
Pode não parecer nada, mas é fabulosa a implementação de um multicast DNS para resolução de nomes no Arduino. No ESP8266 não espanta tanto porque ele tem recursos para mais. Esse protocolo MDNS é utilizado para resolução de nomes na rede local. Claro que ele não trabalha sozinho e uma estação da rede precisar ter o "other side" instalado. Em Linux, use o Avahi. Em Windows e Mac, use o Bonjour.
Para configurar o Avahi no Linux é bastante simples. Em distribuições Linux com gerenciador de pacote apt:
apt-get install avahi-daemon
E apenas uma modificação será necessária no sistema. Edit o arquivo /etc/nsswitch.conf e deixe a linha "host:" assim:
files mdns_minimal [NOTFOUND=return] dns myhostname
Basicamente, isso determina a ordem de busca. Caso não encontrado pelos meios padrão, segue buscando posteriormente no DNS então myhostname etc. Essa é uma maneira de tentar suplantar as chances de erro.
Na parte do servidor HTTP inicia-se uma instancia e então adiciona-se o recurso do serviço ao MDNS.
Uma única linha é necessária para o handshake:
httpServer.handleClient();
Como indicado no post anterior, A versão mais atual da IDE do Arduino e a URL para a board manager (https://github.com/esp8266/Arduino#installing-with-boards-manager) são necessárias.
Implemente a configuração inicial no sketch WebUpdater, seguindo os menus acima. Mude as credenciais wireless para conectar o dispositivo à sua rede.
É uma pena, mas será necessário para esse processo que você desmarque a opção "compilation" no menu File→Preferences.
Após esses passos, você já pode subir o sketch e em seguida abrir o terminal para ver a mensagem contendo a URL para o update via OTA.
Digite a URL em seu browser e então você verá essa belezinha:
No pior dos casos, se a URL não funcionar, você pode substituir a parte do nome por IP, ou então utilizar a melhor solução (em minha humilde opinião), que é configurar um servidor DNS para resolver nomes de Internet e de sua rede local, como descrevo nesse outro post.
Como você desmarcou um ítem na IDE citado mais acima (assim espero), ao compilar o sketch agora você poderá ver o path do firmware compilado e desse modo ficará mais fácil compiá-lo rapidamente e enviá-lo pelo browser. Claro, se você for colocar esse binário em um ESP8266 fora da sua rede, leve-o em um pendrive ou envie para algum email no destino (não se esquecendo de tirar o hash da origem e destino para comprovar a autenticidade).
Daí você faz o upload pelo browser, mas só terá um "OK" de resposta no final e até que isso aconteça, você ficará apreensivo. Mas a boa notícia é que o upload é extremamente rápido.
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.