IoT-seadmed võivad teha lahedaid asju, kuid võrrandi oluline osa on see, kuidas nad suhtlevad. Saate seda hallata ESP-01 mooduliga.

Kui eelarve on piiratud, ei tähenda see tingimata, et te ei saa võtta ette arenenud DIY projekte. Kui otsite väikest, taskukohast ja mugavat WiFi-moodulit oma asjade Interneti projektide suurendamiseks, on ESP-01 moodul suurepärane valik. Sellise mooduli integreerimine kerge protokolliga nagu MQTT võib aga olla keeruline, eriti kui olete asjade Interneti arenduses uus.

Ainuüksi ESP-01 plaadi programmeerimine võib teiste ESP8266 seeria moodulitega võrreldes olla keeruline. Kuid vaatame üle kogu mooduli kasutamise alustamiseks vajaliku riist- ja tarkvara seadistuse põhitõed, samuti selle, kuidas seadistada MQTT lihtsal ja protseduurilisel viisil.

Juhatusega tutvumine

ESP8266 ESP-01 on väike ja kompaktne WiFi-moodul, mis on varustatud ESP8266EX-kiibiga, mis on IoT rakenduste jaoks loodud väga integreeritud SoC.

Moodul sisaldab ühest kiibist koosnevat juhtmevaba mikrokontrollerit koos TCP/IP-protokolli pinuga ja on võimeline ühenduma traadita võrguga või toimima pääsupunktina. ESP-01 moodulil on ka 2x4 pin päis, mis võimaldab juurdepääsu GPIO tihvtidele, toite- ja maandustele ning UART-liidesele.

instagram viewer

Riistvara seadistamine

Moodul ei ole üldse leivalauasõbralik. Mugavuse huvides võite osta eelnevalt ehitatud pikendusplaadi või minna lihtsalt vanamoodsalt – kasutades hüppaja juhtmeid ja leivalauda.

Seal on spetsiaalne programmeerija ESP8266 Serial Module Board, mis võib teie programmeerimiskogemust hõlbustada. Kui eelistate seda teed minna, DIYHOBI sisaldab käepärast õpetust selle kohta, kuidas programmeerida programmi ESP-01 moodulisse (sh USB-TTL CH340G muunduri mooduli adapter).

Kuid saate siiski programmeerida mooduli Arduino tahvli abil. Viitamiseks vaadake allolevat vooluringi skeemi.

Kuigi see võib tunduda ahvatlev, ei soovita me üldiselt moodulit otse Arduino 3,3 V kontaktiga ühendada, kuna see nõuab rohkem voolu, kui kontakt annab. Selle asemel ühendage Arduino 5V 3,3 V pingeregulaatorile (nt LM1117/LD117), seejärel toide WiFi-moodulile regulaatorist.

Ärge ühendage VCC ja CH_PD ESP tihvtid 5V Arduino tihvt. Mooduli ühendamine 5V võimsus võib seda kahjustada.

Kõik kondensaatorid on 10uF ja takisti on a 1K takisti.

Nõuded tarkvarale

ESP-01 moodulit kasutatakse tavaliselt koos Arduino platvormiga. Sellisena on tarkvara seadistamine üsna lihtne, eriti kui olete tuttav Arduino C-ga. Kui aga olete Vaarikaga rohkem kursis, on neid palju Raspberry Pi IoT projektid võid proovida.

Need on põhinõuded:

  • MQTT maakler või server (nt Mosquitto või CloudMQTT).
  • Arduino IDE koos ESP8266 põhiteegiga.
  • Arduino PubSubClienti teek.

Peate meeles pidama, et oma MQTT-serveri omamine kohapeal annab teile oma projektides paindlikkuse.

Vajalike teekide installimine

Esmalt laadige alla ja installige arvutisse Arduino IDE. Pärast installimist avage Arduino IDE ja minge aadressile Fail > Eelistused.

Aastal Täiendavad tahvlite halduri URL-id väljale sisestage järgmine URL:

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

