MicroPython para el ESP32 y Co. - Parte 1: Instalación y primeros programas Productos Código de descarga Insertar Iniciar sesión ¿Olvidó su contraseña? Regístrate ¡Gracias por tu calificación! ¡Gracias por tu reseña!

MicroPython para el ESP32 y Co. - Parte 1: Instalación y primeros programas Productos Código de descarga Insertar Iniciar sesión ¿Olvidó su contraseña? Regístrate ¡Gracias por tu calificación! ¡Gracias por tu reseña!

Por la Dra. Günter Spanner (Alemania) Python ha experimentado un enorme auge en los últimos años. Por último, pero no menos importante, varios sistemas de placa única como Raspberry Pi han contribuido a su popularidad, pero Python también se ha generalizado en otras áreas como la inteligencia artificial o el aprendizaje automático. Por lo tanto, es obvio usar también Python o la variante MicroPython para usar en microcontroladores.Este artículo tratará los conceptos básicos de MicroPython, incluidos los comandos y bibliotecas de programas más importantes. Para algunas aplicaciones de demostración pequeñas, usaremos un controlador ESP32, que debemos equipar con firmware que interprete los comandos de Python. Compilamos estos comandos utilizando un entorno de desarrollo que se ejecuta en una PC. Los comandos de Python se pueden enviar individualmente o como un programa completo desde la PC al controlador; esto funciona a través de USB, pero también a través de una red WLAN. ¡Pero primero lo primero!MicroPython para el ESP32 y Co. - Parte 1: Instalación y primeros programas Productos Descargar Código Insertar Iniciar sesión ¿Olvidó su contraseña? Registro ¡Gracias por su calificación! Gracias por ¡Tu calificación!

Entornos de programación y desarrollo

A diferencia del sistema Arduino, varios entornos de desarrollo (IDE: entorno de desarrollo integrado) están disponibles para trabajar con MicroPython. Los dos entornos de programación más comunes son actuales

1. μPyCraft

2. tonio

Además, Anaconda Navigator, que se usa principalmente en el campo de la inteligencia artificial, también se puede usar para programar controladores. Cada método, naturalmente, tiene ventajas y desventajas específicas. El IDE de μPyCraft solo ofrece una interfaz comparativamente simple. Funciona con elementos gráficos simples y recuerda a los sistemas operativos orientados a texto. Thonny, por otro lado, tiene una interfaz totalmente gráfica al estilo de Windows (Figura 1).

El IDE es muy popular entre los fabricantes, especialmente porque está disponible en Raspberry Pi bajo el sistema operativo Raspbian. Por lo tanto, muchos usuarios de Rasp Pi ya están muy familiarizados con Thonny. Thonny está disponible gratuitamente en Internet para los sistemas operativos más importantes como Windows, Mac OS X o Linux Ubuntu.

Para poder trabajar con Thonny, Python 3 debe estar instalado en la computadora de desarrollo. Si aún no es el caso, la instalación se puede realizar más tarde a través del sitio web correspondiente, Thonny puede luego instalarlo usted mismo a través de [1]. Para este propósito, se selecciona el sistema operativo apropiado en el sitio web en la parte superior derecha. Después de iniciar el archivo exe descargado, se ejecuta el proceso de instalación habitual. El IDE está entonces disponible para las primeras aplicaciones de Python.

Instalación del intérprete

A continuación, se cargará el firmware actual de MicroPython. Esto se puede encontrar en el sitio web oficial de MicroPython [3]. Hay varias opciones de controlador disponibles aquí. Este artículo se centrará en el ESP32 en particular. Por lo tanto, se debe descargar la última (última) versión para este tipo de controlador. Para hacer esto, haga clic en la imagen apropiada con el título Módulo ESP32 genérico en la página bajo Placas basadas en Espressif ESP. Varias versiones de firmware están disponibles en la página que ahora se abre. Cabe señalar que la versión más reciente generalmente tiene la adición "inestable". Esta opción es más adecuada para los desarrolladores del firmware del intérprete o para aquellos a quienes les gusta experimentar. Si desea trabajar con un sistema estable, debe usar el primera variante sin elegir la adición inestable, p.

GENÉRICO: esp32-idf3-20200902-v1.13.bin

