Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Kunin ang Address ng Board Mac
- Hakbang 2: Paano Gawing Gumagana ang ESP-NGAYON
- Hakbang 3: Mga FUNCTION NG ESP-NGAYON (ESP32)
- Hakbang 4: Mga FUNCTION NG ESP-NGAYON (ESP8266)
- Hakbang 5: One Way Communication (ESP32 Bilang Nagpapadala)
- Hakbang 6: One Way Communication (ESP8266 Bilang Nagpapadala)
- Hakbang 7: DALANG PARAAN NG KOMUNIKASYON
- Hakbang 8: Mga SANGGUNIAN
Video: Paano Gumawa ng Maramihang ESP Talk Sa Pamamagitan ng ESP-NGAYON Gamit ang ESP32 at ESP8266: 8 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Sa aking patuloy na proyekto, kailangan ko ng maraming ESP upang makipag-usap sa bawat isa nang walang isang router. Upang magawa ito, gagamitin ko ang ESP-NGAYON upang makakonekta ang wireless sa bawat isa nang walang router sa ESP.
Mga gamit
Mga Bagay na Ginamit Ko:
Modyul ng ESP32 DEV
NODEMCU 1.0 (Module ng ESP12E)
Hakbang 1: Kunin ang Address ng Board Mac
Sa pamamagitan ng ESP-ngayon, ang mga aparatong ESP ay nakikipag-usap sa bawat isa sa pamamagitan ng pagpapadala ng data sa kanilang natatanging address habang nakakonekta sa isang panloob na network ng acces point na ginawa sa pag-intilaze ng esp ngayon.. Kaya, tukuyin ang MAC address ng bawat aparato. Nakalakip ang aking Mga Setting ng Linya ng ESP32 at ESP8266
PARA SA ESP32
# isama ang "WiFi.h" // Upang ma-access ang mga kakayahan sa ESP32 WIFI
void setup () {Serial.begin (115200); Serial.print ("ESP32 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // prints its MAC Address} void loop () {}
PARA SA ESP8266
#include // Library na ginamit upang ma-access ang mga kakayahan ng ESP8266 WIFI
void setup () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // prints its MAC Address} void loop () {}
Ang aking ADDRESS sa MAC ay:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Hakbang 2: Paano Gawing Gumagana ang ESP-NGAYON
Narito ang isang pangkalahatang ideya sa kung paano ito gawing gumagana:
- Isama ang esp ngayon at mga library ng wifi
- I-save ang mac address ng tatanggap na ESP
- Tukuyin ang istraktura ng data ng ipadala / natanggap na mensahe
- Sa pag-setup, itakda ang wifi sa mode ng istasyon
- Pasimulan ang esp_now
- gumawa at magparehistro ng call back function na tinawag pagkatapos ng pagpapadala at pagtanggap ng data
- Para sa Esp8266, tukuyin ang papel nito
- irehistro ang peer o tatanggap esp
- Magpadala ng data
Hakbang 3: Mga FUNCTION NG ESP-NGAYON (ESP32)
esp_now_init (walang bisa)
Bumalik:
- ESP_OK: magtagumpay
- ESP_ERR_ESPNOW_INTERNAL: Panloob na error
Paglalarawan:
Simulan ang pagpapaandar ng ESPNOW
esp_now_register_send_cb (cb)
Nagbabalik:
- ESP_OK: magtagumpay
- ESP_ERR_ESPNOW_NOT_INIT: Ang ESPNOW ay hindi naisauna
- ESP_ERR_ESPNOW_INTERNAL: panloob na error
Mga Parameter:
-
cb: pangalan ng pagpapaandar ng callback pagkatapos magpadala ng data ng ESPNOW kasama ang mga parameter na ito:
-
void cb (Const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: mac address ng tatanggap
-
katayuan:
- 1 = tagumpay
- 0 = mabibigo
-
Paglalarawan:
Tumawag sa pagpapaandar na OnDataSent pagkatapos magpadala ng data ng ESPNOW
esp_now_add_peerconst esp_now_peer_info_t * peer)
Nagbabalik:
- ESP_OK: magtagumpay
- ESP_ERR_ESPNOW_NOT_INIT: Ang ESPNOW ay hindi naisauna
- ESP_ERR_ESPNOW_ARG: di-wastong argumento
- ESP_ERR_ESPNOW_Full: puno ng listahan ng mga kapantay
- ESP_ERR_ESPNOW_NO_MEM: wala sa memorya
- ESP_ERR_ESPNOW_EXIST: ang peer ay mayroon na
Mga Parameter:
-
peer: impormasyon ng peer na may sumusunod na data:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; Ang ESPNOW peer MAC address na iyon din ang MAC address ng istasyon o softap
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW peer local master key na ginagamit upang i-encrypt ang data
-
uint8_t channel
Ang Wi-Fi channel na ginagamit ng peer upang magpadala / makatanggap ng data ng ESPNOW. Kung ang halaga ay 0, gamitin ang kasalukuyang channel kung aling mga istasyon o softap ang nasa. Kung hindi man, dapat itong itakda bilang ang channel kung saan naka-on ang istasyon o softap
-
wifi_interface_t ifidx
Ang interface ng Wi-Fi na ginagamit ng peer upang magpadala / makatanggap ng data ng ESPNOW
-
naka-encrypt ang bool
Ang data ng ESPNOW na ipinapadala / natatanggap ng kapantay na ito ay naka-encrypt o hindi
-
walang bisa * priv
Ang pribadong data ng ESPNOW peer
-
Paglalarawan:
Magdagdag ng isang peer to peer list
esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Nagbabalik:
- ESP_OK: magtagumpay
- ESP_ERR_ESPNOW_NOT_INIT: Ang ESPNOW ay hindi naisauna
- ESP_ERR_ESPNOW_ARG: di-wastong argumento
- ESP_ERR_ESPNOW_INTERNAL: panloob na error
- ESP_ERR_ESPNOW_NO_MEM: wala sa memorya
- ESP_ERR_ESPNOW_NOT_FOUND: hindi nahanap ang kapantay
- ESP_ERR_ESPNOW_IF: kasalukuyang WiFi interface ay hindi tumutugma sa peer
Mga Parameter:
- peer_addr: peer MAC address
- data: data na ipadala
- len: haba ng data
Paglalarawan:
Magpadala ng data ng ESPNOW. Para sa ilang mga kaso, nangyayari ito:
- Kung ang peer_addr ay hindi NULL, magpadala ng data sa peer na ang MAC address ay tumutugma sa peer_addr
- Kung ang peer_addr ay Null, magpadala ng data sa lahat ng mga kapantay na naidagdag sa listahan ng mga kapantay
- Ang maximum na haba ng data ay dapat mas mababa sa ESP_NOW_MAX_DATA_LEN
- Ang buffer na itinuro ng argument ng data ay hindi kailangang wasto pagkatapos ng pagbalik ng esp_now_send
esp_now_register_recv_cb (cb)
Nagbabalik:
- ESP_OK: magtagumpay
- ESP_ERR_ESPNOW_NOT_INIT: Ang ESPNOW ay hindi naisauna
- ESP_ERR_ESPNOW_INTERNAL: panloob na error
Mga Parameter:
-
cb: pagpapaandar ng callback para sa pagtanggap ng data ng ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
mac address ng tatanggap
-
* data:
natanggap ang data
-
data_len
haba ng byte ng data
-
-
Paglalarawan:
Tawagan ang function na CB pagkatapos matanggap ang data ng ESPNOW
Hakbang 4: Mga FUNCTION NG ESP-NGAYON (ESP8266)
FUNCTIONS DESCRIPTION ESP32 ESP8266
int esp_now_init (walang bisa)
Nagbabalik:
- 1 = tagumpay
- 0 = mabibigo
Paglalarawan
Simulan ang pagpapaandar ng ESPNOW
int esp_now_set_self_role (u8 role)
Mga Parameter:
- ESP_NOW_ROLE_IDLE: hindi pinapayagan ang paghahatid ng data.
- ESP_NOW_ROLE_CONTROLLER: ang priyoridad ay ibinibigay sa Sation interface
- ESP_NOW_ROLE_SLAVE: ang priyoridad ay ibinibigay sa interface ng SoftAP
- ESP_NOW_ROLE_COMBO: ang priyoridad ay ibinibigay sa SoftAPinterface
Paglalarawan
Itinatakda ang Tungkulin ng aparato
int esp_now_register_send_cb (cb)
Nagbabalik:
- 1 = tagumpay
- 0 = mabibigo
Mga Parameter:
-
cb: pangalan ng pagpapaandar ng callback pagkatapos magpadala ng data ng ESPNOW kasama ang mga parameter na ito:
-
void cb (Const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: mac address ng tatanggap
-
katayuan:
- 1 = tagumpay
- 0 = mabibigo
-
Paglalarawan
Tumawag sa pagpapaandar na OnDataSent pagkatapos magpadala ng data ng ESPNOW
int esp_now_add_peer (u8 * mac_addr, u8 role, u8 channel, u8 * key, u8 key_len)
Nagbabalik:
- 1 = tagumpay
- 0 = mabibigo
Mga Parameter:
-
mac_addr
mac address ng kapantay
- papel
-
channel
Kung ang halaga ay 0, gamitin ang kasalukuyang channel kung aling mga istasyon o softap ang nasa. Kung hindi man, dapat itong itakda bilang ang channel kung saan naka-on ang istasyon o softap
-
* susi
susi para sa pag-encrypt
-
key_len
haba ng susi
Paglalarawan:
Magdagdag ng isang peer to peer list
int esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Nagbabalik:
- 1 = Tagumpay
- 0 = Nabigo
Mga Parameter:
- peer_addr: peer MAC address
- data: data na ipadala
- len: haba ng data
Paglalarawan:
Magpadala ng data ng ESPNOW. Para sa ilang mga kaso, nangyayari ito:
- Kung ang peer_addr ay hindi NULL, magpadala ng data sa peer na ang MAC address ay tumutugma sa peer_addr
- Kung ang peer_addr ay Null, magpadala ng data sa lahat ng mga kapantay na naidagdag sa listahan ng mga kapantay
- Ang maximum na haba ng data ay dapat mas mababa sa ESP_NOW_MAX_DATA_LEN
- Ang buffer na itinuro ng argument ng data ay hindi kailangang wasto pagkatapos ng pagbalik ng esp_now_send
int esp_now_register_recv_cb (cb)
Nagbabalik:
- 1 = Tagumpay
- 0 = Nabigo
Mga Parameter:
-
cb: pagpapaandar ng callback para sa pagtanggap ng data ng ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
mac address ng tatanggap
-
* data:
natanggap ang data
-
data_len
haba ng byte ng data
-
-
Paglalarawan:
Tawagan ang function na CB pagkatapos matanggap ang data ng ESPNOW
Hakbang 5: One Way Communication (ESP32 Bilang Nagpapadala)
Ang ESP32 ay nagpapadala ng data sa isang ESP8266. kasama ang code na ito. Baguhin ang broadcastAddress sa iyong address ng mac ng tumatanggap na tumatanggap. Ang akin ay A4: CF: 12: C7: 9C: 77
// Magdagdag ng mga kinakailangang aklatan
#include // Upang ma-access ang esp na gumagana ngayon #include // Upang Magdagdag ng Mga Kakayahang Wifi sa ESP32 // i-save ang MAC Address sa isang array na pinangalanang broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC address ng aking tatanggap / * tukuyin ang mga uri ng data ng maramihang mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng ito bilang struct_message * / typedef struktural_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang struct_message na tinatawag na myData struct_message myData; // function na tinatawag kapag ipinadala ang data upang mai-print ang status nito na walang bisa OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Tagumpay sa Paghahatid": "Nabigo ang Paghahatid"); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()! = ESP_OK) {Serial.println ("Error na nagpapasimula sa ESP -NOW "); bumalik; } // tawagan ang pagpapaandar na OnDataSent pagkatapos magpadala ng data ng ESPNOW esp_now_register_send_cb (OnDataSent); // Magrehistro ng peer esp_now_peer_info_t peerInfo; // ipasimula at italaga ang impormasyon ng kapwa bilang isang pointer sa isang addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // copy the value of broadcastAddress with 6 bytes to peerInfo.peer_addr peerInfo.channel = 0; // channel kung saan pinag-uusapan ang esp. Ang 0 ay nangangahulugang hindi natukoy at ipapadala ang data sa kasalukuyang channel. Ang 1-14 ay wastong mga channel na pareho sa lokal na aparato na peerInfo.encrypt = false; // not encrypt // Idagdag ang aparato sa nakapares na listahan ng aparato kung (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nabigong magdagdag ng peer"); bumalik; }} void loop () {// Itakda ang mga halaga upang maipadala ang strcpy (myData.a, "ITO AY ISANG CHAR"); // save "ITO AY ISANG CHAR" upang mai-variable ang isang aking "data" na tinukoy nang mas maaga myData.b = random (1, 20); // save a random value myData.c = 1.2; // save a float myData.d = "Hello"; // save a string myData.e = false; // save a bool // Magpadala ng data na mas mababa sa o pantay na 250 bytes sa pamamagitan ng ESP-NGAYON at ibabalik ang katayuan nito esp_err_t resulta = esp_now_send (broadcastAddress, (uint8_t *) at myData, sizeof (myData)); kung (resulta == ESP_OK) {Serial.println ("Ipinadala nang matagumpay"); } iba pa {Serial.println ("Error sa pagpapadala ng data"); } pagkaantala (2000); }
Ang ESP8266 ay tumatanggap ng data mula sa ESP32 gamit ang code na ito.
// Magdagdag ng mga kinakailangang aklatan
#include // To Add Wifi Capilities on ESP32 #include // To access the esp now functions / * tukuyin ang mga uri ng data ng maramihang mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng ito bilang struct_message * / typedef struct struct_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang variable na struct_message na tinatawag na myData struct_message myData; // function na tinawag kapag natanggap ang data at na-print ito na walang bisa OnDataRecv (uint8_t * mac, uint8_t * papasok naData, uint8_t len) {memcpy (& myData, papasok naData, laki ng (myData)); Serial.print ("Natanggap ang mga byte:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()! = 0) {Serial.println ("Error sa pagsisimula ng ESP-NGAYON"); bumalik; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Tinutukoy ang papel na ginagampanan ng esp esp_now_register_recv_cb (OnDataRecv); // call the function OnDataRecv pagkatapos matanggap ang data ng ESPNOW} void loop () {}
Hakbang 6: One Way Communication (ESP8266 Bilang Nagpapadala)
Ang ESP8266 ay nagpapadala ng data sa isang ESP32. kasama ang code na ito. Baguhin ang broadcastAddress sa iyong address ng mac ng tumatanggap na tumatanggap. Ang aking esp32 address ay 30: AE: A4: F5: 03: A4. Para sa iba pang mga pagpapaandar para sa esp8266 pumunta dito
// Magdagdag ng mga kinakailangang aklatan
#include // To Add Wifi Capilities on ESP32 #include // To access the esp now functions // save the MAC Address in an array called broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * tukuyin ang mga uri ng data ng maraming mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng ito bilang struct_message * / typedef struktural_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang nakabalangkas na variable na tinatawag na myData struct_message myData; // function na tinatawag kapag ipinadala ang data at nai-print ang status nito na walang bisa OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Tagumpay sa Paghahatid": "Nabigo ang Paghahatid"); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()) {Serial.println ("Error na nagpapasimula sa ESP-NGAYON"); bumalik; } esp_now_register_send_cb (OnDataSent); // call the function OnDataSent pagkatapos magpadala ng data ng ESPNOW // Idagdag ang aparato sa listahan ng nakapares na aparato kung (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Nabigong magdagdag ng peer"); bumalik; }} void loop () {// Itakda ang mga halaga upang maipadala ang strcpy (myData.a, "ITO AY ISANG CHAR"); // save "ITO AY ISANG CHAR" upang mai-variable ang isang aking "data" na tinukoy nang mas maaga myData.b = random (1, 20); // save a random value myData.c = 1.2; // save a float myData.d = "SP8266"; // save a string myData.e = false; // save a bool // Magpadala ng data na mas mababa sa o pantay na 250 bytes sa pamamagitan ng ESP-NGAYON at ibabalik ang katayuan nito int resulta = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); kung (esp_now_init ()! = 0) {Serial.println ("Naipadala nang may tagumpay"); } iba pa {Serial.println ("Error sa pagpapadala ng data"); } pagkaantala (2000); }
Ang ESP32 ay tumatanggap ng data mula sa isang ESP8266. kasama ang code na ito. Para sa iba pang mga pagpapaandar sa refere dito
// Magdagdag ng mga kinakailangang aklatan
#include // Upang ma-access ang esp na gumana ngayon #include // Upang Magdagdag ng Mga Kakayahang Wifi sa ESP32 / * tukuyin ang mga uri ng data ng maraming mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng mga ito bilang struct_message * / typedef struct struct_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang variable na struct_message na tinatawag na myData struct_message myData; // function na tinawag kapag natanggap ang data at na-print itong walang bisa OnDataRecv (const uint8_t * mac, const uint8_t * papasokData, int len) {memcpy (& myData, papasok naData, sizeof (myData)); Serial.print ("Natanggap ang mga byte:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()! = 0) {Serial.println ("Error sa pagsisimula ng ESP-NGAYON"); bumalik; } esp_now_register_recv_cb (OnDataRecv); // call the function OnDataRecv pagkatapos matanggap ang data ng ESPNOW} void loop () {}
Hakbang 7: DALANG PARAAN NG KOMUNIKASYON
Nagpapadala ang ESP32 ng data sa pagsisimula sa ESP8266. Ang ESP8266 ay naglilimbag ng natanggap na mensahe at pagkatapos ay ang mga tugon na kung saan ang ESP32 ay naka-print sa serial monitor nito.
CO32 ng ESP32
// Magdagdag ng mga kinakailangang aklatan
#include // Upang ma-access ang esp na gumagana ngayon #include // Upang Magdagdag ng Mga Kakayahang Wifi sa ESP32 // i-save ang MAC Address sa isang array na pinangalanang broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC address ng aking tatanggap / * tukuyin ang mga uri ng data ng maramihang mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng ito bilang struct_message * / typedef struktural_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang struct_message na tinatawag na myData struct_message myData; // function na tinatawag kapag ipinadala ang data upang mai-print ang status nito na walang bisa OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Tagumpay sa Paghahatid": "Nabigo ang Paghahatid"); kung (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} i-void ang OnDataRecv (const uint8_t * mac, const uint8_t * papasok naData, int len) {memcpy (& myData, papasok naData, sizeof (myData)); Serial.print ("Natanggap ang mga byte:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()! = ESP_OK) {Serial.println ("Error na nagpapasimula sa ESP -NOW "); bumalik; } // tawagan ang pagpapaandar na OnDataSent pagkatapos magpadala ng data ng ESPNOW esp_now_register_send_cb (OnDataSent); // Magrehistro ng peer esp_now_peer_info_t peerInfo; // ipasimula at italaga ang impormasyon ng kapwa bilang isang pointer sa isang addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // copy the value of broadcastAddress with 6 bytes to peerInfo.peer_addr peerInfo.channel = 0; // channel kung saan pinag-uusapan ang esp. Ang 0 ay nangangahulugang hindi natukoy at ipapadala ang data sa kasalukuyang channel. Ang 1-14 ay wastong mga channel na pareho sa lokal na aparato na peerInfo.encrypt = false; // not encrypt // Idagdag ang aparato sa nakapares na listahan ng aparato kung (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nabigong magdagdag ng peer"); bumalik; } esp_now_register_recv_cb (OnDataRecv); // call the function OnDataRecv pagkatapos matanggap ang data ng ESPNOW send_data (); } void loop () {} void send_data () {Serial.println ("Sending"); // Itakda ang mga halaga upang maipadala ang strcpy (myData.a, "ITO AY ISANG CHAR"); // save "ITO AY ISANG CHAR" upang mai-variable ang isang aking "data" na tinukoy nang mas maaga myData.b = random (1, 20); // save a random value myData.c = 1.2; // save a float myData.d = "ESP32"; // save a string myData.e = false; // save a bool // Magpadala ng data na mas mababa sa o pantay na 250 bytes sa pamamagitan ng ESP-NGAYON at ibabalik ang katayuan nito esp_err_t resulta = esp_now_send (broadcastAddress, (uint8_t *) at myData, sizeof (myData)); kung (resulta == ESP_OK) {Serial.println ("Ipinadala nang may tagumpay");} iba pa {Serial.println ("Error sa pagpapadala ng data"); }}
KODE ng ESP8266
// Magdagdag ng mga kinakailangang aklatan
#include // To Add Wifi Capilities on ESP32 #include // To access the esp now functions // save the MAC Address in an array called broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * tukuyin ang mga uri ng data ng maraming mga variable na nakabalangkas at pinalitan ng pangalan ang lahat ng ito bilang struct_message * / typedef struktural_message {char a [32]; int b; lumutang c; String d; bool e; } struct_message; // Lumikha ng isang variable na struct_message na tinatawag na myData struct_message myData; // function na tinawag kapag natanggap ang data at na-print ito na walang bisa OnDataRecv (uint8_t * mac, uint8_t * papasok naData, uint8_t len) {memcpy (& myData, papasok naData, laki ng (myData)); Serial.print ("Natanggap ang mga byte:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); send_data (); } void OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Tagumpay sa Paghahatid": "Nabigo ang Paghahatid"); kung (sendStatus! = 1) {send_data (); }} void send_data () {// Itakda ang mga halaga upang magpadala ng strcpy (myData.a, "ITO AY ISANG CHAR"); // save "ITO AY ISANG CHAR" upang mai-variable ang isang aking "data" na tinukoy nang mas maaga myData.b = random (1, 20); // save a random value myData.c = 1.2; // save a float myData.d = "ESP8266"; // save a string myData.e = false; // save a bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Itakda ang rate ng baud para sa serial na komunikasyon sa ESP Serial.begin (115200); // Itakda ang aparato bilang isang Wi-Fi Station WiFi.mode (WIFI_STA); // Sinisimulan ang wifi // Init ESP-NGAYON at ibabalik ang katayuan nito kung (esp_now_init ()! = 0) {Serial.println ("Error sa pagsisimula ng ESP-NGAYON"); bumalik; } kung (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Nabigong magdagdag ng peer"); bumalik; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Tinutukoy ang papel na ginagampanan ng esp esp_now_register_recv_cb (OnDataRecv); // call the function OnDataRecv pagkatapos matanggap ang data ng ESPNOW} void loop () {}
Hakbang 8: Mga SANGGUNIAN
ESPNOW_32_Example
Halimbawa ng ESPNOW_8266
WIFI.h
ESP8266WiFi.h
esp_now.h para sa ESP8266
esp_now.h para sa ESP32
esp_now opisyal na dokumento (Mas mahusay na Paliwanag ng mga pag-andar)
Opisyal na Gabay sa ESP-NGAYON
Inirerekumendang:
DIY -- Paano Gumawa ng isang Spider Robot Aling Maaaring Kontrolin Gamit ang Smartphone Gamit ang Arduino Uno: 6 Mga Hakbang
DIY || Paano Gumawa ng isang Spider Robot Aling Maaaring Kontrolin Gamit ang Smartphone Gamit ang Arduino Uno: Habang gumagawa ng isang Spider robot, maaaring malaman ng maraming mga bagay tungkol sa robot. Tulad ng paggawa ng Robots ay Nakakaaliw pati na rin ang mapaghamong. Sa video na ito ipapakita namin sa iyo kung paano gumawa ng isang Spider robot, na maaari naming mapatakbo gamit ang aming smartphone (Androi
Tutorial: Paano Kinokontrol ng Arduino ang Maramihang Parehong Mga Device sa Address sa pamamagitan ng Paggamit ng TCA9548A I2C Multiplexer: 3 Mga Hakbang
Tutorial: Paano Kinokontrol ng Arduino ang Maramihang Parehong Mga Device sa Address sa pamamagitan ng Paggamit ng TCA9548A I2C Multiplexer: Paglalarawan: Ang TCA9548A I2C Multiplexer Module ay upang paganahin upang ikonekta ang mga aparato na may parehong I2C address (hanggang sa 8 parehong address I2C) na naka-hook hanggang sa isang microcontroller. Ang multiplexer ay kumikilos bilang isang gatekeeper, pinapatay ang mga utos sa napiling set o
Paano Gumawa ng isang Drone Gamit ang Arduino UNO - Gumawa ng isang Quadcopter Gamit ang Microcontroller: 8 Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Drone Gamit ang Arduino UNO | Gumawa ng isang Quadcopter Gamit ang Microcontroller: PanimulaBisitahin ang Aking Youtube Channel Ang isang Drone ay isang napakamahal na gadget (produkto) na bibilhin. Sa post na ito tatalakayin ko, kung paano ko ito magagawa sa murang ?? At Paano mo magagawa ang iyong sarili tulad nito sa murang presyo … Sa India ang lahat ng mga materyales (motor, ESC
Paano Gumawa ng isang Device ng IoT upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: 5 Mga Hakbang
Paano Gumawa ng isang IoT Device upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: Ang Internet ng mga bagay (IoT) ay ang inter-networking ng mga pisikal na aparato (tinukoy din bilang " mga konektadong aparato " at " mga smart device "), mga gusali, at iba pang mga item - naka-embed sa electronics, software, sensor, actuators, at
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c