pont-usb-serial1.ino
Avant d'écrire un pilote, il faut voir ce que dit le module : ce pont recopie tout entre l'UART1 et l'USB, dans les deux sens — on peut donc aussi taper des commandes AT. Le grand classique de la mise au point GSM/GPS.
Matériel requis
Une Arduino Due (AT91SAM3X8E, ARM Cortex-M3 84 MHz) reliée par USB à son port « Programming ». Attention : logique 3,3 V, jamais 5 V sur les broches. 1 module série 3,3 V (GPS, SIM800/900 niveau adapté).
Branchement
TX module → 18 (RX1), RX module → 19 (TX1), masses communes ; alimenter le module séparément si pic de courant.
Fonctionnement
Deux boucles while recopient les octets dans chaque sens ; aucun tampon logiciel n'est nécessaire grâce au FIFO UART. Dans l'Arduino IDE, choisissez « Arduino Due (Programming Port) » puis Téléverser ; le moniteur série tourne à la vitesse choisie dans le code.
Pour aller plus loin
Ajoutez un commutateur de débit (76800 pour SIM800) ou filtrez les préfixes pour n'afficher que les trames utiles.
pont-usb-serial1.ino
// Pont Serial1 (GPS, GSM...) <-> USB : ce que dit le module s'affiche.
void setup() {
Serial.begin(9600); // port USB (Programming ou Native)
Serial1.begin(9600); // broches 19/18
Serial.println(F("Pont Serial1 <-> USB (9600)"));
}
void loop() {
while (Serial1.available()) {
Serial.write(Serial1.read()); // module -> moniteur
}
while (Serial.available()) {
Serial1.write(Serial.read()); // clavier -> module (commandes AT)
}
}