🛠 Pont Serial vers Serial1 : passerelle USB vers TTL
Objectifs
Construire une passerelle série : tout ce qui arrive sur le port USB (Serial, CDC) est recopié sur l'UART TTL Serial1 (broches 0/1), et inversement. Utile pour dialoguer avec un GPS, un module GSM ou un autre microcontrôleur 5 V depuis le Moniteur série.
Matériel
- 1 Arduino Micro + câble micro-USB
- 1 module UART TTL (GPS, convertisseur USB-TTL...) relié : broche 0 (RX Micro) vers TX module, broche 1 (TX Micro) vers RX module, GND commun
- Attention : logique 5 V sur les broches du Micro
Code complet
// 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 série
Serial1.begin(9600); // UART matériel 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 série
Serial.write(Serial1.read);
}
Vérification attendue
Ce que vous tapez dans le Moniteur série sort sur la broche 1 (TX) et s'affiche sur le terminal relié au module ; ce que le module envoie sur la broche 0 (RX) apparaît dans le Moniteur. Une boucle de test broche 1 vers broche 0 (fil direct) fait apparaître chaque caractère tapé.
Erreurs fréquentes
- Croire que le Moniteur série voit Serial1 : il ne voit que le CDC USB ; d'où ce pont.
- Inverser RX/TX : relier RX Micro (0) au TX du module, jamais TX à TX.
- Oublier GND commun entre le module et le Micro : rien ne passe.
- Travailler avec un module 3,3 V non tolérant 5 V : le Micro est en logique 5 V, un convertisseur de niveau est nécessaire.
- Compter sur available pour connaître la taille d'une trame USB : le bug #267 du noyau AVR limite available à 0 ou 1 sur le port CDC ; traiter les octets un par un.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino