IoT įrenginiai gali padaryti šaunių dalykų, tačiau esminė lygties dalis yra tai, kaip jie bendrauja. Tai galite valdyti naudodami ESP-01 modulį.
Biudžetas nebūtinai reiškia, kad negalite imtis pažangių „pasidaryk pats“ projektų. Jei ieškote mažo, prieinamo ir patogaus „WiFi“ modulio, kad padidintumėte savo daiktų interneto projektus, ESP-01 modulis yra puikus pasirinkimas. Tačiau tokio modulio integravimas su lengvu protokolu, pvz., MQTT, gali būti sudėtingas, ypač jei esate naujokas IoT kūrimo srityje.
Vien ESP-01 plokštės programavimas gali būti sudėtingas, palyginti su kitais ESP8266 serijos moduliais. Tačiau peržvelkime pagrindinius visos aparatinės ir programinės įrangos sąrankos pagrindus, kurių reikia norint pradėti naudoti modulį, taip pat kaip paprastai ir procedūriškai nustatyti MQTT.
Susipažinimas su lenta
ESP8266 ESP-01 yra mažas ir kompaktiškas WiFi modulis su ESP8266EX lustu, kuris yra labai integruotas SoC, skirtas daiktų interneto programoms.
Modulis turi vieno lusto belaidį mikrovaldiklį su TCP/IP protokolo stekeliu ir gali prisijungti prie belaidžio tinklo arba veikti kaip prieigos taškas. ESP-01 modulyje taip pat yra 2x4 kontaktų antraštė, suteikianti prieigą prie jo GPIO kaiščių, maitinimo ir žemės bei UART sąsajos.
Aparatinės įrangos nustatymas
Modulis visiškai netinka duonos lentai. Patogumui galite nusipirkti iš anksto sukonstruotą prailginimo plokštę arba tiesiog eiti senamadišku būdu – naudodami trumpiklius ir duonos lentą.
Yra specialus programuotojas ESP8266 Serial Module Board, kuris gali palengvinti jūsų programavimo patirtį. Jei jums labiau patinka eiti šiuo keliu, DIYHOBI turi patogią pamoką, kaip perkelti programą į ESP-01 modulį naudojant programuotoją (įskaitant USB į TTL CH340G konverterio modulio adapterį).
Tačiau vis tiek galite programuoti modulį naudodami „Arduino“ plokštę. Norėdami gauti informacijos, žiūrėkite toliau pateiktą grandinės schemą.
Nors tai gali atrodyti viliojanti, paprastai nerekomenduojame jungti modulio tiesiai prie „Arduino“ 3,3 V kaiščio, nes tam reikia daugiau srovės, nei suteikia kaištis. Vietoj to prijunkite Arduino 5V prie 3,3 V įtampos reguliatoriaus, pvz., LM1117 / LD117, tada maitinkite WiFi modulį iš reguliatoriaus.
Nejunkite VCC ir CH_PD ESP kaiščiai prie 5V Arduino kaištis. Modulio prijungimas prie 5V galia gali jį sugadinti.
Visi kondensatoriai yra 10uF o rezistorius yra a 1 tūkst rezistorius.
Programinės įrangos reikalavimai
ESP-01 modulis dažniausiai naudojamas su Arduino platforma. Taigi programinės įrangos nustatymas yra gana paprastas, ypač jei esate susipažinę su Arduino C. Tačiau jei esate labiau susipažinę su Raspberry, jų yra daug Raspberry Pi IoT projektai galite pabandyti.
Tai yra pagrindiniai reikalavimai:
- MQTT brokeris arba serveris (pvz., Mosquitto arba CloudMQTT).
- Arduino IDE su ESP8266 pagrindine biblioteka.
- „Arduino“ skirta „PubSubClient“ biblioteka.
Turite atsiminti, kad vietinis MQTT serveris suteikia jums lankstumo įgyvendinant projektus.
Būtinų bibliotekų diegimas
Pirmiausia atsisiųskite ir įdiekite „Arduino IDE“ savo kompiuteryje. Įdiegę atidarykite „Arduino IDE“ ir eikite į Failas > Parinktys.
Viduje Papildomi lentų valdytojo URL adresai laukelyje įveskite šį URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Spustelėkite Gerai norėdami uždaryti nuostatų langą.
Toliau eikite į Įrankiai > Lenta > Valdybos vadovas.
Tada ieškokite esp8266 ir įdiekite esp8266 plokštės paketą – jame yra visos reikalingos ESP-01 modulio bibliotekos.
Norėdami įdiegti PubSubClient biblioteką, eikite į Eskizas > Įtraukti biblioteką > Tvarkyti bibliotekas.
Ieškoti PubSubClient ir spustelėkite biblioteką, kad ją įdiegtumėte.
Įdiegę visas reikalingas bibliotekas, galite pradėti programuoti ESP-01 modulį. Tačiau reikia atkreipti dėmesį į tai, kad galite naudoti Wifi.h kuris yra įtrauktas į biblioteką, arba atsisiųskite ESPWifi.h biblioteka ir įtraukite jį į savo eskizą.
Ryšio tarp ESP-01 ir MQTT brokerio užmezgimas
MQTT brokeris yra serveris, kuris veikia kaip tarpininkas tarp MQTT klientų. Tai leidžia klientams siųsti ir gauti pranešimus vieni kitiems ir iš jų, taikant publikavimo ir prenumeratos modelį.
Norėdami prijungti savo ESP-01 modulį prie MQTT brokerio, savo kode turėsite nurodyti brokerio IP adresą ir prievado numerį. Taip pat brokeriui turėsite pateikti unikalų kliento ID, kuris identifikuoja jūsų ESP-01 modulį.
Pirma, eskizo viršuje įtraukite reikiamas bibliotekas
#įtraukti <ESP8266WiFi.h>
#įtraukti <PubSubClient.h>
Tada apibrėžkite WiFi ir MQTT ryšio duomenis.
konstchar* ssid = „YOUR_SSID“;
konstchar* slaptažodis = "JŪSŲ SLAPTAŽODIS";
konstchar* mqtt_server = „YOUR_MQTT_SERVER“;
Nepamirškite pakeisti vietos žymenų savo „WiFi“ ir MQTT ryšio informacija.
Po to sukurkite „WiFi“ klientą ir prisijunkite prie vietinio „WiFi“ tinklo:
WiFiClient espClient;
tuštumasetup_wifi(){
vėlavimas (10);
WiFi.begin (ssid, Slaptažodis);
kol (WiFi.status() != WL_CONNECTED) {
vėlavimas (500);
}
}
Ši funkcija turėtų būti iškviesta setup () jūsų eskizo funkcija.
Tada turėsite sukurti MQTT klientą ir prisijungti prie savo MQTT brokerio:
PubSubClient klientas(espClient);
tuštumavėl prisijungti(){
kol (!client.connected()) {
jeigu (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Prenumeruoti temą
client.subscribe("testas/tema");
} Kitas {
vėlavimas (5000);
}
}
}
Prisijungę prie MQTT brokerio, galite pradėti skelbti ir prenumeruoti temas.
Duomenų paskelbimas iš ESP-01 MQTT brokeriui
Dabar, kai sėkmingai prijungėte savo ESP01 modulį prie MQTT brokerio, pažiūrėkime, kaip galite paskelbti duomenis iš ESP-01 brokeriui.
Norėdami paskelbti duomenis, naudokite client.publish() funkcija paskelbti pranešimą į temą tema.
client.publish("į temą", „Sveikas iš ESP-01“);
Bus paskelbtas pranešimas „Sveikas iš ESP-01“. į temą tema.
Taip pat galite paskelbti ESP-01 jutiklio duomenis brokeriui. Pavyzdžiui, jei prie ESP-01 prijungtas temperatūros jutiklis, temperatūros duomenis galite paskelbti brokeriui, kaip parodyta toliau.
plūdė temperatūra = 25.5;
Styga Temperatūros eilutė = Styga(temperatūra);
char Temperatūra Char[5];
Temperatūros eilutė.to CharArray(temperaturaChar, 5);
client.publish("Temperatūros", temperaturaChar);
Temperatūros duomenys bus paskelbti Temp tema.
Duomenys gali būti skelbiami ciklais arba reguliariais intervalais, atsižvelgiant į jūsų projekto reikalavimus. Įsitikinkite, kad neapkraunate brokerio per daug duomenų ir publikuojate tinkamu intervalu.
MQTT temų prenumerata ir duomenų gavimas ESP-01
Norėdami užsiprenumeruoti temą, naudokite client.subscribe() funkcija. Toliau nurodytam atvejui klientas užsiprenumeruoja OutTopic tema.
client.subscribe("ne tema");
Užsiprenumeravę temą, galite gauti pranešimus, paskelbtus ta tema, naudodami client.loop() funkcija kilpa () funkcija žemiau eskize:
tuštumakilpa(){
jeigu (!klientas.prisijungęs()) {
prisijungti iš naujo ();
}
klientas.kilpa();
}
Tai nuolat tikrins, ar nėra naujų pranešimų, ir vykdys atgalinio skambinimo funkciją, kai bus gautas naujas pranešimas.
Norėdami tvarkyti gautus pranešimus, nustatykite atgalinio skambinimo funkciją, kaip parodyta toliau:
tuštumaperskambink(char* tema, baitas* Naudingas krovinys, nepasirašytas tarpt ilgis){
// Išspausdinti gautą pranešimą
Serijinis.spausdinti("Gauta žinutė tema: ");
Serijinis.spausdinti(tema);
Serijinis.spausdinti(". Žinutė: ");
dėl (tarpt i=0;iSerijinis.spausdinti((char)naudingoji apkrova[i]);
}
Serijinis.println();
}
Ši funkcija bus iškviesta, kai bus gautas naujas pranešimas prenumeruojama tema. Jis išspausdins gautą pranešimą į serijinį monitorių.
QoS (paslaugų kokybės) lygių ir saugos funkcijų naudojimas
Vienas iš svarbiausių metodų, naudojamų tvarkant užklausas, yra QoS (paslaugų kokybės) lygių naudojimas jūsų MQTT pranešimams. QoS lygiai apibrėžia, kaip tarpininkas ir abonentai turėtų tvarkyti jūsų pranešimus. Yra trys QoS lygiai: 0, 1 ir 2.
0 QoS lygis yra mažiausiai patikimas, nes pranešimai siunčiami tik vieną kartą ir negarantuojami, kad jie bus pristatyti abonentui. 1 QoS lygis yra patikimesnis, nes pranešimai siunčiami bent vieną kartą ir garantuojama, kad jie bus pristatyti abonentui bent vieną kartą. 2 QoS lygis yra patikimiausias, nes pranešimai siunčiami tiksliai vieną kartą ir garantuojama, kad bus pristatyti abonentui tiksliai vieną kartą. Jūsų įrenginių bendravimas atitinka kitus įrenginius įprastos daiktų interneto (IoT) saugos problemos ir pataisymai norite likti viršuje.
Norėdami naudoti QoS lygius, galite nurodyti norimą lygį skelbdami pranešimus naudodami client.publish() funkcija:
client.publish("tema", "Labas pasauli!", 1);
Tai paskelbs pranešimą Labas pasauli! prie tema tema su QoS lygiu 1.
Naudojama kita pažangi technika Paskutinė valia ir testamentas (LWT) žinutes. LWT pranešimai yra pranešimai, kuriuos siunčia brokeris, kai klientas netikėtai atsijungia. Manome, kad tai svarbu norint aptikti įrenginius neprisijungus arba suaktyvinti veiksmus, kai įrenginys atsijungia.
Norėdami naudoti LWT pranešimus, galite nurodyti LWT pranešimą, kai prisijungiate prie brokerio naudodami client.setWill() funkcija:
client.setWill("statusas", "neprisijungęs", 1, tiesa);
Tai nustatys LWT pranešimą į neprisijungus ant statusą tema su 1 QoS lygiu, o išsaugojimo vėliavėlė nustatyta į tiesa.
Pasiruoškite kitam daiktų interneto projektui
ESP-01 modulis yra prieinamas ir kompaktiškas daiktų interneto projektų sprendimas, o naudojant jį su MQTT jūsų projektas gali pakilti į kitą lygį. Nors pradinė sąranka gali būti bauginanti, dėl MQTT pranašumų, tokių kaip lengvas ryšys ir didelis mastelio keitimas, tai yra verta investicija.