Zdravím,prosím o pomoc pri riešení DO pomocou ESP32, protokol Now,aby nebola potrebná sieť WiFi.Potrebujem ovládať
stav jedného pinu(HIGH,LOW) na ESP32 pomocou tlačítka na druhom ESP32 a naopak.
Ďakujem boro
Diaľkové ovládanie pomocou ESP Now.
Moderátor: Moderátori
Re: Diaľkové ovládanie pomocou ESP Now.
Pre zrhnutie mas dva ESP32 a na kazdom jedno tlacidlo... Ak stlacim tlacidlo na ESP32_1 tak na ESP_2 sa rozsvieti led a ak stlacim tlacidlo na ESP32_2 tak sa rozsvieti led na ESP32_1? Rezim spojenia dvoch ESP32 ma byt na priamo teda peer-to-peer... Sú rovnocenné alebo jeden je Master a druhy Slave?
0
Re: Diaľkové ovládanie pomocou ESP Now.
Dobrý deň,áno režim spojenia má byť napriamo peer-to-peer a sú rovnocenné.Prípadne by mohol byť aj Master-Slave.Skúšal som :Bezdrátová komunikace ESP-Now s ESP32 (Arduino návody).Funguje mi to podľa autora,ale neviem ako by som ten skeč mohol prispôsobiť mojim potrebám.
boro
boro
0
Re: Diaľkové ovládanie pomocou ESP Now.
No to je nevýhoda arduina.... Aj na zložité veci sú návody len skopírujes a ides aj ked nevies co to vlastne robi
ESP_Now som este nepoužil ja by som to riešil pomocou http klienta... Ale ako pozerám ten skeč tak zdá sa mi, že tam nieje ani práca s príjmaním dát...
-- Spojený príspevok 12 Okt 2020, 09:29 --
Trochu som to preštudoval a ak máte čas na to to vyskúšať... Ja som to neskúšal takže skúsim poradiť iba z rýchlika... skúsil by som urobiť zmenu v callbacku OnDataRecieve...
Keďže tam máme výpis na sériovú linku Serial.print("ttLast Packet Recv Data: "); Serial.println((char *)data); tak potom (char *)data musia obsahovať prijaté dáta... Tu by som to rozdelil a dal by som klasickú podmienku if
To je čo sa týka príjmatela... Na odosielatelovi by som to spravil obdobne vo funkcii SendData()
![Very Happy :D](./images/smilies/icon_biggrin.gif)
-- Spojený príspevok 12 Okt 2020, 09:29 --
Trochu som to preštudoval a ak máte čas na to to vyskúšať... Ja som to neskúšal takže skúsim poradiť iba z rýchlika... skúsil by som urobiť zmenu v callbacku OnDataRecieve...
Kód: Vybrať všetko
void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
char macStr[18];
unsigned long realTime;
snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
Serial.print("ttLast Packet Recv from: "); Serial.println(macStr);
Serial.print("ttLast Packet Recv Data: "); Serial.println((char *)data);
Serial.println("");
realTime = millis();
Serial.print("Recv delay: "); Serial.print(realTime - lastRecvTime); Serial.println(" ms.");
lastRecvTime = realTime;
}
Kód: Vybrať všetko
if (data == "ON") {
digitalWrite(x, HIGH);}
else if (ledka == "OFF") {
digitalWrite(x, HIGH);}
Kód: Vybrať všetko
val = digitalRead(pinTlacitka);
if (val == HIGH) {
data = "ON";
} else {
data = "OFF";
}
esp_err_t result = esp_now_send(peer_addr, data, DATASIZE);
0
Re: Diaľkové ovládanie pomocou ESP Now.
Ďakujem pekne za radu, a chcel by som sa ešte spýtať,či predposledný kód nemá byť takto:
if(data=="ON"){
digitalWrite(x,HIGH);}
else if (data=="OFF"){
digitalWrite(x,LOW);}
S pozdravom boro
-- Spojený príspevok 13 Okt 2020, 14:16 --
Ešte niečo.Vložil som to do skeču a pri kompilácii sa to zastavilo pri: data="ON"; a vypísalo:incompatibile types in.....
Tá konšrukcia musí byť iná.Aká?
Ďakujem boro
if(data=="ON"){
digitalWrite(x,HIGH);}
else if (data=="OFF"){
digitalWrite(x,LOW);}
S pozdravom boro
-- Spojený príspevok 13 Okt 2020, 14:16 --
Ešte niečo.Vložil som to do skeču a pri kompilácii sa to zastavilo pri: data="ON"; a vypísalo:incompatibile types in.....
Tá konšrukcia musí byť iná.Aká?
Ďakujem boro
0
Re: Diaľkové ovládanie pomocou ESP Now.
Ano, tá podmieka IF môže byť aj takto... to už záleží čisto na programátorovi, ako nastaví celú logiku...
Skús sem dať to chybové hlásenie, skúsim ti stým poradiť alebo napíš súkromnú správu nech s tým nezaťažujeme fórum.... Ale podľa mňa to len bude zlý dátový typ...
Vyskúšal by som to aj ja len problém, že nemám momentálne 2ks ESPčiek na ktorých by som to mohol odtestovať... Ja som všetky takéto úlohy riešil čisto len cez HTTP pretože mi to príde, že je tam viac možností a hlavne je to kompatibilné a univerzálne aj s inými vecami a s celou sieťou okolo...
-- Spojený príspevok 13 Okt 2020, 14:47 --
Z návodu zistujem, že funkcia send data používa pre posielanie dát integer...
esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
takže prepíš si to takto a malo by to fungovať....
Teraz dúfam, že som netrepol chujovinu a kolegovia z fóra ma neukameňujú za to
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Skús sem dať to chybové hlásenie, skúsim ti stým poradiť alebo napíš súkromnú správu nech s tým nezaťažujeme fórum.... Ale podľa mňa to len bude zlý dátový typ...
Vyskúšal by som to aj ja len problém, že nemám momentálne 2ks ESPčiek na ktorých by som to mohol odtestovať... Ja som všetky takéto úlohy riešil čisto len cez HTTP pretože mi to príde, že je tam viac možností a hlavne je to kompatibilné a univerzálne aj s inými vecami a s celou sieťou okolo...
-- Spojený príspevok 13 Okt 2020, 14:47 --
Z návodu zistujem, že funkcia send data používa pre posielanie dát integer...
esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
takže prepíš si to takto a malo by to fungovať....
Kód: Vybrať všetko
val = digitalRead(pinTlacitka);
if (val == HIGH) {
data = 1;
} else {
data = 0;
}
esp_err_t result = esp_now_send(peer_addr, data, DATASIZE);
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 6 Odpovedí
- 2982 Zobrazení
-
Posledný príspevok od používateľa Atlan
-
- 1 Odpovedí
- 1102 Zobrazení
-
Posledný príspevok od používateľa MAKOSYS
-
- 14 Odpovedí
- 863 Zobrazení
-
Posledný príspevok od používateľa pocitujlasku
-
- 2 Odpovedí
- 947 Zobrazení
-
Posledný príspevok od používateľa AdamVarga
-
- 0 Odpovedí
- 1303 Zobrazení
-
Posledný príspevok od používateľa MrWifiHifi