Klõpsake Okei eelistuste akna sulgemiseks.

Järgmisena minge aadressile Tööriistad > juhatus > Juhatuse juht.

Seejärel otsige esp8266 ja installige esp8266 plaadipakett – see sisaldab kõiki ESP-01 mooduli jaoks vajalikke teeke.

PubSubClienti teegi installimiseks minge aadressile Sketš > Kaasa raamatukogu > Hallake raamatukogusid.

Otsima PubSubClient ja klõpsake selle installimiseks raamatukogu.

Kui kõik vajalikud teegid on installitud, võite alustada mooduli ESP-01 programmeerimist. Üks asi, mida tuleb siiski märkida, on see, et saate kasutada Wifi.h mis on raamatukogus, või laadige alla ESPWifi.h raamatukogu ja lisage see oma visandisse.

Ühenduse loomine ESP-01 ja MQTT Brokeri vahel

MQTT maakler on server, mis toimib vahendajana MQTT klientide vahel. See võimaldab klientidel avaldamise ja tellimise mudeli kaudu üksteisele sõnumeid saata ja vastu võtta.

ESP-01 mooduli ühendamiseks MQTT maakleriga peate oma koodis määrama maakleri IP-aadressi ja pordi numbri. Samuti peate maaklerile esitama ainulaadse kliendi ID, mis tuvastab teie ESP-01 mooduli.

Esmalt lisage visandi ülaossa vajalikud teegid

#kaasa <ESP8266WiFi.h>
#kaasa <PubSubClient.h>

Järgmisena määrake WiFi ja MQTT ühenduse üksikasjad.

konstchar* ssid = "YOUR_SSID";
konstchar* parool = "TEIE_PAROOL";
konstchar* mqtt_server = "TEIE_MQTT_SERVER";

Ärge unustage asendada kohahoidjad oma WiFi- ja MQTT-ühenduse üksikasjadega.

Pärast seda looge WiFi-klient ja looge ühendus kohaliku WiFi-võrguga:

WiFiClient espClient;
tühinesetup_wifi(){
viivitus (10);
WiFi.begin (ssid, parool);
samas (WiFi.status() != WL_CONNECTED) {
viivitus (500);
}
}

See funktsioon tuleks välja kutsuda setup() teie visandi funktsioon.

Järgmiseks peate looma MQTT kliendi ja looma ühenduse oma MQTT maakleriga.

PubSubClient klient(espClient);
tühineuuesti ühendada(){
samas (!client.connected()) {
kui (klient.ühendus("ESP01", mqtt_user, mqtt_password)) {
// Telli teema
client.subscribe("test/teema");
} muidu {
viivitus (5000);
}
}
}

Kui olete oma MQTT maakleriga ühenduse loonud, saate alustada teemade avaldamist ja tellimist.

Andmete avaldamine ESP-01-st MQTT Brokerile

Nüüd, kui olete oma ESP01 mooduli edukalt MQTT maakleriga ühendanud, vaatame, kuidas saate ESP-01 andmeid maaklerile avaldada.

Andmete avaldamiseks kasutage client.publish() funktsioon sõnumi avaldamiseks teemas teema.

client.publish("teemas", "Tere ESP-01-st");

Sellega avaldatakse sõnum "Tere ESP-01-lt". teemas teema.

Samuti saate maaklerile avaldada ESP-01 andurite andmed. Näiteks kui teie ESP-01-ga on ühendatud temperatuuriandur, saate avaldada temperatuuriandmed maaklerile, nagu allpool näidatud.

ujuk temperatuur = 25.5;
String Temperatuuristring = String(temperatuur);
char Temperatuur Char[5];
Temperatuuristring.toCharArray(temperatuurChar, 5);
client.publish("Temper", temperatuurChar);

See avaldab temperatuuriandmed Temp teema.

Andmeid saab avaldada tsüklina või korrapäraste ajavahemike järel, olenevalt teie projekti nõuetest. Veenduge, et te ei ujutaks maakleri üle liiga paljude andmetega ja et avaldate mõistliku intervalliga.

