IoT ierīces var paveikt lieliskas lietas, taču būtiska vienādojuma daļa ir saziņas veids. To var pārvaldīt, izmantojot ESP-01 moduli.

Budžets nebūt nenozīmē, ka nevarat uzņemties progresīvus DIY projektus. Ja meklējat nelielu, pieejamu un ērtu WiFi moduli, lai paplašinātu savus IoT projektus, ESP-01 modulis ir lieliska izvēle. Tomēr šāda moduļa integrēšana ar vieglu protokolu, piemēram, MQTT, var būt sarežģīta, it īpaši, ja esat iesācējs IoT attīstībā.

ESP-01 plates programmēšana vien var būt sarežģīta, salīdzinot ar citiem ESP8266 sērijas moduļiem. Bet apskatīsim visas aparatūras un programmatūras iestatīšanas pamatus, kas nepieciešami, lai sāktu lietot moduli, kā arī to, kā vienkāršā un procesuālā veidā iestatīt MQTT.

Iepazans ar valdi

ESP8266 ESP-01 ir mazs un kompakts WiFi modulis, kas ir aprīkots ar ESP8266EX mikroshēmu, kas ir ļoti integrēts SoC, kas paredzēts IoT lietojumprogrammām.

Modulis ietver vienas mikroshēmas bezvadu mikrokontrolleri ar TCP/IP protokola steku un spēj izveidot savienojumu ar bezvadu tīklu vai darboties kā piekļuves punkts. ESP-01 modulim ir arī 2x4 tapu galvene, kas nodrošina piekļuvi tā GPIO tapām, strāvai un zemei, kā arī UART interfeisam.

instagram viewer

Aparatūras iestatīšana

Modulis vispār nav draudzīgs maizes dēļam. Ērtības labad varat iegādāties jau iebūvētu pagarinājuma dēli vai vienkārši izmantot vecmodīgu ceļu — izmantojot džemperu vadus un maizes dēli.

Ir īpašs programmētājs ESP8266 Serial Module Board, kas var atvieglot jūsu programmēšanas pieredzi. Ja vēlaties iet šo ceļu, DIYHOBI ir ērta apmācība par to, kā programmu ESP-01 modulī ievietot, izmantojot programmētāju (tostarp USB uz TTL CH340G pārveidotāja moduļa adapteri).

Bet jūs joprojām varat ieprogrammēt moduli, izmantojot Arduino plati. Uzziņai skatiet tālāk redzamo ķēdes shēmu.

Lai gan tas var izskatīties vilinoši, mēs parasti neiesakām savienot moduli tieši ar Arduino 3,3 v kontaktu, jo tam ir nepieciešama lielāka strāva, nekā nodrošina tapa. Tā vietā pievienojiet Arduino 5V uz 3,3 V sprieguma regulatoru, piemēram, LM1117/LD117, pēc tam barojiet WiFi moduli no regulatora.

Nepievienojiet VCC un CH_PD ESP tapas uz 5V Arduino tapa. Moduļa pievienošana 5V jauda var to sabojāt.

Visi kondensatori ir 10 uF un rezistors ir a 1 tūkst rezistors.

Programmatūras prasības

ESP-01 modulis parasti tiek izmantots ar Arduino platformu. Tādējādi programmatūras iestatīšana ir diezgan vienkārša, it īpaši, ja esat iepazinies ar Arduino C. Tomēr, ja esat vairāk pazīstams ar Raspberry, ir daudz Raspberry Pi IoT projekti Jūs varat mēģināt.

Šīs ir pamatprasības:

  • MQTT brokeris vai serveris (piemēram, Mosquitto vai CloudMQTT).
  • Arduino IDE ar ESP8266 galveno bibliotēku.
  • Arduino PubSubClient bibliotēka.

Jums jāatceras, ka sava MQTT servera atrašanās vieta nodrošina elastību jūsu projektos.

Nepieciešamo bibliotēku instalēšana

Vispirms lejupielādējiet un instalējiet Arduino IDE savā datorā. Pēc instalēšanas atveriet Arduino IDE un dodieties uz Fails > Preferences.

Iekš Papildu dēļu pārvaldnieka vietrāži URL laukā ievadiet šādu URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Klikšķis labi lai aizvērtu logu Preferences.

