🛠 Avoir une console série sur une carte sans pont USB (UART0)
Objetivos
Una placa RP2040 minimalista (Zero, clon de Pico sin puente) no tiene un chip USB-serial dedicado: el REPL de MicroPython o printf pasan por el USB nativo del RP2040. Pero cuando el USB está ocupado (modo dispositivo HID, alimentación por batería) o los pines USB no están soldados, la solución es el UART: el RP2040 posee dos UART enrutables a cualquier GPIO (hoja de datos RP2040). Vas a conectar un adaptador USB↔TTL y obtener una consola de depuración independiente.
Material
- 1 × placa RP2040 genérica
- 1 × adaptador USB↔UART TTL (FTDI Friend, CP2102, CH340…) ajustado a 3,3 V si es seleccionable — el RP2040 funciona con lógica de 3,3 V
- 3 × cables: GP0 (TX0) → RX del adaptador, GP1 (RX0) → TX, GND ↔ GND (¡las dos masas deben estar conectadas!)
- No conectes el VCC del adaptador al VSYS/3V3 de la placa si ya está alimentada por otro medio
Código completo
# main.py — REPL et print sur UART0 (GP0=TX, GP1=RX), 115200 bauds
from machine import UART, Pin
import time
# Sur le port rp2, l'UART0 matériel est déjà écouté par le REPL :
# un simple reset suffit souvent à obtenir le REPL sur GP0/GP1.
# Pour un flux applicatif dédié :
uart = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
uart.write('Carte RP2040 prete (UART0 115200 8N1)\r\n')
compteur = 0
while True:
compteur += 1
uart.write('tick %d\r\n' % compteur)
if uart.any: # données reçues du PC
data = uart.read
uart.write('recu: %s\r\n' % data.decode(errors='replace'))
time.sleep_ms(500)
Verificación esperada
En tu terminal serie (115200 8N1, picocom, PuTTY, Thonny), las líneas tick N se muestran en pantalla; un carácter tecleado se devuelve en eco. Abre luego el REPL de MicroPython en este UART (Ctrl-C): import machine funciona — tienes un shell completo sin USB. El REPL UART del puerto rp2 funciona por defecto a 115200 (Referencia rápida MicroPython RP2).
Errores frecuentes
- TX conectado a TX en lugar de cruzar: TX hacia RX, el adaptador escucha mientras la placa habla.
- Olvidar la masa común: nada, o caracteres parásitos.
- Adaptador a 5 V en un pin de 3,3 V: el RP2040 no tolera 5 V, verifica el nivel lógico antes de conectar — riesgo de daño.
- Puerto serie incorrecto en el PC: en Linux
ttyUSB0/ttyACM0, en Windows el puerto COM del adaptador (Administrador de dispositivos). - Confundir el UART de la aplicación y el REPL: ambos comparten UART0; si tu script monopoliza el UART, el REPL deja de responder — libera el bus (
uart.deinit). - Pines GP0/GP1 ya utilizados por tu montaje: el UART del RP2040 es mapeable a cualquier GPIO, elige otros pines (
UART(1, tx=Pin(4), rx=Pin(5))).
Otros tutoriales para esta placa
- Piloter la LED RGB embarquée WS2812 d'une carte RP2040 générique
- Jouer une mélodie avec un buzzer passif et le PWM
- Afficher sur un OLED I2C SSD1306 et déboguer le bus
- Logger sur carte microSD en SPI (mode carte)
- Interruptions GPIO et alarmes matérielles avec le Pico SDK
- Transformer la carte en clavier USB HID avec TinyUSB
Ejemplos de código para esta placa
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython