| - |
ESP-igate v3 albo iGate, który dogadał się z iPhone'emFirmware iGate do dsTNCv2 ma już swoją historię. Pierwszą wersję napisał Krzysiek SP9SKP na moduł ESP01 i działała dobrze przez lata - niestety źródła zaginęły i zostały same binarki. Przepisałem więc całość od zera, a skoro już siedziałem w tym kodzie, to przy okazji przeniosłem go na coś nowszego niż ESP01: Seeed XIAO ESP32-C6. Modułek jest wielkości paznokcia, kosztuje tyle co dwie kawy i ma na pokładzie WiFi, BLE 5, 4 MB flasha i własne USB. Powód był jednak konkretniejszy niż "bo nowsze". Użytkownicy Androida mają APRSDroid i Bluetooth Classic SPP - i to działa od zawsze. Tylko że iOS nie udostępnia SPP w ogóle, więc z iPhonem nie dogadasz się w ten sposób ani przez HC-05, ani przez żaden inny modulik BT. Jedyna droga to Bluetooth Low Energy. ESP01 nie ma BLE, ESP32-C6 ma - i stąd ta wersja. iGate wystawia więc KISS-a po BLE jako Nordic UART Service i telefon widzi go jak zwykły TNC. Przy okazji zrobiło się luźniej z zasobami. Na ESP01 modem zajmował jedyny UART, więc log diagnostyczny musiał lecieć po sieci. Na C6 USB jest osobnym kawałkiem sprzętu, modem ma własny UART, a ja mogę patrzeć w konsolę kablem i po UDP jednocześnie. Konfiguracja przeniosła się z ręcznie liczonego sektora flasha do NVS, więc nie trzeba już zgadywać, gdzie SDK trzyma swoje dane.
Uwaga: to świeża wersja, dopiero po porcie. Jeśli traficie na coś dziwnego - piszcie, poprawię.
Wszystko na poziomach 3V3, wspólna masa, 19200 8N1. Trzy przewody plus masa:
XIAO D6 (GPIO16) ----> RX modemu dsTNCv2
XIAO D7 (GPIO17) <---- TX modemu dsTNCv2
XIAO D3 (GPIO21) <---- CTS modemu (HIGH = gotowy, LOW = zajety)
* wejscie z wewnetrznym pull-up *
GND ----- GND
CTS ma podciąganie do plusa, więc jak zapomnicie tego przewodu, to iGate uzna modem za wiecznie gotowy i będzie nadawał na oślep. Lepiej podłączyć - dsPIC gubi ramkę, jeśli druga wjedzie mu w UART, kiedy jeszcze nadaje pierwszą.
Trzy niezależne przełączniki w zakładce APRS. Domyślnie włączony jest tylko pierwszy, czyli BLE zachowuje się jak zwykły TNC:
Ostatni kierunek jest tym, po co to w ogóle powstało: telefon bez zasięgu LTE dostaje pełny ruch APRS-IS przez iGate, po BLE. iGate odsiewa echa, żeby ta sama ramka nie wpadła na mapę dwa razy - raz z eteru, raz z sieci.
W paczce są dwa pliki bin: factory (bootloader + tablica partycji + aplikacja, wgrywany od zera) i app (sama aplikacja, do aktualizacji bez ruszania konfiguracji), skrypt flash.sh i krótkie README.
Jak wgrać firmware?
esptool.py --chip esp32c6 --port /dev/ttyACM0 --baud 460800 \
write_flash -z 0x0 esp-igate_v3.0_factory.bin
Aktualizacja, bez ruszania bootloadera:
esptool.py --chip esp32c6 --port /dev/ttyACM0 --baud 460800 \
write_flash -z 0x10000 esp-igate_v3.0_app.bin
Jeśli płytka nie daje się złapać, wejdźcie w bootloader ręcznie: trzymać B, kliknąć R, puścić B.
Jakie jest hasło do WiFi i jak to ustawić?
Czy mogę używać WiFi i BLE jednocześnie?
Jak podłączyć iPhone'a? serwis 6E400001-B5A3-F393-E0A9-E50E24DCCA9E RX 6E400002-B5A3-F393-E0A9-E50E24DCCA9E (write - telefon do iGate) TX 6E400003-B5A3-F393-E0A9-E50E24DCCA9E (notify - iGate do telefonu)To standardowe UUID NUS, więc w aplikacji zwykle wystarczy wybrać gotowy preset "Nordic UART" i nie trzeba niczego przepisywać z palca. Sam używam własnej aplikacji na iOS, którą jeszcze szlifuję - jak będzie się nadawała dla ludzi, dorzucę tutaj link.
Czemu nie zwykły ESP32 z Bluetooth Classic, żeby działał APRSDroid?
Czy mogę podłączyć to do radia z wbudowanym TNC, bez dsTNCv2? Trzeba natomiast dopasować poziomy do 3V3. Port COM w Kenwoodach to RS-232 z prawdziwymi poziomami, więc potrzebny jest konwerter w rodzaju MAX3232; jeśli radio ma port w logice 5 V, wystarczy przesuwnik poziomów albo dzielnik. Krytyczny jest kierunek do ESP: 5 V, a tym bardziej 12 V z RS-232, podane wprost na pin C6 kończy się wymianą modułu. W drugą stronę jest łagodniej, bo 3V3 z ESP zwykle wystarcza wejściu radia jako stan wysoki. Linii CTS w takim układzie nie ma czym podłączyć i nie trzeba - wejście jest podciągnięte, więc iGate uzna nadajnik za wiecznie gotowy. Dla iGate'a tylko odbiorczego to bez znaczenia. Jeśli włączycie digipeater albo gatowanie wiadomości z APRS-IS na RF, to warto pamiętać, że bez CTS iGate nie wie, kiedy TNC radia nadaje, i może wepchnąć mu ramkę w trakcie nadawania. dsTNCv2 tę linię ma i dlatego jest tam pewniej.
Czy stary ESP01 przestaje działać?
Antena wbudowana czy zewnętrzna?
Po aktualizacji zniknęła konfiguracja - co się stało?
Skąd wziąć moduł? Jeśli masz pytania - zapraszam do mailowania. Pamiętaj jednak, że mam sporo zajęć i mogę odpowiadać z opóźnieniem :-) 73! DE Tomek, SP9UOB.
|
- |