Bonsoir !
Ce message s'adresse surtout à ceux qui connaissent bien le fonctionnement de l'ESP32 (un S3 dans le cas présent)
Je suis en train de faire communiquer un module GPS avec un ESP32-S3 Lilygo T7-S3 dont voici le brochage :
J'ai essayé ce code avec HardWareSerial :
// Essai module GPS avec ESP32 avec HardwareSerial
const int RXPin = 44, TXPin = 43; // GPIO44 et GPIO43
const uint32_t GPSBaud = 19200;
HardwareSerial gps_serial(1); // 1 = UART 2, 2 = UART 3
void setup()
{
Serial.begin(115200);
delay(1000);
gps_serial.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin);
delay(1000);
gps_serial.println("$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28");
}
void loop()
{
while (gps_serial.available() > 0)
{
// réception des données
byte gpsData = gps_serial.read();
Serial.write(gpsData);
}
}
J'ai aussi essayé ce code sans HardwareSerial :
// Essai module GPS avec ESP32 sans HardwareSerial
const int RXPin = 44, TXPin = 43; // GPIO44 et GPIO43
const uint32_t GPSBaud = 19200;
void setup()
{
Serial.begin(115200);
delay(1000);
Serial1.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin);
delay(1000);
Serial1.println("$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28");
}
void loop()
{
while (Serial1.available() > 0)
{
// get the byte data from the GPS
byte gpsData = Serial1.read();
Serial.write(gpsData);
}
}
Ce qui m'étonne c'est que les deux versions fonctionnes parfaitement !
Dans la version avec HardwareSerial je peux changer la commande HardwareSerial gps_serial(1);
en HardwareSerial gps_serial(2);
ça fonctionne toujours
Dans la version sans HardwareSerial je peux remplacer Serial1
par Serial2
et ça fonctionne encore.
Dans les deux cas, je peux remplacer les GPIO 43 et 44 (GPIOs par défaut pour Rx et Tx d'après le brochage de ma carte) par d'autres GPIO ça fonctionne toujours, autant en émission qu'en réception (j'utilise les deux)
En fait j'aimerai bien comprendre comment l'ESP32-S3 interprète les deux sketchs.
Est-ce que dans le cas sans HardwareSerial il va quand même l'utiliser en "comprenant" le code ?
Où est-ce qu'il y a une différence dans la manière de fonctionner qui m'échappe ?
Et autre question, y a-t-il une vraie raison que sur un ESP32-S3 il y ait des GPIO (43 et 44 ici) qui sont indiqués comme Rx et Tx ?
Merci d'avance à ceux qui pourront m'éclairer !
Roland