Haga clic en el enlace correspondiente para descargar el firmware.

Ahora, la placa del controlador (por ejemplo, un ESP32 Pico-Kit, consulte el cuadro Piezas necesarias) se puede conectar a la PC a través de USB.

Luego se inicia el IDE de Thonny. El primer paso aquí es abrir el subelemento Seleccionar intérprete en el menú Ejecutar. Se abrirá la ventana de opciones de Thonny (Ilus. 2).

Se pueden abrir varias opciones en la pestaña Intérprete, incluidas las del ESP32. A continuación, seleccione el puerto USB en el que está activo el ESP32 en "Puerto". Alternativamente, puede utilizar la opción < Intentar detectar el puerto automáticamente > seleccionar. Sin embargo, esto no funciona de forma fiable en todos los casos.

El instalador ahora se inicia en la entrada Firmware. El puerto no se adopta automáticamente y debe introducirse de nuevo. Luego seleccione el firmware descargado arriba. El proceso de instalación comienza con Instalar. Después de cerrar las ventanas que todavía están abiertas, nada se interpone en el camino de la programación del ESP32 bajo MicroPython.

Bibliotecas

Trabajar con Python significa usar bibliotecas. Escribir todos los programas desde cero sería muy ineficiente en el mejor de los casos. El gran éxito de Python se basa en gran medida en las bibliotecas disponibles para él. Desafortunadamente, no todas las bibliotecas se pueden usar con los recursos limitados de un microcontrolador. Por lo tanto, se desarrolló una selección separada de bibliotecas para MicroPython. Muchos de estos ya están disponibles como bibliotecas estándar cuando descarga Thonny IDE.

Las dos librerías estándar principales en MicroPython son máquina y tiempo. Las librerías para el controlador están disponibles a través de la declaración de importación. Para hacer accesibles las funciones de la biblioteca, están disponibles las siguientes opciones, entre otras:

importar módulos

del nombre de importación del módulo

En el primer caso se incluye el módulo completo. En el segundo, solo las rutinas que se necesitan.El módulo de máquina contiene las funciones relacionadas con el hardware de un controlador específico. Por lo tanto, las funciones de este módulo permiten el acceso directo y completo al control de las unidades de hardware, como la CPU, los temporizadores, los buses, los pines de E/S, etc. Debe tenerse en cuenta que el uso inadecuado de este módulo puede provocar fallas en el funcionamiento, fallas y en casos extremos, incluso pueden producirse daños en el hardware.

La clase Pin es una de las funciones más importantes en el módulo de máquina. Un objeto Pin se utiliza para controlar los pines de entrada/salida. Los objetos pin generalmente se asignan a un pin físico en el controlador. Esto significa que los voltajes de salida se pueden controlar o los niveles de entrada se pueden leer.

La clase Pin tiene métodos para establecer el modo pin, como IN y OUT, que se pueden usar para definir un pin como entrada o salida.

El módulo de tiempo proporciona varias funciones relacionadas con el tiempo. La clase de suspensión de este módulo suspende la ejecución del programa actual durante el número de segundos especificado. El argumento también puede ser un número de punto flotante para especificar un tiempo de sueño exacto a la fracción de segundo más cercana. Las instrucciones

del pin de importación de la máquina

desde el tiempo de importación del sueño

proporciona las dos funciones pin y sleep. Esto permite, por un lado, direccionar los pines de puerto individuales de un controlador y, por otro lado, es posible un control de tiempo simple. Acerca de la instrucción

led = Pin(2, Pin.SALIDA)

Se crea un objeto LED que se asigna al pin de E/S n.° 2 y lo define como el pin de salida. Ahora se pueden asignar varios valores a este objeto. Así que el objeto es sobre

led.valor(1)

por ejemplo, asignó el valor 1. Esto significa que el pin 2 asociado ahora tiene un alto potencial, es decir, 3,3 V en el caso del ESP32.

La consola REPL

Para hacer visible el estado de un puerto, puede conectar allí un LED con una resistencia en serie. La Figura 3 también muestra la conexión de una pantalla OLED, que solo se usa a continuación.