Tālāk dodieties uz Rīki > Valde > Valdes vadītājs.

Pēc tam meklējiet esp8266 un instalējiet esp8266 plates pakotni — tas ietver visas ESP-01 modulim nepieciešamās bibliotēkas.

Lai instalētu PubSubClient bibliotēku, dodieties uz Skice > Iekļaut bibliotēku > Pārvaldīt bibliotēkas.

Meklēt PubSubClient un noklikšķiniet uz bibliotēkas, lai to instalētu.

Kad visas nepieciešamās bibliotēkas ir instalētas, varat sākt ESP-01 moduļa programmēšanu. Tomēr jāatzīmē viena lieta, ka varat izmantot Wifi.h kas ir iekļauts bibliotēkā, vai lejupielādējiet ESPWifi.h bibliotēka un iekļaujiet to savā skicē.

Savienojuma izveide starp ESP-01 un MQTT Broker

MQTT brokeris ir serveris, kas darbojas kā starpnieks starp MQTT klientiem. Tas ļauj klientiem sūtīt un saņemt ziņojumus viens otram un no tā, izmantojot publicēšanas-abonēšanas modeli.

Lai savienotu savu ESP-01 moduli ar MQTT brokeri, jums būs jānorāda brokera IP adrese un porta numurs savā kodā. Jums būs arī jānorāda unikāls klienta ID, kas brokerim identificē jūsu ESP-01 moduli.

Pirmkārt, skices augšdaļā iekļaujiet nepieciešamās bibliotēkas

#iekļauts <ESP8266WiFi.h>
#iekļauts <PubSubClient.h>

Pēc tam definējiet WiFi un MQTT savienojuma informāciju.

konstchar* ssid = "YOUR_SSID";
konstchar* parole = "TAVA PAROLE";
konstchar* mqtt_server = "YOUR_MQTT_SERVER";

Neaizmirstiet aizstāt vietturus ar savu WiFi un MQTT savienojuma informāciju.

Pēc tam izveidojiet WiFi klientu un izveidojiet savienojumu ar vietējo WiFi tīklu:

WiFiClient espClient;
nederīgssetup_wifi(){
kavēšanās (10);
WiFi.begin (ssid, parole);
kamēr (WiFi.status() != WL_CONNECTED) {
kavēšanās (500);
}
}

Šī funkcija ir jāizsauc uzstādīt() jūsu skices funkcija.

Pēc tam jums būs jāizveido MQTT klients un jāizveido savienojums ar savu MQTT brokeri:

PubSubClient klients(espClient);
nederīgsatkārtoti izveidot savienojumu(){
kamēr (!client.connected()) {
ja (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Abonēt tēmu
client.subscribe("tests/tēma");
} cits {
kavēšanās (5000);
}
}
}

Kad esat izveidojis savienojumu ar savu MQTT brokeri, varat sākt publicēt un abonēt tēmas.

Datu publicēšana no ESP-01 uz MQTT Broker

Tagad, kad esat veiksmīgi savienojis savu ESP01 moduli ar MQTT brokeri, apskatīsim, kā jūs varat publicēt datus no ESP-01 brokerim.

Lai publicētu datus, izmantojiet client.publish() funkcija, lai publicētu ziņojumu inTopic temats.

client.publish("Tēmā", "Sveiki no ESP-01");

Tādējādi tiks publicēts ziņojums "Sveiki no ESP-01". inTopic temats.

Varat arī publicēt ESP-01 sensora datus brokerim. Piemēram, ja jūsu ESP-01 ir pievienots temperatūras sensors, varat publicēt temperatūras datus brokerim, kā parādīts tālāk.

peldēt temperatūra = 25.5;
Stīga Temperatūras virkne = Stīga(temperatūra);
char Temperatūra Char[5];
Temperatūras virkne.toCharArray(temperatūraChar, 5);
client.publish("Temperatīvs", temperatūraChar);

Temperatūras dati tiks publicēti vietnē Temp temats.

Datus var publicēt ciklā vai regulāri, atkarībā no jūsu projekta prasībām. Pārliecinieties, vai jūs nepārpludināt brokeri ar pārāk daudz datu un publicējat saprātīgā intervālā.

MQTT tēmu abonēšana un datu saņemšana par ESP-01

