Schnellstart
Schließen Sie die Platine über USB-C an, verbinden Sie die mitgelieferte FXUB1900-Antenne mit dem IPEX-Anschluss und folgen Sie dem Reiter für Ihre Plattform, um decodierte Flugzeugmeldungen vom integrierten TT-SC1-Empfänger anzuzeigen.
- Arduino
- MicroPython
- ESP-IDF
1. Plattform installieren
Installieren Sie den offiziellen Espressif Arduino-Core für ESP32 über den Arduino IDE-Boards-Manager:
- Öffnen Sie die Arduino IDE.
- Gehen Sie zu Extras → Board → Boards-Manager.
- Suchen Sie nach ESP32.
- Suchen Sie ESP32 von Espressif Systems und klicken Sie auf Installieren.
2. Den CH340K-Treiber installieren
Der CH340K-Chip des Boards übernimmt die USB-zu-Seriell-Kommunikation. Ohne dessen Treiber wird das Board nicht als serieller Anschluss angezeigt.
Unter Linux ist kein separater Treiber erforderlich: Der CH340 wird von Haus aus unterstützt.
Unter Windows laden Sie den Treiber von
der WCH-Treiberseite
herunter und führen Sie das Installationsprogramm aus. Unter macOS laden Sie den Treiber von
der WCH-macOS-Treiberseite
herunter, öffnen Sie die .zip-Datei und befolgen Sie die Installationsanweisungen.
3. Bibliothek installieren
Laden Sie die Arduino-Bibliothek für den Soldered ADS-B-Empfänger im verifizierten Commit herunter:
Gehen Sie in der Arduino-IDE zu Sketch → Include Library → Add .ZIP Library... und wählen Sie das heruntergeladene Archiv aus.
4. Board auswählen
Da für dieses Produkt noch kein board-spezifischer Eintrag zum Boards Manager-Paket hinzugefügt wurde, wählen Sie das am besten passende generische Ziel aus: Tools → Board → esp32 → ESP32S3 Dev Module.
5. Laden Sie Ihr erstes Programm hoch
Dies ist das bibliotheksinterne Beispiel 1_ReadAircraftCSV. Die Standard-Verdrahtung
der Bibliothek (UART1 an IO17/IO18, Reset an IO21) passt bereits zu diesem Board, daher benötigt der
Konstruktor keine Argumente.
#include "ADSB-Receiver-SOLDERED.h"
// Create an instance of the ADS-B object
// Using a different board? See example 7_CustomBoardWiring.
ADSBReceiver adsb;
// Called once per decoded aircraft update, with whichever fields the module had data for.
void onAircraft(const AdsbAircraft &ac)
{
Serial.print("ICAO ");
Serial.print(ac.icao);
if (ac.callsign.length())
{
Serial.print(" call=");
Serial.print(ac.callsign);
}
if (ac.hasPosition)
{
Serial.print(" lat=");
Serial.print(ac.lat, 5);
Serial.print(" lon=");
Serial.print(ac.lon, 5);
}
if (ac.hasAltBaro)
{
Serial.print(" altBaro=");
Serial.print(ac.altBaro);
Serial.print("ft");
}
if (ac.hasVelH)
{
Serial.print(" vel=");
Serial.print(ac.velH);
Serial.print("kt");
}
if (ac.squawk.length())
{
Serial.print(" squawk=");
Serial.print(ac.squawk);
}
Serial.print(" onGround=");
Serial.print(ac.onGround() ? "yes" : "no");
Serial.print(" crcValid=");
Serial.println(ac.crcValid ? "yes" : "no");
}
void setup()
{
// Start the USB serial monitor.
Serial.begin(115200);
// Open the UART link to the module at its factory-default RUN baud.
adsb.begin(115200);
// Register the function to call whenever a decoded aircraft report arrives.
adsb.onAircraft(onAircraft);
Serial.println("Waiting for ADS-B traffic...");
}
void loop()
{
// Reads incoming bytes and fires the registered callbacks. Must run every loop.
adsb.poll();
}
6. Was Sie erwarten können
Öffnen Sie „Tools → Serial Monitor“, stellen Sie die Baudrate auf 115200 ein und setzen Sie das Board zurück. Der Empfänger sendet für jedes empfangene Flugzeug einen CSV-Bericht, etwa einmal pro Sekunde pro Flugzeug:
Waiting for ADS-B traffic...
ICAO 4BB865 call=PGT2DY onGround=no crcValid=yes
ICAO 4CBEA5 onGround=no crcValid=yes
ICAO 0FFA8D onGround=no crcValid=yes
ICAO 3E7FBE onGround=no crcValid=yes
ICAO 4BB865 call=PGT2DY altBaro=36975ft squawk=7140 onGround=no crcValid=yes
ICAO 4CBEA5 onGround=no crcValid=yes
ICAO 0FFA8D onGround=no crcValid=yes
ICAO 44020A squawk=7102 onGround=no crcValid=yes
ICAO 4BB87A altBaro=37000ft vel=453.00kt squawk=3031 onGround=no crcValid=yes
Die Felder einer Zeile hängen davon ab, was das Modul für diese Aktualisierung tatsächlich decodiert hat; ein Feld, für das das Modul noch keine Daten hat, wird einfach weggelassen, weshalb einige der obigen Zeilen kürzer sind als andere.
Keine Ausgabe nach der ersten Zeile? Siehe Fehlerbehebung. Für den Empfang muss sich ein Flugzeug, das ADS-B sendet, in Reichweite und in Sichtlinie der Antenne befinden.
7. Fehlerbehebung
Wenn das Board nicht erkannt wird oder der Upload fehlschlägt, fahren Sie mit Fehlerbehebung fort.
1. Plattform installieren
Installieren Sie Thonny (oder eine andere ESP32-S3-kompatible
MicroPython-IDE) und das Flash-Tool esptool:
pip install esptool
2. Installieren Sie die Firmware
Laden Sie einen generischen ESP32-S3-MicroPython-Firmware-Build von der offiziellen MicroPython-Download-Seite herunter und flashen Sie ihn dann über USB-C:
esptool.py --chip esp32s3 --port PORT erase_flash
esptool.py --chip esp32s3 --port PORT write_flash -z 0 firmware.bin
Ersetze PORT durch den seriellen Port deines Boards und firmware.bin durch die
Datei, die du heruntergeladen hast. Wählen Sie den SPIRAM_OCT-Build für das ESP32-S3-WROOM-1-N8R8-Modul dieses Boards, das über oktales SPI-PSRAM verfügt.
Wenn esptool nach dem Flashen die Meldung „Invalid image block, can't boot“ ausgibt, wurde der
Schreibvorgang nicht vollständig abgeschlossen. Führen Sie write_flash erneut aus, achten Sie am Ende auf die Meldung „Hash of data
verified“ und vergewissern Sie sich, dass Sie den SPIRAM_OCT-Build geflasht haben.
3. Modul installieren
Installieren Sie die Soldered ADSBReceiver MicroPython Library zusammen mit mpremote unter Verwendung
des Befehls aus der README-Datei des Moduls:
mpremote mip install github:SolderedElectronics/Soldered-ADSBReceiver-MicroPython-Library@a0f37376b7e51b09944f6799e0d64e939f05fe85
Unter Windows:
python -m mpremote mip install github:SolderedElectronics/Soldered-ADSBReceiver-MicroPython-Library@a0f37376b7e51b09944f6799e0d64e939f05fe85
Unmittelbar nach dem Flashen kann mpremote mit der Fehlermeldung could not enter raw repl fehlschlagen,
ausfallen, obwohl das Board problemlos in MicroPython bootet. Der serielle Port hat sich
nach dem Reset durch esptool noch nicht stabilisiert. Führen Sie einfach denselben Befehl erneut aus; sollte er
immer noch fehlschlagen, drücken Sie einmal die Reset-Taste des Boards und versuchen Sie es erneut.
4. Board und Anschluss auswählen
Stellen Sie eine Verbindung zum seriellen Port des Boards mit 115.200 Baud her (in Thonny: Ausführen → Interpreter auswählen → MicroPython (ESP32), dann den Port auswählen).
5. Laden Sie Ihr erstes Programm hoch
Dies ist das modul-eigene Beispiel ADSBReceiver-readAircraftCSV. Die
Standard-Verkabelung des Moduls (UART1 an IO17/IO18, Reset an IO21) passt bereits
zu diesem Board.
from machine import UART
from ADSBReceiver import ADSBReceiver
# Open the UART link to the module at its factory-default RUN baud.
# Board default wiring: IO17 = module TX in, IO18 = module RX out, IO21 = RESET.
# Using a different board? See example ADSBReceiver-customBoardWiring.
uart = UART(1, baudrate=115200, rx=17, tx=18, rxbuf=4096)
adsb = ADSBReceiver(uart, reset_pin=21)
# Called once per decoded aircraft update, with whichever fields the module had data for.
def onAircraft(ac):
line = "ICAO {}".format(ac.icao)
if ac.callsign:
line += " call={}".format(ac.callsign)
if ac.hasPosition:
line += " lat={:.5f} lon={:.5f}".format(ac.lat, ac.lon)
if ac.hasAltBaro:
line += " altBaro={}ft".format(ac.altBaro)
if ac.hasVelH:
line += " vel={}kt".format(ac.velH)
if ac.squawk:
line += " squawk={}".format(ac.squawk)
line += " onGround={}".format("yes" if ac.onGround() else "no")
line += " crcValid={}".format("yes" if ac.crcValid else "no")
print(line)
# Register the function to call whenever a decoded aircraft report arrives.
adsb.onAircraft(onAircraft)
print("Waiting for ADS-B traffic...")
while True:
# Reads incoming bytes and fires the registered callbacks. Must run every loop.
adsb.poll()
Führen Sie dies als main.py aus oder fügen Sie es in die REPL ein.
6. Was Sie erwarten können
Der Empfänger sendet für jedes empfangene Flugzeug einen CSV-Bericht, etwa einmal pro Sekunde pro Flugzeug:
Waiting for ADS-B traffic...
ICAO 4BCFE6 onGround=no crcValid=yes
ICAO B938F5 onGround=no crcValid=yes
ICAO 06A0B7 call=QTR65G lat=45.31171 lon=18.67066 altBaro=39975ft vel=478.0kt squawk=5302 onGround=no crcValid=yes
ICAO 4C0C85 squawk=0032 onGround=no crcValid=yes
ICAO 32B7BA onGround=no crcValid=yes
ICAO 9AB300 onGround=no crcValid=yes
ICAO 7C33BE onGround=no crcValid=yes
Die Felder einer Zeile hängen davon ab, was das Modul für dieses Update tatsächlich decodiert hat; ein Feld, für das das Modul noch keine Daten hat, wird einfach weggelassen, weshalb einige der obigen Zeilen kürzer sind als andere.
Keine Ausgabe nach der ersten Zeile? Siehe Fehlerbehebung. Für den Empfang muss sich ein Flugzeug, das ADS-B sendet, in Reichweite und in Sichtlinie der Antenne befinden.
7. Fehlerbehebung
Wenn das REPL nicht reagiert oder das Flashen der Firmware fehlschlägt, fahren Sie mit Fehlerbehebung fort.
1. Plattform installieren
Installieren Sie ESP-IDF gemäß der offiziellen Einführungsanleitung von Espressif.
idf.py befindet sich standardmäßig nicht in Ihrem System-PATH. Jedes Mal, wenn Sie ein neues
Terminal öffnen, aktivieren Sie zunächst die ESP-IDF-Umgebung: Verwenden Sie unter Windows die vom Installationsprogramm erstellte Verknüpfung ESP-IDF
Eingabeaufforderung (oder ESP-IDF PowerShell) verwenden, die vom Installationsprogramm erstellt wurde;
unter Linux/macOS führen Sie . $HOME/esp/esp-idf/export.sh aus (der Pfad hängt davon ab, wo
Sie es installiert haben). Das Ausführen von idf.py in einem normalen, nicht aktivierten Terminal schlägt immer
mit der Meldung „not recognized“ oder „command not found“ fehl.
2. Ziel festlegen
idf.py set-target esp32s3
3. Projekt konfigurieren
Beginnen Sie mit dem offiziellen hello_world-Beispiel, das keine Konfigurationsänderungen erfordert, um für dieses Modul zu kompilieren:
4. Erstellen und flashen Sie Ihr erstes Programm
idf.py -p PORT build flash monitor
Ersetzen Sie PORT durch den seriellen Port Ihres Boards.
5. Was Sie erwarten können
Nach dem vollständigen ESP-IDF-Bootloader-Protokoll gibt das Beispiel selbst Folgendes aus:
Hello world!
This is esp32s3 chip with 2 CPU core(s), WiFi/BLE, silicon revision v0.2, 2MB external flash
Minimum free heap size: 400308 bytes
Restarting in 10 seconds...
Restarting in 9 seconds...
...
Restarting now.
Anschließend wird das System neu gestartet und der Vorgang wiederholt sich. Die genau angezeigten Heap- und Flash-Größen hängen von Ihrer Build-Konfiguration ab.
6. Fehlerbehebung
Wenn das Projekt nicht kompiliert oder geflasht werden kann, fahren Sie fort mit Fehlerbehebung.