El puerto y, por lo tanto, el LED ahora se pueden controlar fácilmente a través de la llamada consola REPL. REPL significa "Read Evaluate Print Loop". Se puede acceder al ESP32 directamente a través de este indicador interactivo de MicroPython. Por lo tanto, usar REPL es una manera muy fácil de probar declaraciones o ejecutar comandos.En Thonny IDE, la consola REPL se llama "Shell" y está disponible en la ventana inferior derecha. Las instrucciones de la última sección se pueden ingresar directamente aquí (Figura 4).

Después de ejecutar la última instrucción, el LED debería encenderse. El LED se puede volver a apagar con led.value(0).

La consola REPL tiene algunas características interesantes que pueden ser muy útiles cuando se trabaja con MicroPython. Por ejemplo, se guardan las líneas de texto ingresadas previamente. Las líneas ingresadas anteriormente se pueden recuperar usando las teclas de flecha hacia arriba y hacia abajo.Otra característica útil es la finalización de pestañas. Al presionar la tecla de tabulación, se completará automáticamente la palabra escrita actualmente. Esto también se puede usar para obtener información sobre funciones y métodos de un módulo u objeto. B. la adición a "máquina", siempre que el módulo de la máquina se haya importado previamente como se muestra arriba. Si luego ingresa el punto (.) y presiona la tecla tabulador nuevamente, aparece una lista completa de todas las funciones disponibles en el módulo de la máquina (Figura 5).

Esto hace innecesario buscar instrucciones, objetos o métodos en la documentación en la mayoría de los casos.

Acceso WLAN a través de WebREPL

Una de las mejores cosas del ESP32 es su excelente conectividad WiFi. Entonces, ¿qué podría ser más obvio que hacer que la consola REPL esté disponible de forma inalámbrica a través de WLAN? La interfaz WebREPL se puede usar para esto. El primer paso para usar WebREPL es asegurarse de que esté disponible y habilitado en el ESP32. WebREPL no está habilitado de forma predeterminada y debe habilitarse con un comando único

importar webrepl_setup

se puede encender a través de la interfaz serial. A continuación, aparece un mensaje para habilitar o deshabilitar la función y establecer una contraseña. A continuación, se debe realizar un reinicio.

Para usar WebREPL en una red WiFi, el ESP32 primero debe estar conectado a la red. Para ello se deben ejecutar los siguientes comandos en el serial REPL:

importar red

wlan = red.WLAN(red.STA_IF)

wlan.activo(Verdadero)

wlan.connect('ssid', 'contraseña')

Por supuesto, se deben utilizar los datos de acceso correctos para la WLAN existente para los marcadores de posición ssid y contraseña. La instrucción

wlan.ifconfig()

luego proporciona los datos de IP con los que se registró el ESP en la red (imagen 6).

Acerca de

importar respuesta web

webrepl.inicio()

El cliente WebREPL está activado. Luego, la dirección se puede mostrar en un navegador

http://micropython.org/webrepl/#xxx.xxx.xxx.xxx:8266

son llamados. La IP determinada a través de wlan.ifconfig() debe usarse para xxx.xxx.xxx.xxx. A continuación, puede iniciar sesión a través de la pestaña Conectar con la contraseña especificada anteriormente en la configuración de WebREPL.Después de iniciar WebREPL, la consola puede estar en modo "RAW REPL". Esto se utiliza para la entrada directa de líneas de comando a través de "copiar y pegar". Puede ser necesario volver al modo normal con CTRL-B. Luego, las instrucciones se pueden ingresar como de costumbre. De esta manera, ahora puede controlar el ESP de forma completamente inalámbrica. Incluso las funciones básicas de automatización del hogar se pueden implementar utilizando funciones de conmutación simples (Figura 7).

Si se instala un sistema de archivos adecuado en el ESP32, incluso las actualizaciones de software se pueden realizar de forma inalámbrica, es decir, OTA (Over The Air). Al trabajar con WebREPL, debe tenerse en cuenta que todavía se trata de una "característica experimental" que aún no funciona de manera absolutamente confiable en todas las situaciones.

Control de programa

La consola REPL o WebREPL es ideal para realizar pruebas. La ventana del editor de arriba está disponible para secuencias de programas clásicas. Allí, por ejemplo, se puede crear el siguiente programa para un control de avance automático (luz nocturna, iluminación de escaleras) (Figura 8).

