pont-uart.ino

Arduino Mega 2560 (Rev3) · Fichier : pont-uart.ino · Langage : Arduino · Usage : Relayer deux appareils série entre eux grâce aux UART multiples

L'ATmega2560 dispose de quatre UART matériels : idéal pour dialoguer avec un GPS, un module GSM ou un second microcontrôleur sans sacrifier le port USB. Le pont recopie tout entre UART1 et UART2.

Matériel requis

Une Arduino Mega 2560 (ATmega2560, 16 MHz, 5 V) : 54 E/S numériques, 15 PWM, 16 entrées analogiques, 4 UART matériels. 2 appareils série 5 V (ex. GPS TTL + second Arduino).

Branchement

Appareil 1 sur RX1=19/TX1=18, appareil 2 sur RX2=17/TX2=16 (croiser RX/TX), masses communes.

Fonctionnement

Chaque octet lu sur un port est écrit sur l'autre, avec copie sur l'USB pour observer les échanges en direct. Dans l'Arduino IDE, choisissez « Arduino Mega 2560 » et le port, puis Téléverser. PWM sur 2-13 et 44-46 ; UART1=18/19, UART2=16/17, UART3=14/15 ; SPI sur 50-53.

Pour aller plus loin

Filtrez les trames NMEA du GPS (préfixe $GPGGA) au lieu de tout recopier, pour un traceur de position.

pont-uart.ino

// Pont serie entre Serial1 (broches 19/18) et Serial2 (17/16).
// Exemple : GPS sur UART1 -> moniteur, et module sur UART2.

void setup() {
  Serial.begin(9600);   // USB (debug)
  Serial1.begin(9600);  // UART1: RX1=19, TX1=18
  Serial2.begin(9600);  // UART2: RX2=17, TX2=16
  Serial.println(F("Pont UART1 <-> UART2 actif"));
}

void loop() {
  if (Serial1.available()) {
    char c = Serial1.read();
    Serial2.write(c);   // appareil 1 -> appareil 2
    Serial.write(c);    // copie vers le moniteur
  }
  if (Serial2.available()) {
    char c = Serial2.read();
    Serial1.write(c);   // appareil 2 -> appareil 1
  }
}

← Retour à la fiche