domingo, 2 de junio de 2024

ESP32 Micropython y Thonny IDE

Muy buenas a todos y todas enamorados de los microcontroladores!!!

El ESP32 es un microcontrolador potente y versátil con módulos WiFi y Bluetooth integrados de bajo costo y alta potencia desarrollado por la compañía china Espressif.

Es muy utilizado en el internet de las cosas (IOT) como domótica, robótica, estaciones meteorológicas y una amplia gama de proyectos y aplicaciones que, sobre todo, necesiten un bajo consumo de energía.

Es fácil de programar ya que se programa con el puerto USB, y cuenta con una gran comunidad de usuarios a sus espaldas.

Podríamos decir que 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 coste, 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 WROOM32:

  • 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: 2
  • 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 una terminal linux.

El primer comando es para borrar la memoria flash:


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

El segundo 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.bin" 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 están 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 que hemos instalado el firmware 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.


  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 para programar e implementar nuevas opciones ya que muchas de las bibliotecas que usualmente se usan en Python son las mismas para MicroPython.


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.

Os dejamos algunos enlaces a temas relacionados del blog.

Un Saludos a todos y todas!!!

No hay comentarios :

Publicar un comentario