Después de ingresar e iniciar el programa con el ícono de inicio (flecha blanca en un círculo verde), se le pedirá que guarde el programa. Aquí se selecciona la opción Dispositivo MicroPython y se ingresa un nombre de programa (por ejemplo, Automatic_LED) y se guarda el programa. A continuación, el LED se enciende durante 3 segundos y luego se apaga automáticamente. El programa ahora se puede iniciar directamente presionando el botón de inicio nuevamente.

Para implementar el programa de demostración clásico (un LED parpadeante), solo falta la instrucción while. Esto asegura que un comando o un bloque de comandos se ejecute repetidamente. El caso especial while True: conduce a una repetición sin fin, es decir, un parpadeo permanente del LED:

del pin de importación de la máquina

desde el tiempo de importación del sueño

led = Pin(2, Pin.SALIDA)

mientras sea verdadero:

led.encendido()

dormir(0.5)

led.apagado()

dormir(0.5)

Tenga en cuenta que la instrucción while debe terminar con dos puntos. De acuerdo con la convención general de Python, el siguiente bloque de funciones debe marcarse con sangría sobre espacios. Sin embargo, Thonny tiene sangría automática. Tan pronto como se presiona la tecla de retorno después de los dos puntos, el cursor ya aparece en una posición sangrada en la línea siguiente. Por supuesto, la finalización de TAB también está disponible en el editor de programas. Los programas en ejecución se pueden terminar con CTRL-C.

MicroPython en pocas palabras

Aunque MicroPython prospera con sus bibliotecas, se requiere cierta comprensión de las declaraciones elementales para comprender o desarrollar programas. A continuación, se presentan brevemente las instrucciones más importantes de MicroPython. Los comentarios simples se introducen con el carácter #. Comienzan con # y terminan con la nueva línea:

>>> print("hola ESP32") # esto es un comentario

hola ESP32

Un comentario se ignora en el flujo del programa porque solo pretende proporcionar información para el desarrollador del programa. La información se puede enviar al terminal usando la instrucción print(), que también se usa aquí. print() se puede ejecutar directamente en la ventana del terminal, y la declaración se usa en programas para generar información basada en texto. Como ya quedó claro con el programa de parpadeo de LED, en MicroPython los diferentes bloques se indican mediante sangría. Esto significa que los corchetes ("{}") o similares ya no son necesarios. La ventaja de este método es que estás, por así decirlo, forzado a una programación estructurada hasta cierto punto. Las variables son particularmente fáciles de crear en Python. No es necesario especificar un tipo de datos. Las variables también se pueden usar directamente en la consola:MicroPython para el ESP32 y Co. - Parte 1: Instalación y primeros programas Productos Descargar Código Insertar Iniciar sesión ¿Olvidó su contraseña? Registro ¡Gracias por su calificación! Gracias por ¡Tu calificación!

>>> un=17

>>> b=12

>>> imprimir (a * b)

204

En MicroPython, los operadores aritméticos tienen los significados conocidos de las matemáticas. Además de la suma, la resta, la multiplicación y la división, están disponibles los operadores // para la división de enteros, % para el módulo (es decir, el resto de la división) y ** para los exponentes.

Además, las declaraciones habituales de bifurcación y bucle están disponibles en MicroPython. En una rama, una condición se define en el programa utilizando las palabras clave si y si no. Dependiendo de si esta condición es verdadera o falsa, el programa continúa en diferentes puntos. Las sentencias else solo se ejecutan si la sentencia if es falsa:

si es verdadero:

# bloque 01

imprimir("Verdadero")

más:

# bloque 02

imprimir("Falso")

Los bucles se utilizan para repetir declaraciones. La ejecución continúa hasta que se cumple una condición específica. Hay dos variantes disponibles:

• Bucles 'while'

• Bucles 'for'

Si, por ejemplo, los números del 1 al 9 se van a enviar a la consola, se puede usar el siguiente bucle while:

número=1

mientras número<10:

imprimir(número)

número=número+1

El código que se repetirá se indica mediante la sangría. La tarea también se puede hacer con un bucle for:

