Wenn man mit dem ESP32 die RX/TX Pins für HardwareSerial benutzt, tritt bei einigen Modulen das Problem auf, dass man nach erfolgreichem installieren des neuen Programms via Arduino IDE die serielle Schnittstelle nicht mehr benutzen kann. Beim Upload des Programmes erscheint eine Fehlermeldung, dass das ESP Modul nicht mehr gefunden werden kann.
Dies ist zum Beispiel der Fall, wenn man an das TTGO Lora32 Modul ein GPS anhängen möchte, und die RX/TX Pins auf GPIO1 und GPIO3 wählt.
Man kann das Programm noch flashen und es funktioniert läuft wie gewünscht. Wenn man nun das Modul erneut flashen will, dann findet Arduino IDE das Modul nicht mehr am ausgewählten Port. Das GPS Modul blockiert den seriellen Port des Modules.
Für ESP32 stellt dies jedoch kein Problem dar. ESP32 unterstützt insgesamt 3 Hardware Serial Schnittstellen, auch UART genannt. Diese können mit der HardwareSerial.h Library auf andere freie GPIOS zugewiesen werden.
Die Funktion dazu lautet Serial.begin(). Du findest die Referenz hier: https://www.arduino.cc/reference/en/language/functions/communication/serial/begin
Für den Fall mit dem Lora32 Modul von TTGO wählen wir z.B. die Pins 34 und 35. Der Code sieht dann so aus:
include <HardwareSerial.h> // ist bereits teil von Arduino IDE
include <TinyGPS++.h> // von http://arduiniana.org/libraries/tinygpsplus/
TinyGPSPlus gps;
HardwareSerial Serial(1); // Für die Ausgabe am Serial Monitor
HardwareSerial SerialGPS(2); // 1 = USB Serial, wir können also 2 oder 3 wählen
void setup() {
Serial.begin(115200); // Serial Monitor Ausgabe
// RX geht zu TX, TX zu RX, also müssen sie hier vertauscht werden
// 35 = RX > auf dem GPS Modul mit TX verbunden
// 34 = TX > auf dem GPS Modul mit RX verbunden
SerialGPS.begin(9600, SERIAL_8N1, 35, 34);
}
void loop() {
while (SerialGPS.available() > 0) {
gps.encode(SerialGPS.read());
Serial.print("LAT="); Serial.println(gps.location.lat());
Serial.print("LONG="); Serial.println(gps.location.lng());
Serial.print("ALT="); Serial.println(gps.altitude.meters());
}
delay(2000);
}
Alternative OTA
Alternativ kannst Du natürlich auch ein OTA Methode verwenden, um neue Software auf das Modul zu flashen. Hierzu gibt’s einige gute Libraries z.B. die hier:
https://github.com/scottchiefbaker/ESP-WebOTA
Nach einbinden der Library kannst Du aus Arduino IDE generierte *.bin Files über dne Browser auf das Modul hochladen.
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.