Naprave IoT lahko delajo kul stvari, vendar je bistveni del enačbe način komunikacije. To lahko uredite z modulom ESP-01.
Če imate omejen proračun, to ne pomeni nujno, da se ne morete lotiti naprednih projektov DIY. Če iščete majhen, cenovno ugoden in priročen modul WiFi za razširitev vaših IoT projektov, je modul ESP-01 odlična izbira. Vendar pa je integracija takšnega modula z lahkim protokolom, kot je MQTT, lahko težavna, še posebej, če ste novi v razvoju IoT.
Samo programiranje plošče ESP-01 je lahko zahtevno v primerjavi z drugimi moduli serije ESP8266. Toda poglejmo si osnove vseh nastavitev strojne in programske opreme, ki jih potrebujete za začetek uporabe modula, ter kako na preprost in proceduralen način nastaviti MQTT.
Spoznavanje deske
ESP8266 ESP-01 je majhen in kompakten WiFi modul, ki je opremljen s čipom ESP8266EX, ki je visoko integriran SoC, zasnovan za aplikacije IoT.
Modul vključuje brezžični mikrokrmilnik z enim čipom s skladom protokolov TCP/IP in se lahko poveže v brezžično omrežje ali deluje kot dostopna točka. Modul ESP-01 ima tudi 2x4 pinsko glavo, ki omogoča dostop do njegovih GPIO zatičev, napajanja in ozemljitve ter vmesnika UART.
Nastavitev strojne opreme
Modul sploh ni prijazen do mize. Za udobje lahko kupite že vgrajeno podaljševalno ploščo ali preprosto uporabite staromoden način – z uporabo premostitvenih žic in plošče za izdelavo.
Obstaja namenski programator, plošča serijskega modula ESP8266, ki vam lahko olajša izkušnjo programiranja. Če raje greš po tej poti, DIYHOBI ima priročno vadnico o tem, kako z uporabo programatorja (vključno z adapterjem za pretvorniški modul USB v TTL CH340G) v modul ESP-01 vnesti program.
Vendar pa lahko še vedno programirate modul z uporabo plošče Arduino. Za referenco si oglejte spodnji diagram vezja.
Čeprav je morda videti mamljivo, na splošno ne priporočamo, da modul priključite neposredno na 3,3-voltni zatič Arduino, ker zahteva več toka, kot ga zagotavlja zatič. Namesto tega povežite Arduino 5V na regulator napetosti 3,3 V, kot je LM1117/LD117, nato napajajte modul WiFi iz regulatorja.
Ne povezujte VCC in CH_PD zatiči ESP na 5V zatič Arduino. Priključitev modula na 5V moč ga lahko poškoduje.
Vsi kondenzatorji so 10uF in upor je a 1K upor.
Zahteve za programsko opremo
Modul ESP-01 se pogosto uporablja s platformo Arduino. Kot taka je nastavitev programske opreme precej preprosta, še posebej, če poznate Arduino C. Vendar, če ste bolj seznanjeni z Raspberry, jih je veliko Projekti Raspberry Pi IoT lahko poskusite.
To so osnovne zahteve:
- Posrednik ali strežnik MQTT (kot je Mosquitto ali CloudMQTT).
- Arduino IDE z jedrno knjižnico ESP8266.
- Knjižnica PubSubClient za Arduino.
Zapomniti si morate, da vam lokalni strežnik MQTT omogoča prilagodljivost v vaših projektih.
Namestitev potrebnih knjižnic
Najprej prenesite in namestite Arduino IDE na svoj računalnik. Ko je nameščen, odprite Arduino IDE in pojdite na mapa > Nastavitve.
V Dodatni URL-ji upravitelja plošč polje vnesite naslednji URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Kliknite v redu da zaprete okno Preferences.
Nato pojdite na Orodja > Deska > Upravitelj plošč.
Nato poiščite esp8266 in namestite paket plošče esp8266—to vključuje vse potrebne knjižnice za modul ESP-01.
Če želite namestiti knjižnico PubSubClient, pojdite na Skica > Vključi knjižnico > Upravljanje knjižnic.
Išči PubSubClient in kliknite na knjižnico, da jo namestite.
Ko imate nameščene vse potrebne knjižnice, lahko začnete s programiranjem modula ESP-01. Upoštevati je treba eno stvar, da lahko uporabite Wifi.h ki je vključen v knjižnico, ali prenesite ESPWifi.h knjižnica in ga vključite v svojo skico.
Vzpostavitev povezave med ESP-01 in posrednikom MQTT
Posrednik MQTT je strežnik, ki deluje kot posrednik med odjemalci MQTT. Odjemalcem omogoča pošiljanje in prejemanje sporočil drug drugemu prek modela objave in naročnine.
Če želite svoj modul ESP-01 povezati s posrednikom MQTT, boste morali v svoji kodi podati naslov IP in številko vrat posrednika. Prav tako boste morali posredniku posredovati edinstven ID odjemalca, ki identificira vaš modul ESP-01.
Najprej vključite potrebne knjižnice na vrh vaše skice
#vključi <ESP8266WiFi.h>
#vključi <PubSubClient.h>
Nato določite podrobnosti povezave WiFi in MQTT.
konstchar* ssid = "VAŠ_SSID";
konstchar* geslo = "VAŠE GESLO";
konstchar* mqtt_strežnik = "VAŠ_MQTT_SERVER";
Ne pozabite zamenjati nadomestnih mest z lastnimi podatki o povezavi WiFi in MQTT.
Po tem ustvarite odjemalca WiFi in se povežite z lokalnim omrežjem WiFi:
WiFiClient espClient;
prazninasetup_wifi(){
zamuda (10);
WiFi.begin (ssid, geslo);
medtem (WiFi.status() != WL_CONNECTED) {
zamuda (500);
}
}
To funkcijo je treba poklicati v nastaviti() funkcijo vaše skice.
Nato boste morali ustvariti odjemalca MQTT in se povezati s svojim posrednikom MQTT:
PubSubClient stranka(espClient);
prazninaponovno vzpostavite povezavo(){
medtem (!client.connected()) {
če (client.connect("ESP01", mqtt_uporabnik, mqtt_geslo)) {
// Naročite se na temo
client.subscribe("test/tema");
} drugače {
zamuda (5000);
}
}
}
Ko se povežete s svojim posrednikom MQTT, lahko začnete objavljati in se naročati na teme.
Objava podatkov od ESP-01 do posrednika MQTT
Zdaj, ko ste uspešno povezali svoj modul ESP01 s posrednikom MQTT, poglejmo, kako lahko objavite podatke iz ESP-01 v posredniku.
Za objavo podatkov uporabite client.publish() funkcijo za objavo sporočila na inTopic tema.
client.publish("inTopic", "Pozdrav iz ESP-01");
S tem boste objavili sporočilo »Pozdrav iz ESP-01« za inTopic tema.
Podatke senzorjev iz ESP-01 lahko tudi objavite posredniku. Na primer, če imate temperaturni senzor povezan z vašim ESP-01, lahko podatke o temperaturi objavite posredniku, kot je prikazano spodaj.
lebdi temperatura = 25.5;
Vrvica temperatureString = Vrvica(temperatura);
char temperaturaChar[5];
temperatureString.toCharArray(temperatureChar, 5);
client.publish("Temp", temperaturaChar);
S tem bodo podatki o temperaturi objavljeni v Temp tema.
Podatke je mogoče objaviti v zanki ali v rednih intervalih, odvisno od zahtev vašega projekta. Prepričajte se, da posrednika ne zasipate s preveč podatkov in da objavljate v razumnih intervalih.
Naročanje na teme MQTT in prejemanje podatkov na ESP-01
Če se želite naročiti na temo, uporabite client.subscribe() funkcijo. Za naš spodnji primer se stranka naroči na outTopic tema.
client.subscribe("zunaj teme");
Ko se naročite na temo, lahko prejemate sporočila, objavljena v tej temi, z uporabo client.loop() funkcijo v zanka() funkcija na spodnji skici:
prazninazanka(){
če (!stranka.povezan()) {
znova poveži();
}
stranka.zanka();
}
To bo nenehno preverjalo nova sporočila in izvedlo funkcijo povratnega klica, ko bo prejeto novo sporočilo.
Za obdelavo prejetih sporočil definirajte funkcijo povratnega klica, kot je prikazana spodaj:
prazninapoklicati nazaj(char* tema, bajt* tovor, nepodpisan int dolžina){
// Natisni prejeto sporočilo
Serijski.tiskanje("Prejeto sporočilo na temo: ");
Serijski.tiskanje(tema);
Serijski.tiskanje(". Sporočilo: ");
za (int i=0;jazSerijski.natisniti((char)tovor[jaz]);
}
Serijski.println();
}
Ta funkcija bo poklicana, ko bo o naročeni temi prejeto novo sporočilo. Prejeto sporočilo bo natisnil v serijski monitor.
Uporaba ravni QoS (kakovost storitve) in varnostnih funkcij
Ena najpomembnejših tehnik, ki se uporablja pri obravnavanju zahtevkov, je uporaba ravni QoS (Quality of Service) za vaša sporočila MQTT. Ravni QoS določajo, kako naj posrednik in naročniki obravnavajo vaša sporočila. Obstajajo tri stopnje QoS: 0, 1 in 2.
Raven QoS 0 je najmanj zanesljiva, saj se sporočila pošljejo samo enkrat in ni zagotovljeno, da bodo dostavljena naročniku. Raven QoS 1 je bolj zanesljiva, saj se sporočila pošljejo vsaj enkrat in zajamčeno, da bodo vsaj enkrat dostavljena naročniku. QoS level 2 je najbolj zanesljiv, saj so sporočila poslana točno enkrat in zagotovljeno, da bodo dostavljena naročniku točno enkrat. Kako vaše naprave komunicirajo, je v skladu z drugimi pogoste varnostne težave in popravki interneta stvari (IoT). želite ostati na vrhu.
Za uporabo ravni QoS lahko določite želeno raven pri objavljanju sporočil z uporabo client.publish() funkcija:
client.publish("tema", "Pozdravljen, svet!", 1);
S tem bo sporočilo objavljeno Pozdravljen, svet! do tema tema z ravnijo QoS 1.
Druga napredna tehnika je uporaba Zadnja volja in oporoka (LWT) sporočila. Sporočila LWT so sporočila, ki jih pošlje posrednik, ko odjemalec nepričakovano prekine povezavo. Menimo, da je to pomembno za zaznavanje naprav brez povezave ali za sprožitev dejanj, ko naprava prekine povezavo.
Če želite uporabljati sporočila LWT, lahko določite sporočilo LWT, ko se povezujete s posrednikom z uporabo client.setWill() funkcija:
client.setWill("stanje", "brez povezave", 1, prav);
S tem boste sporočilo LWT nastavili na brez povezave na stanje tema z ravnijo QoS 1 in zastavico za ohranitev nastavljeno na prav.
Pripravite se na vaš naslednji IoT projekt
Modul ESP-01 je cenovno ugodna in kompaktna rešitev za IoT projekte, njegova uporaba z MQTT pa lahko vaš projekt dvigne na naslednjo raven. Čeprav je začetna nastavitev lahko zastrašujoča, je zaradi prednosti MQTT, kot sta lahka komunikacija in visoka razširljivost, naložba vredna truda.