🛠 Pont série SoC ↔ MCU : le tunnel x86 vers ATmega32U4
Objetivos
Implementar el motivo central de la LattePanda Alpha: el puente serie entre el PC x86 (Core m3-7Y30) y su propio coprocesador ATmega32U4, conectados mediante un USB interno invisible desde el exterior. El MCU emite tramas de medición en Serial, y un script Python en el host las lee línea por línea. Es exactamente el esquema del tutorial oficial «python_arduino_bridge» de DFRobot, sin Firmata.
Material
- LattePanda Alpha (Windows o Linux) + fuente de alimentación conforme de 12 V/3 A
- IDE de Arduino (lado MCU) y Python 3 con pyserial en el host:
pip install pyserial - En Linux: añadir el usuario al grupo
dialout(sudo usermod -aG dialout $USER, luego reconectarse) - Opcionalmente, un potenciómetro entre 5 V, A0 y GND para ver variar los valores (referencia ADC de 5 V implícita en Leonardo)
Código completo
Lado del firmware (IDE de Arduino, tarjeta «Arduino Leonardo»):
// stream_analog.ino — envoie A0 au PC hôte à 10 Hz
void setup { Serial.begin(9600); }
void loop {
Serial.println(analogRead(A0)); // valeur ADC 10 bits : 0..1023
delay(100);
}
Lado del host (en la propia Alpha, Windows o cualquier distribución Linux):
# host_reader.py — pas besoin de Firmata, tramage série simple
import serial # pip install pyserial
# Windows : 'COM5' | Linux : '/dev/ttyACM0' (utilisateur dans le groupe 'dialout')
with serial.Serial('COM5', 9600, timeout=1) as ser:
for line in ser:
try:
raw = int(line.strip)
print(f'ADC={raw} ({raw * 5.0 / 1023:.2f} V en supposant une référence 5 V)')
except ValueError:
pass # ignorer les lignes partielles au démarrage
Verificación esperada
La terminal del host muestra aproximadamente 10 líneas por segundo: ADC=0 (0.00 V) en reposo, y valores que suben hacia 1023 si se cablea un potenciómetro en A0. Ctrl+C detiene el script sin tocar el firmware, que continúa emitiendo de forma autónoma.
Errores frecuentes
- Puerto incorrecto: en Windows, verificar el número COM en el administrador de dispositivos; en Linux,
ls /dev/ttyACM*. - Líneas incompletas en el primer byte tras abrir el puerto: el
try/except ValueErrores indispensable. - Dos programas conectados al mismo puerto (monitor serie del IDE abierto en paralelo al script): el script deja de recibir datos.
- Olvidar el
delay(100)en el lado del MCU: el host se satura y la visualización se vuelve ilegible.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton.pyPythonservo.pyPythonanalogique.pyPythonrespiration.pyPythonneopixel.pyPython