para el número en el rango (1, 10):

imprimir(número)

Señales de socorro automáticas

Con las estructuras de programa ahora conocidas, ya se puede implementar una primera aplicación práctica. El programa crea una baliza SOS automática que se puede utilizar en caso de peligro en el mar o en la montaña:

del pin de importación de la máquina

desde el tiempo de importación del sueño

led=pin(2,pin.SALIDA)

mientras sea verdadero:

para n en el rango (3):

led.valor(1)

dormir(.1)

led.valor(0)

dormir(.5)

dormir(1)

para n en el rango (3):

led.valor(1)

dormir(.4)

led.valor(0)

dormir(.5)

dormir(1)

para n en el rango (3):

led.valor(1)

dormir(.1)

led.valor(0)

dormir(.5)

dormir(2)

La pantalla OLED: una pantalla pequeña

Incluso con un solo LED, se puede generar información significativa si, por ejemplo, se usa el código Morse, como en la baliza SOS. Por supuesto, la salida de datos a través de una pantalla OLED está mucho más actualizada. Un tipo común son las pantallas controladas por un controlador de pantalla SSD1306. Utilizamos una unidad de pantalla que tiene una resolución de 128 x 64 píxeles con un tamaño de solo 0,96 pulgadas (aprox. 2,5 cm). MicroPython ya incluye la biblioteca para pantallas SSD1306 como estándar. Esto permite mostrar texto y datos numéricos, así como gráficos simples.Las versiones más simples de los módulos SSD1306 solo tienen cuatro pines. Esto es suficiente para activar la pantalla a través del llamado I

2

Controla el C-Bus. La conexión de la pantalla ya se muestra en la figura 3. Las conexiones requeridas se resumen nuevamente en forma tabular a continuación:

La secuencia de comandos del Listado 1 imprime un mensaje de texto y un elemento gráfico simple en forma de marco en la pantalla (consulte la Figura 3).

La biblioteca asociada está disponible como biblioteca estándar (ssd1306.py en la descarga a continuación) y se puede cargar por separado en la placa. La declaración pin para el I

2

C-Bus se realiza a través de:

i2c = I2C (-1, scl = clavija (22), sda = clavija (21))

El parámetro "-1" indica que el módulo utilizado no tiene pines de reinicio ni de interrupción. El número de píxeles del módulo conectado es

oled = SSD1306_I2C(128, 64, i2c)

capturado. La pantalla ahora está lista para funcionar. La información se envía a la pantalla a través de la función text(). La pantalla se actualiza con el método show(). La función text() acepta los siguientes argumentos:

• mensaje (tipo Cadena)

• Posición X y posición Y del cuadro de texto en unidades de píxeles

• Color de texto opcional: 0 = negro (oscuro) y 1 = blanco (claro)

El método show() hace que los cambios sean visibles en la pantalla. Por ejemplo, el método rect() permite la representación gráfica de un rectángulo. Acepta los siguientes argumentos:

• Coordenada X/Y de la esquina inferior izquierda del rectángulo

• Coordenada Y/Y de la esquina superior derecha del rectángulo

• Color de píxel: 0 = negro, 1 = blanco

La instrucción

oled.rect(5, 5, 116, 52, 1)

Entonces

evoca un marco rectangular en la pantalla. Esto significa que nada se interpone en el uso de la pantalla para generar información, desde texto simple hasta la visualización de datos de sensores complejos.

Resumen y perspectiva

Con MicroPython, está disponible un lenguaje de programación moderno y potente. Los proyectos más complejos también se pueden implementar rápida y fácilmente utilizando bibliotecas. Después de la instalación del IDE asociado y algunos ejemplos de aplicaciones simples que se presentaron en este primer artículo, se explican más aspectos de MicroPython en un segundo artículo. A continuación, se presentará una pantalla de matriz de puntos LED de gran formato como aplicación práctica.

Puede encontrar más información sobre MicroPython, el controlador ESP32 y los ejemplos presentados aquí en el libro "MicroPython para microcontroladores".

Más información sobre MicroPython

¿Quiere obtener más información sobre temas como ESP32 y MicroPython? Suscríbete a Elektor y no te pierdas ningún artículo, proyecto DIY o tutorial técnico.