Lai abonētu tēmu, izmantojiet client.subscribe() funkciju. Mūsu tālāk norādītajā gadījumā klients abonē ārpustēma temats.

client.subscribe("ārpus tēma");

Kad esat abonējis tēmu, varat saņemt par šo tēmu publicētos ziņojumus, izmantojot client.loop() funkcija cilpa () funkcija zemāk esošajā skicē:

nederīgscilpa(){
ja (!klients.savienots()) {
atkārtoti izveidot savienojumu ();
}
klients.cilpa();
}

Tas nepārtraukti pārbaudīs jaunus ziņojumus un izpildīs atzvanīšanas funkciju, kad tiks saņemts jauns ziņojums.

Lai apstrādātu saņemtos ziņojumus, definējiet atzvanīšanas funkciju, piemēram, tālāk norādīto:

nederīgsatzvani(char* temats, baits* krava, neparakstīta starpt garums){
// Izdrukājiet saņemto ziņojumu
Seriāls.drukāt("Saņemts ziņojums par tēmu: ");
Seriāls.drukāt(temats);
Seriāls.drukāt(". Ziņa: ");
priekš (starpt i=0iSeriāls.print((char)kravnesība[i]);
}
Seriāls.println();
}

Šī funkcija tiks izsaukta, kad tiks saņemta jauna ziņa par abonēto tēmu. Tas izdrukās saņemto ziņojumu seriālajā monitorā.

QoS (pakalpojuma kvalitātes) līmeņu un drošības līdzekļu izmantošana

Viens no svarīgākajiem paņēmieniem, ko izmanto pieprasījumu apstrādē, ir QoS (pakalpojuma kvalitātes) līmeņu izmantošana MQTT ziņojumiem. QoS līmeņi nosaka, kā brokerim un abonentiem ir jāapstrādā jūsu ziņojumi. Ir trīs QoS līmeņi: 0, 1 un 2.

QoS līmenis 0 ir vismazāk uzticams, jo ziņojumi tiek nosūtīti tikai vienu reizi un netiek garantēti, ka tie tiks piegādāti abonentam. 1. QoS līmenis ir uzticamāks, jo ziņojumi tiek nosūtīti vismaz vienu reizi un tiek garantēti, ka tie tiks piegādāti abonentam vismaz vienu reizi. QoS 2. līmenis ir visuzticamākais, jo ziņojumi tiek nosūtīti tieši vienu reizi un tiek garantēti, ka tie tiks piegādāti abonentam tieši vienu reizi. Jūsu ierīču saziņas veids atbilst citām ierīcēm izplatītas lietu interneta (IoT) drošības problēmas un labojumi vēlaties palikt virsū.

Lai izmantotu QoS līmeņus, varat norādīt vajadzīgo līmeni, publicējot ziņojumus, izmantojot client.publish() funkcija:

client.publish("temats", "Sveika pasaule!", 1);

Tādējādi ziņojums tiks publicēts Sveika pasaule! uz temats tēma ar QoS līmeni 1.

Tiek izmantota vēl viena uzlabota tehnika Pēdējā griba un Derība (LWT) ziņas. LWT ziņojumi ir ziņojumi, kurus brokeris nosūta, kad klients negaidīti atvienojas. Mēs uzskatām, ka tas ir svarīgi, lai noteiktu bezsaistes ierīces vai aktivizētu darbības, kad ierīce atvienojas.

Lai izmantotu LWT ziņojumus, varat norādīt LWT ziņojumu, kad izveidojat savienojumu ar brokeri, izmantojot client.setWill() funkcija:

client.setWill("statuss", "bezsaistē", 1, taisnība);

Tas iestatīs LWT ziņojumu uz bezsaistē uz statusu tēma ar QoS 1. līmeni un saglabāšanas karodziņš ir iestatīts uz taisnība.

Sagatavojieties nākamajam IoT projektam

ESP-01 modulis ir pieņemams un kompakts risinājums IoT projektiem, un, izmantojot to kopā ar MQTT, jūsu projekts var sasniegt nākamo līmeni. Lai gan sākotnējā iestatīšana var būt biedējoša, MQTT priekšrocības, piemēram, viegla komunikācija un augsta mērogojamība, padara to par vērtīgu ieguldījumu.