- ¿Qué es MicroPython?
- ¿Por qué MicroPython para NodeMCU?
- ¿Qué es un ESP8266 (NodeMCU)?
- Hardware utilizado
- Instalación del firmware MicroPython para ESP8266
- Comunicarse con NodeMCU con PuTTY
- Carga de un código intermitente LED basado en Python usando Ampy
- MicroPython en ESP8266: obtener temperatura y humedad con DHT22
Para un principiante que está interesado en programar microcontroladores habilitados para Wi-Fi como el ESP8266, comprender el entorno de programación ESP-IDF o el IDE de Arduino puede ser una tarea desalentadora, la sintaxis críptica de los lenguajes C y C ++ requiere más conocimiento de la informática, que es por qué esos lenguajes no siempre son amigables para los principiantes, entonces en este artículo, aprenderemos a configurar y programar un ESP8266 con MicroPython, y finalmente, obtendremos los datos de temperatura y humedad de nuestro sensor de temperatura y humedad DHT22 favorito. Anteriormente también hicimos un tutorial sobre cómo programar ESP32 con Micro Python, también puede consultarlo si está interesado.
¿Qué es MicroPython?
Podemos decir que MicroPython es una versión cortada en cubitos de Python, diseñada para funcionar con microcontroladores y sistemas integrados. La sintaxis y el proceso de codificación de MicroPython se parecen a Python. Entonces, si ya conoce Python, ya sabe cómo escribir su código usando MicroPython. Si eres fanático de Python, puedes consultar este artículo.
MicroPython fue desarrollado en el Reino Unido, por un equipo liderado por Damion Jones, y lanzaron un Kickstarter en el pasado, donde lanzaron un conjunto particular de placas de desarrollo que ejecutarían firmware, lo que le permite ejecutar MicroPython encima, eso El firmware ahora se ha adaptado para ejecutarse en el ESP8266, que aprenderá en este artículo.
¿Por qué MicroPython para NodeMCU?
Python es uno de los lenguajes de programación más utilizados y fáciles de aprender hasta la fecha. Entonces, con la introducción de MicroPython, programar microcontroladores basados en hardware se volvió muy fácil. Si nunca antes ha programado un microcontrolador y desea comenzar a aprender a programar, MicroPython es un buen comienzo.
MicroPython usa una versión reducida de las bibliotecas estándar de Python, por lo que no todas las bibliotecas estándar están disponibles. Pero, MicroPython incluye módulos simples y fáciles de usar para interactuar con el hardware, lo que significa que con la ayuda de MicroPython, leer y escribir en un registro GPIO ahora es mucho más fácil.
El objetivo final de MicroPython es hacer que la programación de microcontroladores sea lo más simple posible, para que pueda ser utilizado por cualquier persona. Con MicroPython importar bibliotecas y escribir código se vuelve fácil, el código que se muestra a continuación es un ejemplo simple que hace parpadear el LED integrado de la placa NodeMCU, discutiremos el código en detalle después del artículo.
desde el pin de importación de la máquina desde el tiempo de suspensión de importación LED = Pin (2, Pin.OUT) mientras que True: LED.value (no LED.value ()) sleep (0.5)
¿Qué es un ESP8266 (NodeMCU)?
El ESP8266 es un módulo Wi-Fi de bajo costo, diseñado para aplicaciones relacionadas con Internet de las cosas (IoT).
Viene con pines de entrada y salida de uso general (GPIO) y también admite una variedad de protocolos de uso común como SPI, I2C, UART y más. Pero, la característica más interesante de este microcontrolador es que tiene Wi-Fi incorporado. Con él, podemos conectarnos a cualquier wifi de 2.4GHz de forma muy sencilla.
Ahora que lo básico está fuera del camino, podemos pasar a la parte práctica donde le mostraremos el hardware requerido y el proceso de instalación de MicroPython en el ESP8266 IC.
Hardware utilizado
Lista de materiales utilizados
- 1 x tablero
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (sensor de temperatura y humedad)
- 1 x LED de 3 mm (diodo emisor de luz)
- 1 resistencia de 1 K
- 5 x cable de puente
Instalación del firmware MicroPython para ESP8266
Existen dos formas de instalar el firmware MicroPython en el ESP8266 en este artículo. Hablaremos de ambos, pero primero necesitamos descargarlo.
Descarga del firmware de MicroPython para ESP8266:
Antes de conectar la placa NodeMCU (ESP8266) a nuestra PC, necesitamos descargar la última versión de MicroPython, luego podemos instalar el firmware en NodeMCU, puede descargarlo desde la página oficial de descarga de Micropython
Instalación del firmware MicroPython en ESP8266:
Antes de que podamos instalar el firmware en el ESP8266, debemos asegurarnos de que tenemos la unidad correcta para el convertidor de USB a serie, la mayoría de la placa NodeMCU utiliza un convertidor IC CP2102 USB a UART, por lo que necesitamos descargar e instalar el controlador para el convertidor CP2102 USB a UART. Una vez que la unidad está descargada e instalada, necesitamos descargar el esptool, que es una herramienta basada en Python hecha para leer y escribir el firmware en ESP8266.
La forma más fácil de obtener Python es a través de Microsoft Store, desde allí debe descargar e instalar una copia de Python. Una vez que Python está instalado, podemos usar el comando pip3 install esptool para instalar el esptool. El proceso se parecerá a la imagen de abajo.
Una vez instalado, verifique si accede a esptool desde el terminal de comandos.
Para hacerlo, simplemente ejecute el comando, versión esptool.py, si obtiene una ventana como la siguiente imagen, ha instalado esptool con éxito en su PC con Windows.
Y si tiene problemas para acceder a esptool desde la ventana de comandos, intente agregar la ruta de instalación completa a la variable de entorno de Windows.
Encontrar el PUERTO asignado para la placa NodeMCU:
Ahora tenemos que averiguar el puerto asignado para la placa NodeMCU, para hacerlo, simplemente vaya a la ventana del administrador de dispositivos y busque una opción llamada Puertos si expande que puede encontrar el puerto asociado con la placa NodeMCU. Para nosotros, se parece a la imagen que se muestra a continuación.
Borrado de la memoria flash del ESP8266:
Ahora que hemos descubierto el puerto COM asociado, podemos preparar el módulo NodeMCU borrando la memoria flash del mismo. Para hacerlo, se usa el siguiente comando, esptool.py --port COM6 erase_flash . El proceso se parecerá a la imagen de abajo.
Instalación del firmware:
Ejecutar el siguiente comando instalará el binario de MicroPython en la placa NodeMCU, una vez instalado este binario nos permitirá cargar nuestros programas de Python y comunicarnos con el ciclo de lectura, evaluación e impresión .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detectar 0 esp8266-20200911-v1.13.bin
El proceso se parecerá a la imagen de abajo,
Tenga en cuenta que en el momento de la instalación, el binario estaba en mi escritorio, así que tengo un CD en mi escritorio y ejecuto el comando.
Ahora que está hecho, es hora de comunicarse con la placa y hacer parpadear algunos LED.
Comunicarse con NodeMCU con PuTTY
Ahora comencemos nuestro primer programa Hello World usando PuTTY, PuTTY para hacerlo, necesitamos establecer el tipo de conexión como Serial, luego configuramos la línea Serial (en nuestro caso es COM6), y finalmente, configuramos la Velocidad en 115200 baudios.
Si todo se hace correctamente, aparecerá una ventana similar a la imagen de abajo, y podemos escribir fácilmente nuestro código en ella, generalmente funciona como una terminal iPython. Además, hemos ejecutado nuestro primer programa de hola mundo que es solo dos líneas simples, y una vez que hemos puesto nuestra declaración impresa, obtuvimos nuestra respuesta.
Carga de un código intermitente LED basado en Python usando Ampy
Acceder a MicroPython con la ayuda del terminal PuTTY es una buena manera de comunicarse con el módulo ESP, pero otra forma fácil es cargar el código a través de la herramienta Adafruit Ampy, para instalar ampy, simplemente podemos ejecutar un simple pip3 install adafruit- ampy y lo instalará en nuestra PC. El proceso se parecerá a la imagen de abajo.
Ahora, una vez que tenga esto, todavía necesitamos nuestra información sobre el puerto serie al que estamos conectados. En nuestro caso, es COM6. Ahora solo necesitamos escribir nuestro código LED Blink con MicroPython, para eso, hemos utilizado la guía proporcionada en el sitio web oficial de micro python
Con la ayuda de la guía, se crea el siguiente código.
desde el pin de importación de la máquina desde el tiempo de suspensión de importación LED = Pin (2, Pin.OUT) mientras que True: LED.value (no LED.value ()) sleep (0.5)
El código es muy simple. Primero, importamos la biblioteca Pin de la máquina. Clase de pin. A continuación, necesitamos importar la biblioteca de tiempo, que se usa para hacer una función de retardo. A continuación, configuramos Pin2 (que es el LED integrado adjunto al módulo ESP12E) como salida. A continuación, configuramos un bucle while donde encendemos y apagamos el LED con un retraso de 500ms.
Así es como carga el código en NodeMCU. Para hacer eso, necesita ejecutar el siguiente comando ampy , ampy --port COM6 poner main.py
Si el programa se ejecuta y corrige, verá un LED parpadeando como se muestra a continuación.
Nota: Mientras cargaba el código, configuré mi ubicación actual en mi escritorio, por lo que no necesité especificar una ruta completa para el archivo main.py si ese no es el caso, ya que necesita especificar la ruta completa para su Archivo.py.
A continuación, pasamos a obtener nuestros datos de temperatura y humedad del sensor DHT22.
MicroPython en ESP8266: obtener temperatura y humedad con DHT22
Esquema para interconectar DHT22 con NodeMCU:
El diagrama de circuito completo para este proyecto se puede encontrar a continuación. He usado fritzing para crear este circuito.
Como puede ver, el circuito es muy simple y se puede construir fácilmente en una placa de pruebas utilizando cables de puente. El circuito completo se puede alimentar usando el puerto micro-USB en NodeMCU. La configuración de mi hardware se muestra a continuación.
Código:
Es muy fácil obtener los datos de temperatura y humedad de un sensor DHT22 o DHT11 usando un MicroPython porque el firmware MicroPython que instalamos anteriormente viene con una biblioteca DHT incorporada.
1. Comenzamos nuestro código importando la biblioteca DHT y la biblioteca de pines de la clase de máquina.
importar dht de la máquina importar Pin
2. A continuación, creamos un objeto DHT que se refiere al pin en el que conectamos nuestro sensor.
sensor = dht.DHT22 (Pin (14))
3. Finalmente, para medir el valor del sensor, tenemos que usar los siguientes tres comandos.
sensor.measure () sensor.temperature () sensor.humedad ()
Para el código final, lo colocamos en un ciclo while e imprimimos los valores que marcan el final de nuestro código. Además, el sensor DHT22 necesita 2 segundos antes de poder leer cualquier dato, por lo que debemos agregar un retraso de 2 segundos.
desde la máquina importar Pin desde el tiempo importar dormir importar dht dht22 = dht.DHT22 (Pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperature:% 3.2f C'% temp) print ('Humedad:% 3.2f %%'% hum) excepto OSError como e: print ('No se pudieron leer los datos del sensor DHT22.')
Una vez que hayamos terminado de codificar, podemos cargar el código con la ayuda del comando ampy.
ampy --port COM6 poner main.py
Después de ejecutar el código correctamente, puede controlar los valores de temperatura y humedad en cualquier monitor en serie. He usado masilla y, como puede ver a continuación, pude recibir valores de temperatura y humedad en COM5.
Espero que hayas disfrutado del artículo y hayas aprendido algo útil. Si tiene alguna pregunta, puede dejarla en la sección de comentarios a continuación o utilizar nuestros foros para publicar otras preguntas técnicas.