🛠 Pont Serial vers Serial1 : passerelle USB vers TTL
Objetivos
Construir un puente serie: todo lo que llega al puerto USB (Serial, CDC) se copia en el UART TTL Serial1 (pines 0/1), y viceversa. Útil para comunicarse con un GPS, un módulo GSM u otro microcontrolador de 5 V desde el Monitor serie.
Material
- 1 Arduino Micro + cable micro-USB
- 1 módulo UART TTL (GPS, convertidor USB-TTL...) conectado: pin 0 (RX Micro) al TX del módulo, pin 1 (TX Micro) al RX del módulo, GND común
- Atención: lógica de 5 V en los pines del Micro
Código completo
// Passerelle bidirectionnelle USB CDC (Serial) <-> UART TTL (Serial1, broches 0/1).
// Memo bug du noyau AVR #267 : sur le port USB 32U4, Serial.available
// ne remonte que 0 ou 1 octet a la fois ; lire en continu, pas par blocs.
void setup {
Serial.begin(9600); // USB CDC : ce que voit le Moniteur serie
Serial1.begin(9600); // UART materiel sur broches 0 (RX) / 1 (TX)
while (!Serial) {} // attendre l'enumeration USB
Serial.println("Passerelle active : USB <-> broches 0/1");
}
void loop {
while (Serial.available > 0) // hote USB -> module TTL
Serial1.write(Serial.read);
while (Serial1.available > 0) // module TTL -> Moniteur serie
Serial.write(Serial1.read);
}
Verificación esperada
Lo que escriba en el Monitor serie sale por el pin 1 (TX) y se muestra en el terminal conectado al módulo; lo que el módulo envía al pin 0 (RX) aparece en el Monitor. Un bucle de prueba del pin 1 al pin 0 (cable directo) hace aparecer cada carácter tecleado.
Errores frecuentes
- Creer que el Monitor serie ve Serial1: solo ve el CDC USB; de ahí este puente.
- Invertir RX/TX: conectar RX Micro (0) al TX del módulo, nunca TX a TX.
- Olvidar el GND común entre el módulo y el Micro: no pasa nada.
- Trabajar con un módulo de 3,3 V no tolerante a 5 V: el Micro funciona con lógica de 5 V, es necesario un convertidor de nivel.
- Confiar en available para conocer el tamaño de una trama USB: el bug #267 del núcleo AVR limita available a 0 o 1 en el puerto CDC; procesar los bytes uno a uno.
Otros tutoriales para esta placa
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Piloter un servo moteur avec le PWM et un potentiomètre
- Sortir des sentiers : registres AVR et interruption externe
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino