Introdução
No artigo de hoje vamos aprender como configurar, gravar o firmware e testar o Micropython em placas ESP32. O método também pode ser utilizado para placas ESP826. Para isso serão necessários alguns softwares como o NodeJS e Visual Studio Code.
De acordo com a PYPL index, Python é a linguagem de programação mais popular em dezembro de 2021. Um dos motivos que contribuem para esse sucesso é a facilidade pois é uma linguagem fácil de aprender onde a sintaxe é mais simples e mais próxima à linguagem humana do que outras linguagens como C/C++ e Assembly. Outra vantagem diz respeito à produtividade, o código utilizado para fazer uma determinada tarefa em python é significativamente menor que em nas linguagens já citadas, isso ajuda a manter o código mais intuitivo e limpo. Além de outras razões como uso difundido em aplicações Web, Big Data e Inteligência Artificial.
O que é micropython?
Segundo a página oficial, micropython é uma implementação enxuta e eficiente da linguagem de programação Python 3 que inclui um pequeno subconjunto da biblioteca padrão do Python e é otimizada para rodar em microcontroladores e em ambientes restritos.
O MicroPython é um software de código aberto, onde qualquer usuário pode usar e adaptá-lo gratuitamente para uso pessoal, educacional e em produtos comerciais.
O código-fonte que pode ser encontrado no GitHub e o firmware para vários tipos de placas pode ser encontrado aqui. Todos são bem vindos a contribuir com o projeto.
Instalação do Firmware
Antes de programar nossa placa em micropython, precisamos gravar um firmware específico na memória do microcontrolador. Abaixo estão os links para download do firmware Micropython para o ESP8266 e do ESP32.
Também é necessária uma ferramenta para gravação desse firmware, existem outras ferramentas para fazer esse tipo de gravação, no entanto, para este post optei pela ferramenta esptool.
Você pode encontrar essa ferramenta aqui: https://github.com/espressif/esptool ou caso tenha python instalado na sua máquina instale-a usando o pip:
1 | pip install esptool |
Utilize o esptool.py para apagar o flash com seguinte comando:
1 | esptool.py --port COM5 erase_flash |
Em seguida, grave o novo firmware no ESP8266 usando:
1 | esptool.py --port COM5 --baud 460800 write_flash --flash_size=detect 0 esp8266-versao-mais-recente.bin |
Caso esteja usando ESP32 os comandos são um pouco diferentes tanto para limpar quanto para gravar na flash:
1 | esptool.py --chip esp32 --port COM5 erase_flash |
1 | esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 esp32-versao-mais-recente.bin |
Note que você deve substituir a o nome da porta serial de “COM5” para a porta que correspondente a sua placa. Também é necessário trocar o nome do firmware pelo nome do baixado anteriormente.
Instalação do Visual Studio Code
Existem algumas IDEs para programação em micropython em placas ESP32 e ESP8266 como a uPyCraft IDE e a Thony, mas preferi abordar o Visual Studio Code por ser uma IDE mais flexivel e abrangente, possuindo diversos plugins, sendo possivel até mesmo programar placas Arduino em C/C++ utilizando uma extensão expecifica.
Indo direto ao ponto, baixe o Visual Studio Code pelo link e escolha uma versão compatível com seu sistema operacional.
A instalação é simples, mas recomendo selecionar todas as tarefas adicionais, principalmente a adição do Visual Studio Code no menu de contexto.
Figura 1: Instalação do Visual Studio Code.
Depois desse detalhe basta avançar até concluir a instalação. Após a conclusão da instalação você pode criar uma pasta para guardar o seu primeiro projeto.
Figura 2: Interface do Visual Studio Code.
Instalação plugin Pymakr
O plugin Pymakr permite o upload e execução de um ou mais arquivos para a memória flash da sua placa, também é possível fazer o download de arquivos já gravados na placa. Outra funcionalidade interessante é o recurso REPL (read–eval–print loop) que funciona como um terminal onde é possível digitar comandos para a placa.
Antes da instalação do plugin Pymakr, precisamos do NodeJS instalado em nosso sistema pois NodeJS é uma dependência do Pymakr. Você pode baixar-lo por este link, escolha uma versão compatível com seu sistema operacional.
Agora para finalizar a preparação do nosso ambiente de desenvolvimento podemos instalar a extensão Pymakr que pode ser encontrada como última opção no menu de extensões.
Figura 3: Menu de extensões.
Figura 4: plugin Pymakr.
Após a instalação uma barra de ferramentas será adicionada na parte inferior da interface do Visual Studio code.
Figura 5: barra de ferramentas do pymakr.
O terminal será também será aberto por padrão apos a instalação. Use o comando Pymakr > Global settings or Pymakr > Project settings para configurar sua conexão.
Figura 6: Lista de comandos.
Será carregado o arquivo de configuração pymakr.json.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | { "address": "192.168.4.1", "username": "micro", "password": "python", "sync_folder": "", "open_on_start": true, "safe_boot_on_upload": false, "py_ignore": [ "pymakr.conf", ".vscode", ".gitignore", ".git", "project.pymakr", "env", "venv" ], "fast_upload": false, "sync_file_types": "py,txt,log,json,xml,html,js,css,mpy", "ctrl_c_on_connect": false, "sync_all_file_types": false, "auto_connect": true, "autoconnect_comport_manufacturers": [ "Pycom", "Pycom Ltd.", "FTDI", "Microsoft", "Microchip Technology, Inc.", ] } |
Neste arquivo podemos fazer algumas configurações interessantes.
No campo “address” podemos atribuir a porta serial da qual o nossa placa está atribuída. Outro campo útil é o “auto_connect” que permite que o Pymakr se conecte automaticamente quando a porta serial estiver disponível.
Porém como é uma configuração global recomendo que mantenha o “address” vazio pois o nome da porta serial pode variar muito e “auto_connect” como true. Também recomendo adicionar a informação de manufatura do conversor usb-serial utilizado na sua placa na lista do campo “autoconnect_comport_manufacturers” para que o pymakr reconheça como um dispositivo a ser utilizado.
Figura 7: Manufatura “Silicon Labs” do chip CP210x.
Figura 8: Adição de “Silicon Labs” a lista de verificação da autoconexão.
Depois de salvar as alterações conforme a sua necessidade a conexão serial deve acontecer automaticamente. Caso não se conecte automaticamente, tente a conexão pelo botão “pymakr console”.
Primeiros teste: Acionamento do LED embutido
Depois de tudo configurado, finalmente chegou a hora tão aguardada: piscar um led. Logo após concluir as etapas de você pode verificar o funcionamento digitando a função help() no console.
Se tudo ocorrer conforme esperado, uma série de mensagens de ajuda será exibida, semelhante a imagem abaixo.
Figura 9: REPL micropython embarcado no ESP32.
Você pode inserir alguns comandos diretamente no terminal para alterar o estado do led integrado por exemplo. Tomando o ESP32 DevKit v1 como base, que tem o led integrado conectado a porta 2, podemos fazer:
1 2 | >> from machine import Pin >> led = Pin(2,Pin.OUT) |
Primeiramente importamos a classe Pin do módulo machine necessária para trabalhar com GPIOs do ESP32. Em seguida criamos uma instância da classe Pin com configurada sobre o GPIO2 como saída. Uma vez que essa configuração esteja feita, é possível alterar o estado do pino para nível alto fazendo:
1 | >> led.value(1) |
ou
1 | >>led.on() |
Logicamente para retornar para o estado baixo fazemos
1 | >>led.value(0) |
ou
1 | >>led.off() |
Primeiro Script: Blink
Ok, mas o que queremos realmente é um programa funcionando independente que pisca um led. Fazer isso é simples! Primeiro crie uma pasta no local de sua preferência e dentro dele abra o Visual Studio Code pelo menu de contexto.
Figura 10: Criação de um novo projeto pelo menu de contexto.
Com o Visual Studio Code aberto adicione um script com nome main.py. O script main.py é importante pois contem o código que será executado sempre que ligamos ou reiniciarmos a placa.
Figura 11: Script principal.
Execute o script com o botão Run da barra de funções do pymakr e observe que o led embutido começa a piscar. Vale destacar que o botão Run só executará o script, não ficará gravado na memória do ESP32. Para gravar um script na flash ative o botão Upload.
Um outro detalhe é que para executar ou fazer upload de novos scripts você PRECISA interromper a execução do script atual, ou seja, abrir o console e pressionar ctrl+c para encerrar o script.
Para se aprofundar nessa forma alternativa de programar placas ESP8266/ESP32 você pode estudar a documentação do micropython disponível neste link
Gostou? Deixe seu comentário logo abaixo, não deixe de conferir outras postagens do nosso blog. Confira também a nossa loja virtual e encontre as placas que podem ser utilizadas neste tutorial.