Brzi početak
Uključite ploču u USB-C priključak, spojite priloženu antenu FXUB1900 na IPEX priključka i slijedite karticu za svoju platformu kako biste vidjeli dešifrirane zračne izvještaje s ugrađenog TT-SC1 prijemnika.
- Arduino
- MikroPython
- ESP-IDF
1. Instalirajte platformu
Instalirajte službeni Espressif Arduino core za ESP32 iz Upravitelja ploča (Boards Manager) Arduino IDE-a:
- Otvorite Arduino IDE.
- Idite na Tools → Board → Boards Manager.
- Potražite ESP32.
- Pronađite ESP32 by Espressif Systems i kliknite Install.
2. Instalirajte upravljački program CH340K
Čip CH340K na ploči upravlja komunikacijom USB-serijski. Bez njegovog upravljačkog programa ploča se neće pojaviti kao serijski priključak.
Linuxu nije potreban zaseban upravljački program: CH340 je podržan iz kutije.
Na sustavu Windows preuzmite upravljački program s stranice s upravljačkim programima tvrtke WCH i pokrenite instalacijski program. Na sustavu macOS preuzmite upravljački program s stranice s macOS upravljačkim programima tvrtke WCH, otvorite .zip datoteku i slijedite upute za instalaciju.
3. Instalirajte biblioteku
Preuzmite Arduino biblioteku za lemljeni ADS-B prijemnik s provjerenog commita:
U Arduino IDE-u idite na Sketch → Include Library → Add .ZIP Library... i odaberite preuzetu arhivu.
4. Odaberite ploču
Za ovaj proizvod još nije dodan unos specifičan za ploču u paket Upravitelja ploča (Boards Manager), stoga odaberite najbliži opći cilj: Alati → Ploča → esp32 → ESP32S3 Dev Module.
5. Učitajte svoj prvi program
Ovo je vlastiti primjer 1_ReadAircraftCSV biblioteke. Zadana konfiguracija priključaka biblioteke (UART1 na IO17/IO18, reset na IO21) već odgovara ovoj ploči, stoga konstruktor ne treba 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. Što očekivati
Otvorite Alati → Serijski monitor, postavite brzinu prijenosa na 115200 i resetirajte pločicu. Prijamnik šalje CSV izvješće za svaki zrakoplov koji detektira, otprilike jednom u sekundi po zrakoplovu:
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
Polja u retku ovise o onome što je modul zapravo dešifrirao za to ažuriranje; polje za koje modul još nema podatke jednostavno se izostavlja, zbog čega su neki retci gore kraći od drugih.
Nema izlaza izvan prve linije? Pogledajte Otklanjanje poteškoća. Za prijem je potreban zrakoplov koji emitira ADS-B unutar dometa i u vidnom polju antene.
7. Rješavanje problema
Ako ploča nije otkrivena ili prijenos ne uspije, nastavite s Rješavanje problema.
1. Instalirajte platformu
Instalirajte Thonny (ili drugi MicroPython IDE kompatibilan s ESP32-S3) i alat za flashanje esptool:
pip install esptool
2. Instalirajte firmware
Preuzmite generičku verziju ESP32-S3 MicroPython firmwarea s službene stranice za preuzimanje MicroPython-a, a zatim ga flashajte putem USB-C priključka:
esptool.py --chip esp32s3 --port PORT erase_flash
esptool.py --chip esp32s3 --port PORT write_flash -z 0 firmware.bin
Zamijenite PORT serijskim priključkom svoje ploče, a firmware.bin datotekom koju ste preuzeli. Odaberite build SPIRAM_OCT za modul ESP32-S3-WROOM-1-N8R8 na ovoj ploči, koji ima oktalni SPI PSRAM.
Ako esptool nakon flashanja prijavi "Invalid image block, can't boot",
pisanje nije u potpunosti dovršeno. Ponovno pokrenite write_flash, pratite poruku "Hash of data
verified" na kraju i provjerite jeste li flashali SPIRAM_OCT build.
3. Instalirajte modul
Instalirajte Soldered ADSBReceiver MicroPython Library pomoću mpremote, koristeći
naredbu iz README datoteke samog modula:
mpremote mip install github:SolderedElectronics/Soldered-ADSBReceiver-MicroPython-Library@a0f37376b7e51b09944f6799e0d64e939f05fe85
Na Windowsu:
python -m mpremote mip install github:SolderedElectronics/Soldered-ADSBReceiver-MicroPython-Library@a0f37376b7e51b09944f6799e0d64e939f05fe85
Odmah nakon flashanja, mpremote može zakažiti s porukom could not enter raw repl
iako se ploča bez problema pokreće u MicroPythonu. Seriјski priključak se još nije oporavio od resetiranja esptoola. Samo ponovno pokrenite istu naredbu; ako i dalje ne uspije, jednom pritisnite gumb za resetiranje na ploči i pokušajte ponovno.
4. Odaberite ploču i priključak
Povežite se na serijski port ploče brzinom od 115200 bauda (u Thonnyju, Pokreni → Odabir interpretatora → MicroPython (ESP32), a zatim odaberite port).
5. Učitajte svoj prvi program
Ovo je vlastiti primjer ADSBReceiver-readAircraftCSV modula. Zadana
povezanost modula (UART1 na IO17/IO18, reset na IO21) već odgovara
ovoj ploči.
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()
Pokrenite ovo kao main.py ili ga zalijepite u REPL.
6. Što očekivati
Prijamnik šalje CSV izvješće za svaki zrakoplov koji detektira, otprilike jednom u sekundi po zrakoplovu:
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
Polja u retku ovise o onome što je modul zapravo dešifrirao za to ažuriranje; polje za koje modul još nema podatke jednostavno se izostavlja, zbog čega su neki od gornjih retaka kraći od drugih.
Nema izlaza osim prve linije? Pogledajte Rješavanje problema. Za prijem je potreban zrakoplov koji emitira ADS-B unutar dometa i vidokruga antene.
7. Rješavanje problema
Ako REPL ne reagira ili flashanje firmvera ne uspije, nastavite s Rješavanjem problema.
1. Instalirajte platformu
Instalirajte ESP-IDF slijedeći službeni Vodič za početak rada tvrtke Espressif.
idf.py se prema zadanim postavkama ne nalazi na sustavnoj PATH putanji. Svaki put kada otvorite novi
terminal, prvo aktivirajte ESP-IDF okruženje: na sustavu Windows upotrijebite ESP-IDF
prečac za naredbeni redak (ili ESP-IDF PowerShell) koji je stvorio instalacijski program;
na Linuxu/macOS-u pokrenite . $HOME/esp/esp-idf/export.sh (putaña ovisi o tome gdje
ste ga instalirali). Pokretanje idf.py u običnom, neaktiviranom terminalu uvijek
završava neuspjehom s porukom "ne prepoznato" ili "naredba nije pronađena".
2. Postavite cilj
idf.py set-target esp32s3
3. Konfigurirajte projekt
Počnite s službenim primjerom hello_world, koji ne zahtijeva promjene u konfiguraciji za izgradnju za ovaj modul:
4. Izgradite i flashajte svoj prvi program
idf.py -p PORT build flash monitor
Zamijenite PORT serijskim priključkom svoje ploče.
5. Što možete očekivati
Nakon potpunog loga bootloadera ESP-IDF-a, primjer sam ispisuje:
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.
Zatim se ponovno pokreće i ponavlja. Točna veličina heapa i flash memorije koja se izvještava ovisi o vašoj konfiguraciji izrade.
6. Rješavanje problema
Ako se projekt ne kompajlira ili ne flashira, nastavite s Rješavanje problema.