Admin, trochę wjechałeś mi na ambicję z tymi modułami ESP. No więc właśnie siedzę i rozpakowuje nowe zakupione zestawy, czyli:
1. ESP32-GATEWAY
2. ESP32-POE-ISO-EA-IND
3. ESP32-DEVKITC-32D
4. ESP32S2-SAOLA-1R
5. ESP32-PICO-KIT
6. ESP32S2-SAOLA-1M
7. ESP32-DEVKITC-32UE
Może jako bardziej obeznani z tematem, to podpowiecie który pierwszy ma iść na warsztat?
Ło matko, ale sobie zabawek na dzień chłopaka nakupowałeś
Nie wiedziałem, że są też bardziej zaawansowane płytki z ESP32, ale to w sumie logiczne, bo ja używam wyłącznie development boards, czyli takie do prototypowania i eksperymentów - są najmniejsze i najtańsze (zamawiam z Aliexpress po 17 zł za sztukę, a przed podatkiem EU były po 14 zł. Z darmową dostawą oczywiście
).
Osobiście posiadam 3 wersje płytek ESP32:
* DEVKIT V1 (w sumie to samo co DEVKIT C)
* NodeMCU ESP32
* DEVKIT-C
Jakieś różnice pomiędzy nimi pewnie są - DEVKIT-C podobno ma lepszy zasięg WiFi, ale nie stwierdziłem tego w praktyce
Za to ewidentnie działa lepiej (zasięg WiFi) z zasilaczem USB niż zasilane z z portu USB tyle że poprzez dość długi kabel. Niby ma być to samo, a jednak nie jest. Zasadniczą różnicą jest to, że NodeMCU działa z ESP32S czyli jakąś ulepszoną wersją ESP32.
Ja raczej zacznę od tego który ruszy z SDK od Espressifa.
Do tej pory SDK Espressif'a (zakładam, że masz na myśli
Espressif IDF) omijałem szerokim łukiem, bo o programowaniu na tym poziomie wiem tyle co nic. Przerwania, rejestry to nie moja bajka (jeszcze
). Gdy zacząłem się bawić w testy SPI to zaprzągnąłem do pracy płytki DEVKIT1 oraz NoceMCU, ale podejrzewam, że wszystkie które kupiłeś będą współpracowały. Mnie udało się skompilowąć przykłądy do SPI dla obu płytek i komunikacja między płytkami działa, więc wygląda, że IDF na obu działa. Przy okazji - może Ty jesteś bardziej obeznany z tematem, ale mnie nie udało się odpalić IDF w Windows. Podczas buildu wywala miliony błędów. Pewnie jakiś szczegół, ale nie nawidzę takich sytuacji. Mamy XXI wiek a doprowadzenie środowiska developerskiego do pionu nadal jest wyzwaniem jak zdobycie Mont Everest. Wybrałem VSCode jako moje IDE bo zaprzyjaźniłem się z nim w ramach budowania integracji z HA i pisania kodu dla ESPhome i na szczęście okazało się, że wtyczka IDF dla VSCode zawiera taski do tworzenia projektu dla przykładów i te projekty domyślnie mają wygenerowaną obsługę devcontainer i w devcontainer udało mi się odpalić build. Niestety to też wymagało drobnych zmian, bo ścieżki do gcc są ustawione na Windowsowe z jakiegoś pododu, więc musze jednorazowo zrobić podmianę w pliku konfiguracyjnym (kasuję wpis ze ścieżką do gcc) i zaczyna się kompilować. Używam devcontainer z Dockerem + WSL2, więc tracę możliwość wgrywania softu do ESP32 bespośrednio z VSCode devcontainer (WSL2 nie obsługuje USB hosta) i debugowania kodu, ale flashuję z Windows wygenerowany kod i jest ok. Z debugowaniem jest gorzej bo na razie nie wiem jak to zrobić, ale może i to kiedyś jakoś ogarnę.
Dalej będzie to trzeba pożenić z modułem MRF (radio) a dalej to już tylko ograniczać będzie fantazja co będzie potrzeba.
No na to właśnie liczę, że uda się pożenić z radiem Exta Life. A potem mam nadzieję, że fantazja podpowie ci, żeby zrobić forwardowanie zdarzeń jakimś protokołem sieciowym do świata zewnętrznego. Wiem, że w IDF jest obsługa MQTT - nie trzebaby pisać własnego protokołu. To mogłaby być pierwsza wersja. Idealnie byłoby wykorzystać bibliotekę ESPhome do komunikacji, ale nie wiem czy to będzie proste, bo ESPhome podobnie jak Python wykorzystuje programowanie asynchroniczne, a IDF to chyba zwykłe synchroniczne. Ale nie znam się wystarczająco więc nie wiem.
Chłopaki ja wam radze odłóżcie te sniffery od szyny SPI, to się na nic nie zda i szkoda na to trochę czasu. Dane które są wystawiane na szynę SPI są już zakodowane, a te które są odbierane są jeszcze w postaci zaszyfrowanej, wiec grabowanie tego bez funkcji crypt/decrypt nie jest warte poświęconego czasu.
Ja tam jednak będę rozpracowywał temat mimo wszystko. Ufam, że kiedyś znajdzie się sposób na szyfrowanie
A poza tym może się czegoś nowego nauczę. Na razie udało mi się z sukcesem odpalić komunikację po SPI między dwoma ESP, ale tylko gdy oba pracowały na sofcie IDF. Gdy w jednej zrobiłem obsługę SPI poprzez ESPhome to odbirnik (slave) z nieznanego mi powodu jakoś nie chce zagadać do mastera SPI w ESPhome. Poza tym zauważyłem, że gdy odepnę kabel i przerwę transmisję to po podłączeniu kabla transmisja ustaje. To podpowiada mi, że może być problem żeby ESP32 slave zagadał z płytką Exta Life po SPI. Ale kroczek po kroczku do celu. Może jakoś się uda.
W docelowym snifferze będzie to zaimplementowane z użyciem ESP32+MRF
No i zapowiada się super. Dla mnie to jeszcze zdecydowanie zbyt odległy temat. Skonfigrowanie tego transcivera - częstotliwość, modulacje itp to już jest problem, tym większy że najpierw trzeba wiedzieć na co go ustawić aby gadał z ExtaLife, ale wierzę, że Tobie się uda, bo masz już to rozpracowane
Ja będę się starał, aby tą część realizował klocek Exta Life i jego STM.
Trzymam kciuki za powodzenie akcji "Gadulowaty meets ESP32"