Programação sem fio do ESP32
Introdução
Você já parou para pensar se é possível programar placas com conexão Wi-Fi (como as que possuem o microcontrolador ESP32) sem a necessidade de conexão USB com um computador? Se sim, este tutorial é perfeito para você, já que nele veremos como programar um ESP32 utilizando comunicação OTA ("Over The Air").
Lista de Materiais
Para este tutorial você precisará dos seguintes itens:
Lista completa de produtos
comprarBlackBoard Edge
Cabo USB Micro B 80cm
Configuração Inicial
Para que a BlackBoard Edge possa ser gravada remotamente, é necessário utilizar uma biblioteca que permita a comunicação e gravação OTA. Felizmente, essa biblioteca está inclusa no pacote de placas do ESP32 que é usado na Arduino IDE.
Código
O código necessário para iniciar a comunicação OTA está disponível como um exemplo da Arduino IDE (Arquivo > Exemplos > ArduinoOTA > BasicOTA) para placas da plataforma ESP32, como mostrado na imagem abaixo:
Atenção: antes de prosseguir com o tutorial, recomendamos que siga os primeiros passos com a BlackBoard Edge.
Se preferir, você pode copiar o código do exemplo abaixo:
Vale lembrar que é necessário alterar as variáveis ssid
e password
com as credenciais (nome e senha) da rede Wi-Fi do local em que deseja utilizar a placa.
O Que Deve Acontecer
Após carregar o código para a placa, abra o monitor serial, e veja que, após reiniciar a placa, ela irá se conectar à rede configurada, e exibir o endereço de IP da placa na sua rede.
Neste momento, clique sobre o botão de configuração da placa que será programada e veja que haverá uma nova porta, agora uma porta sem fio, pelo Wi-Fi, com o mesmo endereço de IP exibido no monitor serial, como na imagem abaixo:
Neste momento, selecione esta porta e configure corretamente o modelo de placa para gravação. Com isso, você estará pronto para realizar a primeira gravação de código sem a necessidade de ter a placa conectada ao seu computador.
Blink OTA
Agora que a placa está pronta para receber códigos sem uma conexão física com o computador, vamos gravar o nosso primeiro código de forma remota à placa, e nada melhor do que começar com o tão famoso "Blink".
Código
Para este projeto, copie o código abaixo para a sua placa. Vale lembrar que é necessário alterar as variáveis ssid
e password
com as credenciais (nome e senha) da rede Wi-Fi do local em que deseja utilizar a placa.
Você deve estar se perguntando por que é necessário manter a mesma base do código anterior neste novo código. Isso se deve pelo fato que, como ao gravar um novo código para a placa, o código anterior é completamente sobrescrito, ou seja, apagado para que o novo seja escrito. Logo é necessário manter os comandos para a gravação OTA para que a mesma se mantenha ativa na placa. Caso contrário, a placa voltaria a ser gravada apenas com uma conexão física com o computador.
O Que Deve Acontecer
No momento em que você pressionar o botão para gravar o código, a Arduino IDE irá abrir uma janela solicitando a senha para a gravação. Como não configuramos uma senha, basta pressionar o botão "Carregar" para prosseguir após digitar uma senha qualquer (como se estivesse configurando-a).
Após confirmar a senha, a gravação será iniciada, exibindo uma barra de progresso no terminal da IDE. Este processo de gravação costuma demorar um pouco mais que a gravação "física", e depende muito da qualidade e intensidade do sinal Wi-Fi, bem como da velocidade da sua rede. De toda forma, assim que a gravação for concluída, a barra de progresso estará em 100% e o LED L da placa irá começar a piscar. Tudo isso, sem perder a conectividade sem fio para gravação OTA.
Indo Além
A biblioteca ArduinoOTA permite que você configure algumas coisas na placa para maior segurança, como uma senha (através do comando ArduinoOTA.setPassword("admin")
comentado nos exemplos acima), porta e hostname da conexão, dentre outros. Portanto, se quiser deixar o seu dispositivo ainda mais seguro para manter este tipo de comunicação, fique à vontade para testar essas configurações.
Conclusão
Neste tutorial vimos como programar o ESP32 da BlackBoard Edge sem a necessidade de uma conexão USB entre a placa e um computador.