Desenvolver aplicações embarcadas para ESP8266 e ESP32 ficou muito melhor desde que descobri que é possível usar Python para isso! Não é que eu não curta C ou Lua, mas prefiro muito mais Python. Mas, que mágica é essa? Quem inventou essa de Python para embarcados?

Na verdade, tudo começou com um projeto no Kickstarter para criar uma placa chamada PyBoard (imagem abaixo), na qual você a programaria usando um subconjunto da linguagem Python, chamado MicroPython. Desde então, diversos abnegados desenvolvedores e makers fizeram ports do MicroPython para serem executados, por exemplo, em ESP32 e ESP8266.

PyBoard versão 1.1

Neste post, veremos como preparar um ESP8266 e um ESP32 para usar o MicroPython! Vamos lá!

Firmwares

Obviamente, o primeiro passo é baixar os firmwares específicos para as placas ESP8266 e ESP32. Dois firmwares? É isso mesmo? Sim, cada plataforma tem um firmware do MicroPython para ele. Faz sentido, não acha? Cada plataforma tem capacidades diferentes e nem todas as características da linguagem poderão funcionar em uma determinada plataforma! 

Quer um exemplo para entender melhor? Por exemplo, caso você use o firmware para o ESP8266, você não terá o módulo de Threads, pois o ESP8266 é bem mais limitado que o ESP32 e não roda Threads. Já no caso do ESP32, por ser uma plataforma com mais recursos, tem esse módulo. Sacou? 

Baixe as últimas versões de cada firmware neste link aqui ó! No meu caso, baixei os arquivos esp8266-20171101-v1.9.3.bin e o esp32-20180321-v1.9.3-477-g7b0a020a.bin 

Ferramentas

Agora que temos os firmwares, precisamos de algumas ferramentas para podermos fazer o flash deles nas duas placas. No nosso caso, precisaremos do esptool! A instalação do esptool pode ser realizada através do pip, que é um gerenciador de pacotes para Python, usando o comando pip install esptool

E para instalar o pip? Bom, aí depende de cada sistema operacional. Se você usa o Linux, provavelmente já o tem instalado em sua máquina. Caso use o Mac, sugiro instalar o Homebrew e usar ele para instalar a versão 3.X do Python. Ao fazer isso, você já terá o pip junto! Windows? Bom, aí não sei. Já tem muitos anos que não uso Windows e não tenho a mínima ideia! 🙁

Flashing

Vamos agora fazer o flash do firmware, começando com o ESP8266. Abra o terminal e entre no diretório onde se encontram os firmwares que acabamos de baixar. Nesta pasta, é prudente primeiro apagarmos a memória flash do dispositivo para só depois instalar o firmware:esptool.py --port /dev/ttyUSB0 erase_flash.

Fique atento para substituir o valor ttyUSB0 para a porta na qual seu Mac ou Linux vinculou o seu dispositivo. Este valor varia, mas, normalmente, no Linux será algo como ttyUSBX. Já no Mac, pode ser totalmente diferente, pois depende até de drivers que você instalou para se comunicar com o ESP. Eu, por exemplo, precisei instalar os drivers para Mac que estão neste link. Ao instalar esse driver e depois plugar o cabo USB no NodeMCU e no Macbook, aparece um /dev/cu.wchusbserialfd120. Após executar o comando acima, você deve ter alguns outputs no terminal parecidos com esses:

Agora estamos aptos a fazer o flash do firmware, primeiro, no NodeMCU. Para tal, faça:esptool.py --port /dev/cu.wchusbserialfd120 --baud 115200 write_flash --flash_size=detect 0 arquivo.bin. O valor atribuído à opção –baud também pode variar. No meu caso, o valor que a documentação do MicroPython sugere (460800) não funcionou com o NodeMCU Lolin e tive que usar 115200. Ao executar este comando, você terá um output parecido com esse aqui:

Agora é a vez do ESP32! Neste caso, precisamos primeiro fazer o Erase da flash igualzinho a como fizemos com o ESP8266, entretanto, o comando para fazer o flash é um pouco diferente. Outro detalhe que você também deve ficar atento é a porta, que novamente mudará. No meu caso, a porta para o ESP32 foi a /dev/cu.SLAB_USBtoUARTJá o comando que usei foi o seguinte:esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART --baud 115200 write_flash -z 0x1000  arquivo.bin

Mas, por que mudou? Segundo li em fóruns, o módulo que uso, o WROOM-32, igual ao da foto abaixo,  tem algumas diferenças na forma de fazer o flash. Não vou me alongar nas explicações aqui, sugiro que você dê uma googlada que vai encontrar muitas referências sobre isso.

REPL

Ao instalar o MicroPython, nós podemos nos conectar ao prompt dele. Trata-se de um prompt igual ao que nós temos em nossa máquina caso executemos o comando python no Terminal. Para esta parte, você precisará de algum aplicativo que faça conexão serial! No Linux, você pode usar o picocom, enquanto no Mac basta usar o screen, que já vem instalado por padrão. 

Caso você tenha um Mac, vá ao Terminal e digite screen /dev/cu.SLAB_USBtoUART 115200. Caso você esteja no Linux, use o comando picocom /dev/cu.SLAB_USBtoUART -b115200. Caso tudo dê certo, você terá um shell igual ao da imagem abaixo.

Pronto! Agora você já tem o MicroPython instalado em sua board. Em breve, publicarei outras postagens mais direcionadas à programação em Python para estas duas boards! Valeu!

×