Zpět na články

Úvod do ESP‑NOW (ESP32 s Arduino IDE)

ESP‑NOW je bezdrátový protokol vyvinutý společností Espressif, který umožňuje komunikaci mezi zařízeními ESP32 bez potřeby klasického Wi‑Fi připojení

Úvod do ESP‑NOW (ESP32 s Arduino IDE)

📌 Co je ESP‑NOW

ESP‑NOW je:
✔️ protokol pro krátké pakety dat (bez Wi‑Fi handshake)
✔️ peer‑to‑peer spojení mezi dvěma či více ESP32
✔️ lze používat bez routeru nebo přístupového bodu
✔️ podporuje šifrovanou i nešifrovanou komunikaci
✔️ až 250 bajtů dat na packet

Omezení:

❌ maximálně 10 šifrovaných peerů (v režimu Station)
❌ celkem méně než 20 peerů (šifrovaných i nešifrovaných)
❌ limit 250 B dat na jeden packet 👆

🔄 Typy komunikace s ESP‑NOW

🟡 Jednosměrná komunikace

  1. Jeden vysílač → jeden přijímač – nejjednodušší forma
ESP32 Blog image
  1. Master (vysílač) → více slave (přijímačů) – např. ovládání více zařízení
ESP32 Blog image
  1. Více vysílačů → jeden přijímač – sběr dat z různých senzorů
ESP32 Blog image

🔁 Dvousměrná komunikace

ESP‑NOW také umožňuje, aby každé zařízení bylo současně vysílač i přijímač. To znamená, že dvě (nebo více) ESP32 si mohou navzájem posílat data zároveň.

ESP32 Blog image

🧠 Jak ESP‑NOW funguje

ESP‑NOW používá MAC adresy každého ESP32 k identifikaci peerů (zařízení) a odesílání dat právě jim. Každé ESP32 má unikátní MAC adresu, kterou si musíš vypsat, aby sis věděl, kam data posílat.

🧾 Jak získat MAC adresu ESP32

V kódu si můžeš přečíst MAC adresu takto:

esp-now.cpp
1#include <WiFi.h> 2#include <esp_wifi.h> 3 4void setup(){ 5 Serial.begin(115200); 6 WiFi.mode(WIFI_STA); 7 uint8_t baseMac[6]; 8 esp_wifi_get_mac(WIFI_IF_STA, baseMac); 9 Serial.printf("%02x:%02x:%02x:%02x:%02x:%02x\n", 10 baseMac[0], baseMac[1], baseMac[2], 11 baseMac[3], baseMac[4], baseMac[5]); 12} 13 14void loop(){}

Toto ti vypíše 6‑bytovou adresu, kterou pak použiješ při párování zařízení pro ESP‑NOW.

🛠️ Kroky v programu (ESP‑NOW)

1. Inicializace ESP‑NOW

Musíš nejprve zapnout Wi‑Fi (např. jako STA) a pak ESP‑NOW:

esp-now.cpp
1WiFi.mode(WIFI_STA); 2esp_now_init();

2. Přidání peeru

Peer (jiné ESP32) se musí “přidat”… tedy spárovat:

esp-now.cpp
1esp_now_peer_info_t peerInfo = {}; 2memcpy(peerInfo.peer_addr, broadcastAddress, 6); 3peerInfo.channel = 0; 4peerInfo.encrypt = false; 5esp_now_add_peer(&peerInfo);

3. Odesílání dat

Data se posílají pomocí funkce:

esp-now.cpp
1esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));

4. Příjem dat

Na přijímači registruješ callback:

esp-now.cpp
1esp_now_register_recv_cb(OnDataRecv);

A callback vypadá třeba takto:

esp-now.cpp
1void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { 2 memcpy(&myData, incomingData, sizeof(myData)); 3 Serial.println(myData.a); 4}

To znamená, že když přijde packet, tato funkce se zavolá automaticky.

📌 Seznam nejčastěji používaných ESP‑NOW funkcí

➡️ esp_now_init() – inicializace protokolu
➡️ esp_now_add_peer() – párování s jiným zařízením
➡️ esp_now_send() – odeslání dat
➡️ esp_now_register_send_cb() – callback po odeslání
➡️ esp_now_register_recv_cb() – callback po přijetí dat

🧪 Praktický příklad: Point‑to‑Point

Vysílač (Sender):

✔ nastaví ESP‑NOW
✔ uloží MAC adresu
✔ vytvoří strukturu dat s proměnnými
✔ odešle tuto strukturu každých 2 s

Přijímač (Receiver):

✔ nastaví ESP‑NOW
✔ registruje callback pro příjem
✔ zobrazí přijatá data přes Serial Monitor

📡 Další info & experimenty

  • Podle některých testů může ESP‑NOW udržet spojení až cca 220 m ve volném prostoru (bez překážek).
  • Existují i pokročilejší implementace s automatickým párováním (bez ruční znalosti MAC adres).
  • ESP‑NOW lze kombinovat s Wi‑Fi web‑serverem (např. dashboard pro data z více senzorů).

🏁 Shrnutí (overview)

ESP‑NOW je rychlý bezdrátový protokol pro komunikaci mezi ESP32 bez Wi‑Fi routeru. Ideální pro:

✅ IoT projekty
✅ dálkové ovládání
✅ sběr dat z více zařízení
✅ nízká latence

ESP‑NOW používá MAC adresy, má jednoduché API a je dostupný přímo v Arduino IDE prostředí.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.