domingo, 2 de junio de 2024

ESP32 Micropython y Thonny IDE

El ESP32 es un microcontrolador muy potente y versátil con módulos WiFi y Bluetooth integrados de bajo costo y alta potencia desarrollado por la compañía china Espressif
Muy utilizado en el internet de las cosas, domótica, robótica y una amplia gama de proyectos y aplicaciones, sobre todo, si son aplicaciones que necesiten un bajo consumo de energía. 
Es fácil de programar y cuenta con una gran comunidad a sus espaldas.
Es el sucesor del más que famoso ESP8266 el cual es mono núcleo y no cuenta con comunicación bluetooth. En una de las cosas que si se parecen es en su bajo costo, se pueden encontrar desde unos 3€ aproximadamente.

A día de hoy, en 2024, existen varias series y modelos del microcontrolador ESP32, cada uno con características y enfoques específicos pero en este articulo vamos a centrarnos en el modelo WROOM32.

Especificaciones técnicas de microcontrolador ESP32:

  • Arquitectura: Xtensa Dual-Core 32-bit LX6.
  • Frecuencia CPU: Hasta 240MHz.
  • RAM total disponible: 528KB (parte de ella esta reservada para el sistema).
  • BootROM: 448KB.
  • FlashROM interna: No. 
  • FlashROM externa: código y datos, vía SPI Flash; tamaño normal 4MB 
  • GPIO: 34 (los puertos GPIOs están multiplexados con otras funciones, incluidas FlashROM externa, UART, etc.) 
  • UART: 3 RX/TX UART (no hardware handshaking), one TX-only UART 
  • SPI: 4 interfaces SPI (una usada por FlashROM) 
  • I2C: 2 I2C (implementación bitbang disponible en cualquier pin) 
  • I2S:
  • ADC: 12-bit SAR ADC hasta 18 canales
  • DAC: 2 8-bit DACs 
  • RMT: 8 Canales que permiten una transmisión/recepción precisa del pulso. 
  • Programming: Usando el gestor de arranque BootROM desde UART: debido al FlashROM externo y al gestor de arranque BootROM siempre disponible, el ESP32 no se puede bloquear.



 En este caso vamos a instalar el firmware en el módulo ESP32 WROOM-32. Lo podemos descargar desde la web microython.org  y seleccionamos la placa en cuestión "ESP32/WROOM". 


Una vez tenemos el firmware descargado, tenemos que pasar el archivo .bin a la placa ESP32. 
Para este proceso usaremos esptool.py. Puedes descargar esptool.py aquí. Para instalar el firmware usaremos varios comandos desde el terminal linux. El primero es para borrar la memoria flash:

python3 -m esptool --chip esp32 --port /dev/ttyUSB0 erase_flash 

y el siguiente es para cargar el archivo .bin en la memoria Flash del microcontrolador:
     
python3 -m esptool --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 x.bin 

donde "x" sera la ruta del archivo como por ejemplo /home/usuario/Descargas/ESP32_GENERIC-20240222-v1.22.2.bin 



Programando con Micropython: 


 Al contrario que la plataforma Arduino, basada en C++, micropython es una implementación de Python. Es decir es la misma que se utiliza en cualquier programa creado con python. Esto hace que su sintaxis sea mas legibles y su curva de aprendizaje más sencilla gracias a la gran cantidad de bibliotecas disponibles. Además es un lenguaje apto tanto para personas que estan empezando en la programación de microcontroladores tanto para programadores con más experiencia. Eso si, al no tener tanta trayectoria su comunidad no es tan grande como la de Arduino. 

 Una vez tenemos el firmware instalado tenemos que usar un programa para poder comunicarnos con el chip. Para este proceso existen diferentes IDE's (Integrated Development Environment) que nos facilitan el proceso de pasar los archivos al microcontrolador. Entre estas posibilidades nos encontramos con programas como: 

Thonny lo podemos descargar desde los repositorios con: sudo apt install thonny
Con Thonny instalado ya tenemos todo lo necesario para programar el microcontrolador. 

Entre las principales características de Thonny encontramos:

  • Interfaz intuitiva: Cuenta con una interfaz gráfica simple y clara, diseñada para facilitar la comprensión y el uso por parte de usuarios principiantes.
  • Paso a paso: Permite ejecutar el código línea por línea, lo que ayuda a visualizar el flujo del programa y comprender mejor cómo funciona.
  • Depuración visual: Ofrece herramientas de depuración visual que permiten identificar y corregir errores en el código de manera más sencilla.
  • Modo "paso atrás": Permite retroceder en la ejecución del programa para analizar el comportamiento en pasos previos.
  • Variables paso a paso: Muestra el valor de las variables en cada línea de código, lo que facilita comprender su comportamiento durante la ejecución del programa.
  • Ejercicios y tutoriales integrados: Incluye una serie de ejercicios y tutoriales interactivos para guiar a los usuarios en el aprendizaje de Python.
  • Extensible: Thonny es extensible mediante plugins, lo que le permite añadir nuevas funcionalidades.
  • Soporte para múltiples plataformas: Está disponible para sistemas operativos Windows, macOS y Linux.

Un programa de prueba el típico "blink" para el LED que viene en placa. 
Parpadeo LED:

  import machine
  import utime

  led = machine.Pin(2, machine.Pin.OUT)
  
  while True:
  	led.On()
  	utime.sleep(1)
  	led.Off()
  	utime.sleep(1)
 


 Una vez lo tenemos todo instalado es muy cómodo de programar e implementar nuevas opciones ya que muchas de las bibliotecas que usualmente se usan en Python son las mismas para MicroPython.


Conclusión: 


En conclusión MicroPython es una herramienta versátil y poderosa que puede usarse en una amplia gama de aplicaciones en una gran cantidad de microcontroladores. Su facilidad de uso y legibilidad lo hacen ideal tanto para principiantes como aficionados e incluso profesionales. Sin duda, MicroPython es un lugar excelente para comenzar en el mundo de los microcontroladores.


Saludos!!!

No hay comentarios :

Publicar un comentario