Micropython es una implementación ligera de Python 3 optimizada para correr en microcontroladores y sistemas embebidos con recursos limitados.
Introducción
Instalar Micropython en un dispositivo
Flashea el firmware de Micropython en un dispositivo (como el ESP32 o ESP8266) utilizando herramientas como esptool.py
:
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 firmware.bin
Verificación de la instalación
Conectar el microcontrolador a tu PC y utilizar un terminal serial como PuTTY o Minicom para verificar la instalación.
screen /dev/ttyUSB0 115200
Leer la versión
Para comprobar la versión instalada de MicroPython.
import sys
print(sys.version)
Comandos básicos en REPL
Iniciar REPL
Una vez conectado, inicia la terminal interactiva REPL (Read Eval Print Loop) con la siguiente línea:
screen /dev/ttyUSB0 115200
Salir de REPL
Para salir de la REPL, presiona Ctrl+A
, seguido de Ctrl+D
.
Ejecutar un comando
Puedes ejecutar comandos directamente:
>>> print("Hola, Micropython")
Ejecutar un script
Para ejecutar un script en MicroPython, primero debes subirlo al dispositivo, y luego usar el siguiente comando en el REPL (Read-Eval-Print Loop).
import main
Gestión de archivos
Listar archivos en el sistema
Ver los archivos almacenados en el microcontrolador.
import os
os.listdir()
Subir un archivo a Micropython
Puedes utilizar ampy
para subir archivos desde tu computadora.
ampy --port /dev/ttyUSB0 put mi_script.py
Crear un archivo
Crear un archivo y escribir contenido en él.
with open('archivo.txt', 'w') as f:
f.write('Hola, MicroPython!')
Leer un archivo
Leer el contenido de un archivo.
with open('archivo.txt', 'r') as f:
print(f.read())
Eliminar un archivo
Elimina un archivo específico:
os.remove('mi_script.py')
Control de hardware
GPIO (Entrada/Salida)
Salidas digitales
Para configurar un pin de salida, como encender un LED en el pin 2:
from machine import Pin
led = Pin(2, Pin.OUT)
led.value(1) # Encender
led.value(0) # Apagar
Entradas digitales
Configura un pin como entrada, por ejemplo, para leer el estado de un botón.
boton = Pin(4, Pin.IN, Pin.PULL_UP)
estado_boton = boton.value() # Leer valor del botón
Generar una señal PWM
Usa PWM (Modulación por Ancho de Pulso) para controlar dispositivos como motores o la intensidad de un LED.
from machine import Pin, PWM
pwm = PWM(Pin(15))
pwm.freq(500) # Frecuencia de 500Hz
pwm.duty(512) # 50% ciclo de trabajo
Periféricos
UART (Comunicación serie)
Inicializar comunicación UART
Configura un puerto UART para comunicación en serie.
from machine import UART
uart = UART(1, baudrate=9600, tx=17, rx=16)
uart.write('Hola, UART!')
Leer datos de UART
data = uart.read(10) # Leer hasta 10 bytes
I2C
Inicializar la comunicación I2C
Configura los pines I2C y realiza una comunicación con sensores o pantallas.
from machine import I2C, Pin
i2c = I2C(scl=Pin(22), sda=Pin(21))
dispositivos = i2c.scan() # Buscar dispositivos conectados
Leer y escribir en un dispositivo I2C
Leer desde un dispositivo I2C:
data = i2c.readfrom(0x3C, 2) # Leer 2 bytes del dispositivo con dirección 0x3C
Escribir datos:
i2c.writeto(0x3C, b'\x01\x02') # Enviar 2 bytes
Manipulación de datos
Conversión de tipos
Puedes convertir entre tipos de datos, como enteros y cadenas de texto.
numero = int("123") # Cadena a entero
texto = str(123) # Entero a cadena
Formateo de cadenas
Utiliza el formato de cadenas de Python para imprimir datos de forma personalizada.
edad = 21
print("Tengo {} años".format(edad))
Trabajar con listas
Micropython soporta operaciones con listas, como en Python.
mi_lista = [1, 2, 3]
mi_lista.append(4) # Añadir un elemento
mi_lista.remove(2) # Eliminar un elemento
Conexión a Internet
Conectar a Wi-Fi
Conectar a una red Wi-Fi.
import network
ssid = 'tu_ssid'
password = 'tu_contraseña'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
print('Conectado a', ssid)
print('Dirección IP:', wlan.ifconfig()[0])
Enviar datos a un servidor HTTP
Enviar una solicitud GET a un servidor.
import urequests
response = urequests.get('http://tu-api.com/datos')
print(response.text)
Depuración
Imprimir en consola
Usar print
para depurar y ver valores en tiempo de ejecución.
print("El valor del LED es:", led.value())
Manejo de excepciones
Manejo básico de excepciones.
try:
# Código que puede generar una excepción
valor = 10 / 0
except ZeroDivisionError:
print("Error: División por cero")
Comprobar memoria disponible
Utiliza gc
para verificar la memoria disponible y limpiar la basura acumulada.
import gc
gc.collect() # Forzar recolección de basura
memoria_libre = gc.mem_free() # Ver memoria disponible