🛠 Passerelle série sur les 4 UART matériels

Arduino Mega 2560 (Rev3) · intermediaire · Schéma : IMG-mega-2560-intermediaire-2-passerelle-4-uart.svg — Arduino Mega 2560 reliant le PC (USB/Serial), un module GPS sur Serial1 (19/18), un module sur Serial2 (17/16) et un bus RS-485 sur Serial3 (15/14)

Objectifs

Réaliser le montage signature de la Mega 2560 : parler à quatre appareils série en même temps grâce à ses 4 UART matériels — ce qu'un Uno ne peut pas faire (une seule UART). Affectation officielle des broches : Serial (0 RX / 1 TX, partagé avec l'USB), Serial1 (RX 19 / TX 18), Serial2 (RX 17 / TX 16), Serial3 (RX 15 / TX 14). Vous écrirez un routeur non bloquant octet par octet.

Matériel

Respectez le croisement TX→RX/RX→TX entre la Mega et chaque module, et la masse commune. Attention : la liaison USB-CP est gérée par l'ATmega16U2 ; si le PC écrit beaucoup sans que personne ne lise, le flux peut bloquer la carte (comportement CDC documenté).

Code complet

// Passerelle 4 UART — PC + GPS + modem + RS-485
void setup {
  Serial.begin(115200);    // console USB (broches 0/1)
  Serial1.begin(9600);     // GPS typique
  Serial2.begin(115200);   // modem typique
  Serial3.begin(9600);     // transceiver RS-485
  while (!Serial && millis < 3000) {}  // attend l'USB CDC
}

void loop {
  // Routage non bloquant, octet par octet :
  if (Serial1.available) Serial.write(Serial1.read);    // GPS -> PC
  if (Serial.available)  Serial2.write(Serial.read);    // PC -> modem
  if (Serial2.available) Serial3.write(Serial2.read);   // modem -> RS-485
  if (Serial3.available) Serial.write(Serial3.read);    // RS-485 -> PC
}

Vérification attendue

Le moniteur série à 115200 bauds affiche les trames NMEA du GPS en continu. Ce que vous tapez dans le moniteur part vers Serial2 ; la réponse du modem est relayée vers Serial3. Aucun octet n'est perdu aux cadences usuelles car chaque loop vide les quatre tampons.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels