- O que é MicroPython?
- Por que MicroPython para NodeMCU?
- O que é um ESP8266 (NodeMCU)?
- Hardware usado
- Instalando o Firmware MicroPython para ESP8266
- Comunicando-se com o NodeMCU com PuTTY
- Upload de um código de piscar LED baseado em Python usando Ampy
- MicroPython em ESP8266: Obtendo temperatura e umidade com DHT22
Para um iniciante que está interessado em programar microcontroladores habilitados para Wi-Fi como o ESP8266, entender o ambiente de programação ESP-IDF ou o IDE do Arduino pode ser uma tarefa difícil, a sintaxe críptica das linguagens C e C ++ requer mais conhecimento de ciência da computação, que é por que essas linguagens nem sempre são amigáveis para iniciantes, então neste artigo, aprenderemos a configurar e programar um ESP8266 com MicroPython e, por fim, obteremos os dados de temperatura e umidade de nosso sensor de temperatura e umidade DHT22 favorito. Anteriormente também fizemos um tutorial sobre como programar ESP32 com Micro Python, você também pode conferir se estiver interessado.
O que é MicroPython?
Podemos dizer que MicroPython é uma versão fragmentada de python, projetada para funcionar com microcontroladores e sistemas embarcados. A sintaxe e o processo de codificação do MicroPython se assemelham ao python. Então, se você já conhece python, já sabe como escrever seu código usando MicroPython. Se você é um fã do Python, pode verificar este artigo.
O MicroPython foi desenvolvido no Reino Unido, por uma equipe liderada por Damion Jones, e eles lançaram um Kickstarter no passado, onde lançaram um conjunto específico de placas de desenvolvimento que executariam firmware, o que permite executar MicroPython em cima dele, que o firmware foi transferido para rodar no ESP8266, o que você aprenderá neste artigo.
Por que MicroPython para NodeMCU?
Python é uma das linguagens de programação mais amplamente usadas e fácil de aprender até hoje. Portanto, com a introdução do MicroPython, a programação de microcontroladores baseados em hardware ficou muito fácil. Se você nunca programou um microcontrolador antes e deseja começar a aprender a programar, MicroPython é um bom começo.
O MicroPython usa uma versão reduzida das bibliotecas padrão do Python, portanto, todas as bibliotecas padrão não estão disponíveis. Mas, MicroPython inclui módulos simples e fáceis de usar para fazer a interface com o hardware, o que significa que com a ajuda do MicroPython, ler e escrever em um registro GPIO ficou muito mais fácil.
O objetivo final do MicroPython é tornar a programação de microcontroladores o mais simples possível, para que possam ser usados por qualquer pessoa. Com o MicroPython, importar bibliotecas e escrever código torna-se fácil, o código mostrado abaixo é um exemplo simples que pisca o LED integrado da placa NodeMCU, discutiremos o código em detalhes após o artigo.
da importação da máquina Pino do tempo de importação de sono LED = Pin (2, Pin.OUT) enquanto True: LED.value (não LED.value ()) sleep (0,5)
O que é um ESP8266 (NodeMCU)?
O ESP8266 é um módulo Wi-Fi de baixo custo, projetado para aplicativos relacionados à Internet das Coisas (IoT).
Ele vem com pinos de entrada e saída de uso geral (GPIOs) e também oferece suporte a uma variedade de protocolos comumente usados, como SPI, I2C, UART e mais. Mas, o recurso mais legal desse microcontrolador é que ele tem Wi-Fi integrado. Com ele, podemos nos conectar a qualquer Wi-Fi de 2,4 GHz com muita facilidade.
Agora que o básico está fora do caminho, podemos passar para a parte prática, onde mostraremos o hardware necessário e o processo de instalação do MicroPython no ESP8266 IC.
Hardware usado
Lista de materiais usados
- 1 x breadboard
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (sensor de temperatura e umidade)
- 1 x 3 mm LED (diodo emissor de luz)
- 1 x 1K resistor
- 5 x Jumper Wire
Instalando o Firmware MicroPython para ESP8266
Existem duas maneiras de instalar o firmware MicroPython no ESP8266 neste artigo. Falaremos sobre os dois, mas primeiro, precisamos fazer o download.
Baixando o firmware MicroPython para ESP8266:
Antes de conectarmos a placa NodeMCU (ESP8266) ao nosso PC, precisamos baixar a versão mais recente do MicroPython, depois de instalarmos o firmware no NodeMCU, você pode baixá-lo da página oficial de download do Micropython
Instalando o Firmware MicroPython no ESP8266:
Antes de podermos instalar o firmware no ESP8266, precisamos ter certeza de que temos a unidade certa para o conversor USB para serial, a maioria da placa NodeMCU usa um conversor IC CP2102 USB para UART, por isso precisamos fazer o download e instalar o driver para o conversor CP2102 USB para UART, uma vez que o drive é baixado e instalado, precisamos baixar o esptool, que é uma ferramenta baseada em python feita para ler e escrever o firmware no ESP8266.
A maneira mais fácil de obter o Python é por meio da Microsoft Store, de lá você precisa baixar e instalar uma cópia do Python. Assim que o Python estiver instalado, podemos usar o comando pip3 install esptool para instalar o esptool. O processo será semelhante à imagem abaixo.
Uma vez instalado, verifique se você acessa o esptool a partir do terminal de comando.
Para fazer isso, basta executar o comando esptool.py version se você obtiver uma janela como a imagem abaixo, você instalou com sucesso o esptool em seu PC com Windows.
E se você estiver tendo problemas para acessar o esptool na janela de comando, tente adicionar o caminho de instalação completo à variável de ambiente do Windows.
Encontrando a PORTA alocada para a placa NodeMCU:
Agora precisamos descobrir a porta alocada para a placa NodeMCU, para fazer isso basta ir até a janela do gerenciador de dispositivos e procurar uma opção chamada Ports se você expandir que pode encontrar a porta associada à placa NodeMCU. Para nós, é semelhante à imagem mostrada abaixo.
Apagando a memória flash do ESP8266:
Agora que descobrimos a porta COM associada, podemos preparar o módulo NodeMCU apagando a memória flash dele. Para fazer isso, o seguinte comando é usado, esptool.py --port COM6 erase_flash . O processo será semelhante à imagem abaixo.
Instalando o Firmware:
Executar o comando a seguir instalará o binário MicroPython na placa NodeMCU; uma vez instalado, esse binário nos permitirá carregar nossos programas python e nos comunicar com o loop Ler, Avaliar e Imprimir .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
O processo será semelhante à imagem abaixo,
Observe que, no momento da instalação, o binário estava na minha área de trabalho, então eu tenho um cd na minha área de trabalho e executo o comando.
Feito isso, é hora de se comunicar com a placa e piscar alguns LEDs.
Comunicando-se com o NodeMCU com PuTTY
Agora vamos começar nosso primeiro programa Hello World usando PuTTY, PuTTY para fazer isso, precisamos definir o tipo de conexão como Serial, a seguir definimos a linha Serial (no nosso caso é COM6) e, finalmente, definimos a velocidade para 115200 baud.
Se tudo for feito corretamente, uma janela semelhante à imagem abaixo aparecerá, e podemos facilmente escrever nosso código nela, geralmente funciona como um terminal iPython. Além disso, executamos nosso primeiro programa hello world, que tem apenas duas linhas simples, e uma vez que colocamos nossa instrução print, obtemos nossa resposta.
Upload de um código de piscar LED baseado em Python usando Ampy
Acessar MicroPython com a ajuda do terminal PuTTY é uma boa maneira de se comunicar com o módulo ESP, mas outra maneira fácil é fazer o upload do código por meio da ferramenta Adafruit Ampy, para instalar o ampy, podemos apenas executar um pip3 install adafruit- comando ampy e ele irá instalar o ampy em nosso PC. O processo será semelhante à imagem abaixo.
Agora que você tem isso, ainda precisamos de nossas informações sobre a porta serial à qual estamos conectados. No nosso caso, é COM6. Agora só precisamos escrever nosso código LED Blink com MicroPython, para isso, usamos o guia fornecido no site oficial do micro python
Com a ajuda do guia, é feito o seguinte código.
da importação da máquina Pino do tempo de importação de sono LED = Pin (2, Pin.OUT) enquanto True: LED.value (não LED.value ()) sleep (0,5)
O código é muito simples. Primeiro, importamos a biblioteca Pin da máquina. Fixar classe. Em seguida, precisamos importar a biblioteca de tempo, que é usada para fazer uma função de atraso. Em seguida, definimos o Pin2 (que é o LED integrado conectado ao módulo ESP12E) como saída. Em seguida, configuramos um loop while onde ligamos e desligamos o LED com um atraso de 500ms.
É assim que você carrega o código no NodeMCU. Para fazer isso, você precisa executar o seguinte comando ampy , ampy --port COM6 put main.py
Se o programa for executado corretamente, você verá um LED piscando como mostrado abaixo.
Nota: Ao carregar o código, eu defino meu local do prompt atual para minha área de trabalho, então não precisei especificar um caminho completo para o arquivo main.py se não for o caso, você precisa especificar o caminho completo para arquivo.py.
Em seguida, passamos a obter nossos dados de temperatura e umidade do sensor DHT22.
MicroPython em ESP8266: Obtendo temperatura e umidade com DHT22
Esquema para fazer a interface DHT22 com NodeMCU:
O diagrama de circuito completo para este projeto pode ser encontrado abaixo. Usei fritzing para criar este circuito.
Como você pode ver, o circuito é muito simples e pode ser facilmente construído em uma placa de ensaio usando fios de jumper. O circuito completo pode ser alimentado usando a porta micro-USB no NodeMCU. Minha configuração de hardware é mostrada abaixo.
Código:
É muito fácil obter os dados de temperatura e umidade de um sensor DHT22 ou DHT11 usando um MicroPython porque o firmware MicroPython que instalamos anteriormente vem com uma biblioteca DHT integrada.
1. Começamos nosso código importando a biblioteca DHT e a biblioteca pin da classe de máquina.
import dht da máquina import Pin
2. Em seguida, criamos um objeto DHT que se refere ao pino, no qual conectamos nosso sensor.
sensor = dht.DHT22 (Pin (14))
3. Finalmente, para medir o valor do sensor, temos que usar os três comandos a seguir.
sensor.measure () sensor.temperature () sensor.humidity ()
Para o código final, nós o colocamos em um loop while e imprimimos os valores que marcam o final do nosso código. Além disso, o sensor DHT22 precisa de 2 segundos antes de poder ler quaisquer dados, portanto, precisamos adicionar um atraso de 2 segundos.
da importação da máquina Pin from time import sleep import dht dht22 = dht.DHT22 (Pin (14)) enquanto True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatura:% 3.2f C'% temp) print ('Umidade:% 3.2f %%'% hum) exceto OSError as e: print ('Falha ao ler dados do sensor DHT22.')
Assim que terminarmos de codificar, podemos fazer o upload do código com a ajuda do comando ampy.
ampy --port COM6 put main.py
Depois de executar o código com sucesso, você pode monitorar os valores de temperatura e umidade em qualquer monitor serial. Usei massa e como você pode ver abaixo, consegui receber os valores de temperatura e umidade na COM5.
Espero que você tenha gostado do artigo e aprendido algo útil. Se você tiver alguma dúvida, pode deixá-la na seção de comentários abaixo ou usar nossos fóruns para postar outras questões técnicas.