Manual
do
Maker
.
com
Upload sem cabos - Em primeiro lugar, essa board não é um Arduino, mas sim um ESP8266-EX, e a board se chama Wemos. A Wemos tem algumas características bem específicas pelo visto, mas não entendi precisamente a razão de ter um include de board exclusivamente para ela na IDE do Arduino. Não é transparente, você precisará instalar o suporte a ESP8266 na sua IDE. Existem duas maneiras de instalar o suporte, e o mais simples é através do board manager, o outro (não tão complexo) é através do Git. Vamos nos ater à primeira opção. Mas antes, preciso acrescentar que o procedimento adotado aqui serve para outras versões do ESP8266, bastando apenas escolher seu tipo no menu. Inclusive, a referência para download do suporte ao Wemos na IDE do Arduino vem do repositório do ESP8266.
Para fazê-lo através da própria IDE, abra-a e vá ao menu 'File→Preferences'. Haverá um campo 'Additional Boards Manager URLs', onde você deverá inserir essa URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Essa URL pode ser incluida junto a outras, bastando separá-las com vírgula. Feito isso (não é necessário dizer que você precisa confirmar em 'Ok', certo?) vá ao menu 'Tools→Board→Board Manager'. As boards serão carregadas e você pode filtrar para encontrar as boards pretendidas; clicando sobre ela, aparecerá um botão 'Install'. Confirme.
Após instalada, a board estará disponível na lista de placas, bastando rola até o fim (ou próximo dele):
Repare que Existem 3 opções, mas duas lhe serão seguramente válidas; o ESP-12EX e o Wemos D1. Até aqui somente a instalação, mas como você pode ver, é a coisa mais simples do mundo, de modo que em seguida você estará programando pela serial ou, como é pretendido explicar nesse post - através de OTA (OVer-The-Air).
Eu sei que vai parecer estranho, mas a velocidade recomendada é de 921600. Pra facilitar a leitura: 921.600. Mas isso é por OTA, o que significa que subir uma imagem por esse meio é mais rápido que pela serial! E livrar-se do cabo USB é outra coisa que não tem preço.
Você pode baixar uns exemplos aqui, então descomprimí-lo no diretório de sketches. O diretório criado dentro de Sketchbook se chamará 'D1_mini_Examples'. Reinicie a IDE do Arduino e posteriormente você terá disponível o exemplo em 'File→Sketchbook→D1_mini_Examples'. Para esse tutorial, usei apenas o exemplo BasicOTA, como você verá mais adiante.
OTA é o acrônimo de Over-The-Air, tratando-se de carga de firmware através da conexão WiFi. Pode ser que você não precise, mas convenhamos que é muito prático não precisar de fios para fazer upload, não?
O legal é que você pode fazer OTA por três meios distintos, o que torna o processo incrivelmente mais divertido! Estes meios são:
Eu poderia fazer um link direto para cada uma das funções, mas por favor, leia calmamente antes de implementar, desfrute da leitura e depois monte sua estratégia.
A primeira fase é a implementação, e para isso vamos usar a IDE do Arduino. Após implementado o suporte, pode-se brincar com os demais métodos.
Essa biblioteca deverá estar disponível na sua IDE. Se porventura não estiver, da mesma forma que a board, é possível instalar novas bibliotecas em 'Sketch→Include Library→Manage Libraries'.
Uma redução de riscos pode ser implementada com alguns parâmetros disponíveis na biblioteca. Tirado do exemplo OTA para ESP8266 mesmo, os parâmetros que devem ser definidos são:
void setPort(uint16_t port);
void setHostname(const char* hostname);
void setPassword(const char* password);
A importância disso é prover uma segurança mínima, colocando uma porta fora de qualquer padrão e uma boa senha. Um nome de host estranho pode ter alguma serventia também. Enfim, sigamos.
Apesar de já provado que há colisão de MD5, esse é o método oferecido para autenticar o upload. Convenhamos que SHA512 não é algo necessário para coisas pequenas.
Os recursos do ESP8266 são eximidos e dedicados ao upload, portanto tenha em mente que durante esse tempo não haverá interação. Automaticamente o módulo reinicia, executando então o novo sketch.
São dicas importantes que encontrei na documentação, por isso faço questão de citar - tenha em mente também que se o dispositivo estiver em campo, agendamento de OTA pode não ser uma boa idéia, exceto você o faça em um momento "fora do expediente" do dispositivo. Imagine um dispositivo controlando válvula de pressão; alguns minutos pode ser tempo suficiente para virar notícia televisiva.
A biblioteca oferece validadores auxiliares ao processo, que são:
void onStart(OTA_CALLBACK(fn));
void onEnd(OTA_CALLBACK(fn));
void onProgress(OTA_CALLBACK_PROGRESS(fn));
void onError(OTA_CALLBACK_ERROR (fn));
A memória flash tem que possuir espaço suficiente para o sistema corrente e para o novo sistema. Deve-se então certificar previamente a possibilidade do upload:
ESP.getFreeSketchSpace();
Não acho que seja necessário citar, mas para fins informativos e para evitar contestação, lembre-se de que o computador e o ESP8266 devem estar na mesma rede. O sketch subirá configurando o ESP8266 em modo Station, de forma que você deixará de vê-lo em suas conexões WiFi. Se seu router não tiver uma página de monitoramento de hosts, você pode simplesmente reiniciar o módulo matendo uma conexão serial e verá o IP que o dispositivo recebeu.
A última recomendação é que você utilize a IDE 1.6.7 que utiliza a biblioteca ArduinoOTA, invés da OTA tradicional.
Uma coisa muito importante e que pode lhe confundir é que a biblioteca ArduinoOTA só aparacerá depois de selecionada a board. Se você estiver com a board Arduino UNO selecionada por exemplo, não verá a biblioteca disponível em 'Include Library'. Além disso, você deve ir em 'Tool→Board→Boards manager; instalar a última versão do pacote para ESP8266.
Ao reiniciar a interface, você já deverá receber um aviso de atualização de boards e bibliotecas. Faça as devidas atualizações e mais uma vez, reinicie.
Para fazer upload, você deverá previamente configurar o modo de transferência e selecionar a porta. As próximas duas imagens tratam disso.
No video ao final do post você pode ver o upload do BasicOTA no nível estúpido e no nível normal. O nível estúpido foi uma distração minha e eu mantive para mostrar que é fácil se recuperar da situação.
Basicamente, não se esqueça de abrir uma porta, colocar o nome de host e deixe a senha de fora nesse momento - eu não consegui rodar de primeira com senha.
Eu fiz mais uma coisa que pode parecer estranho no primeiro momento, mas vou explicar agora, assim você assiste o video e vai curtir sem duvidas com os procedimentos. Repare que após subir o firmware, eu faço mais um upload do mesmo sketch pra mostrar o progresso do upload pela serial. Só que estou usando a IDE do Arduino para fazer o upload via OTA, portanto não seria possível utilizá-la simultaneamente para fazer acompanhamento pela serial. Desse modo, utilizei o programa GTKTerm (poderia ser QTerm, KTerm, minicom ou qualquer outro programa de comunicação serial) e nele fiz a comunicação serial. Enquanto o programa está sendo enviado via OTA, você consegue acompanhar o progresso no terminal serial. Agora curta o video e veja como é simples, interessante e muito, muito rápido fazer o upload por OTA.
Desfrute do vídeo upload por OTA.
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Inscreva-se em nosso canal Dobitaobyte no Youtube!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.