MQTT teemade tellimine ja andmete vastuvõtmine ESP-01 kohta

Teema tellimiseks kasutage client.subscribe() funktsiooni. Meie alloleva juhtumi puhul tellib klient teemaväline teema.

client.subscribe("väljapool teema");

Kui olete teema tellinud, saate sellel teemal avaldatud sõnumeid vastu võtta kasutades client.loop() funktsioonis loop () funktsioon alloleval visandil:

tühinesilmus(){
kui (!klient.ühendatud()) {
ühenda uuesti ();
}
klient.silmus();
}

See kontrollib pidevalt uusi sõnumeid ja käivitab tagasihelistamise funktsiooni, kui uus sõnum on vastu võetud.

Vastuvõetud sõnumite käsitlemiseks määrake tagasihelistamisfunktsioon, nagu allpool näidatud:

tühinehelista tagasi(char* teema, bait* kasulik koormus, allkirjastamata int pikkus){
// Printige vastuvõetud sõnum
Sari.printida("Sõnum saadi teemal:");
Sari.printida(teema);
Sari.printida(". Sõnum: ");
jaoks (int i=0;iSari.print((char)kasulik koormus[i]);
}
Sari.println();
}

Seda funktsiooni kutsutakse välja, kui tellitud teemal saabub uus sõnum. See prindib vastuvõetud sõnumi Serial Monitorile.

QoS (Quality of Service) tasemete ja turvafunktsioonide kasutamine

Üks olulisemaid päringute käsitlemisel kasutatavaid tehnikaid on teenuse QoS (Quality of Service) tasemete kasutamine teie MQTT-sõnumite jaoks. QoS tasemed määravad, kuidas maakler ja abonendid peaksid teie sõnumeid käsitlema. QoS-il on kolm taset: 0, 1 ja 2.

QoS tase 0 on kõige vähem usaldusväärne, kuna sõnumeid saadetakse ainult üks kord ja nende edastamine abonendile ei ole garanteeritud. QoS tase 1 on usaldusväärsem, kuna sõnumeid saadetakse vähemalt üks kord ja need edastatakse abonendile vähemalt üks kord. QoS tase 2 on kõige töökindlam, kuna sõnumeid saadetakse täpselt üks kord ja need saadetakse abonendile garanteeritult täpselt ühe korra. See, kuidas teie seadmed suhtlevad, on kooskõlas teiste seadmetega levinud asjade Interneti (IoT) turbeprobleemid ja parandused tahad peal püsida.

QoS-tasemete kasutamiseks saate sõnumite avaldamisel määrata soovitud taseme client.publish() funktsioon:

client.publish("teema", "Tere, Maailm!", 1);

See avaldab sõnumi Tere, Maailm! juurde teema teema QoS tasemega 1.

Kasutatakse veel üht täiustatud tehnikat Viimne testament ja testament (LWT) sõnumid. LWT-teated on sõnumid, mille maakler saadab, kui klient ootamatult ühenduse katkestab. Usume, et see on oluline võrguühenduseta seadmete tuvastamiseks või toimingute käivitamiseks, kui seade katkeb.

LWT-teadete kasutamiseks saate maakleriga ühenduse loomisel määrata LWT-teate client.setWill() funktsioon:

client.setWill("staatus", "offline", 1, tõsi);

See seab LWT-teate olekusse võrguühenduseta peal olek teema, mille QoS-i tase 1 ja säilitamise lipp on seatud väärtusele tõsi.

Valmistuge järgmiseks IoT-projektiks

ESP-01 moodul on taskukohane ja kompaktne lahendus IoT-projektide jaoks ning selle kasutamine koos MQTT-ga võib viia teie projekti järgmisele tasemele. Kuigi esialgne seadistamine võib olla hirmutav, muudavad MQTT eelised, nagu kerge side ja kõrge skaleeritavus, selle väärt investeeringu.