
Hej, może ktoś z was planuje zrobić domową sieć kilkunastu czujników ale nie wie jaki protokół bezprzewodowy wybrać ?
Jest tego masa, od Bluetooth, WiFi...... ale dzisiaj skupimy się na mało popularnym, ale wdg mnie, świetnym protokołem ESPnow opracowanych z tego co wiem przez Chińczyków

Może zacznijmy czym jest ESPnow?
ESPnow używa podobnie jak WiFi pasma 2,4 GHz, podzielonego na 13 kanałów. Jednak z Wi-Fi nie ma więcej nic wspólnego. Za jednym zamachem można przesłać aż 256 bajtów (ESP32) bądź 200 bajtów (ESP8266) co jest przyzwoitym wynikiem. Jedno urządzenie może komunikować się z 10 innymi w sposób szyfrowany lub 20 bez szyfrowania. W praktyce mam 25 nadajników i jeden odbiornik i w sumie to wszystko działa ok

Zasięg ma świetny, na otwartej przestrzeni z malutką anteną dane lecą sobie do 200m. Nie tracimy też czasu na połączenie się z bazą, po prostu dane lecą w eter i odbiornik sobie wybiera co tam go interesuje

Więc słów kilka było, to teraz do rzeczy. Dzisiaj zbudujemy mały zestaw złożony z nadajnika i odbiornika. Żeby było ciężej to odbiera dane ESP32, a wysyła ESP8266.
Wszystko będzie wykonane w Arduino 1.8.33.0.
1. Przygotujmy Arduino by mogło współpracować z naszymi ESP,
Uruchamiamy aplikację, klikamy Plik -> Preferencje i klikamy na przycisk po prawej stronie "Dodatkowe adresy URL....

wklejamy dwa linki:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json
Potem z menu wybieramy Narzędzia -> Płytka ->Menadżer płytek

Wklepujemy ESP, i instalujemy esp32 oraz esp8266

I gotowe, możemy teraz wgrać moje dwa przykładowe kody do Odbiorniak (ESP32) oraz nadajnika (ESP8266).
Opis co za co odpowiada jest w komentarzach w kodzie, myślę że każdy się połapie o co chodzi, ale jeśli będzie problem to na samym dole dam opis jak dodać więcej zmiennych do wysłania. Generalnie najważniejsze by stworzyć taka samą strukturę danych w nadajniku (nadajnikach) i odbiorniku.
typedef struct struct_message {
int DaneZczujnika1;
int DaneZczujnika2;
} struct_message;
Typy danych mogą być dowolne, byle byśmy się zmieścili w 200 (256bajtach).
Kod odbiornika (ESP32):
Code: c
Kod nadajnika (będziemy sobie wysyłali "losowe" dane.
Code: c
Jak zapewne zauważyliście, ESP8266 idzie grzecznie spać by nie marnować nam bez sensu baterii jeśli ma to być urządzenie bezprzewodowe. Tutaj proponuję użyć LOLIN D1 Mini Pro V2, z racji że można podłączyć do niego Liiona, ma LDO oraz aktywowany tryb wybudzania ze snu Timerem (D0 z RST połączony). Przy tym układzie, nadajnik średnio wytrzymuje mi pół roku na jednym ładowaniu baterii 1000mah.
Co do czasu nadawania, gdybyśmy chcieli dać przykładowo guzik, to od momentu kliknięcia guzikiem do pojawienia się danych w Odbiorniku upływa około 5-6ms (ciężko zmierzyć tak małe wartości) - więc w zasadzie bez żadnego opóźnienia

I to byłoby na tyle, dodam też że dopiero raczkuję w programowaniu więc mogę nie być w stanie odpowiedzieć na każde pytanie szczegółowe. Czekam taż na zapewne krytyczne komentarze

Cool? Ranking DIY