IoT uređaji mogu raditi super stvari, ali bitan dio jednadžbe je način na koji komuniciraju. To možete učiniti pomoću ESP-01 modula.

Ograničen proračun ne znači nužno da ne možete preuzeti napredne DIY projekte. Ako tražite mali, pristupačan i praktičan WiFi modul za povećanje vaših IoT projekata, ESP-01 modul je izvrstan izbor. Međutim, integracija takvog modula s laganim protokolom kao što je MQTT može biti nezgodna, osobito ako ste novi u razvoju IoT-a.

Samo programiranje ESP-01 ploče može biti izazovno u usporedbi s drugim modulima serije ESP8266. No, prođimo kroz osnove svih postavki hardvera i softvera koje trebate za početak korištenja modula kao i kako postaviti MQTT na jednostavan i proceduralan način.

Upoznavanje s pločom

ESP8266 ESP-01 je mali i kompaktni WiFi modul koji dolazi s ESP8266EX čipom, koji je visoko integrirani SoC dizajniran za IoT aplikacije.

Modul uključuje bežični mikrokontroler s jednim čipom i skupom TCP/IP protokola te se može spojiti na bežičnu mrežu ili djelovati kao pristupna točka. Modul ESP-01 također ima 2x4 pin header koji omogućuje pristup njegovim GPIO pinovima, napajanju i uzemljenju te UART sučelju.

instagram viewer

Postavljanje hardvera

Modul uopće nije prilagođen matičnoj ploči. Radi praktičnosti, možete kupiti već ugrađenu produžnu ploču ili jednostavno ići na staromodan način—upotrebom premosnih žica i matične ploče.

Postoji namjenski programator, ploča serijskog modula ESP8266, koja vam može olakšati iskustvo programiranja. Ako radije idete ovim putem, DIYHOBI ima praktičan vodič o tome kako programirati flash program u ESP-01 modul pomoću programatora (uključujući adapter modula pretvarača USB u TTL CH340G).

No, još uvijek možete programirati modul pomoću Arduino ploče. Za referencu pogledajte donji dijagram strujnog kruga.

Iako može izgledati primamljivo, općenito ne preporučujemo spajanje modula izravno na Arduino 3.3v pin jer zahtijeva više struje nego što pin pruža. Umjesto toga spojite Arduino 5V na regulator napona od 3,3 V kao što je LM1117/LD117, zatim napajajte WiFi modul iz regulatora.

Nemojte povezivati VCC i CH_PD igle ESP-a na 5V pin Arduina. Spajanje modula na 5V struja ga može oštetiti.

Svi kondenzatori su 10uF a otpornik je a 1K otpornik.

Softverski zahtjevi

Modul ESP-01 obično se koristi s platformom Arduino. Kao takvo, postavljanje softvera je prilično jednostavno, pogotovo ako ste upoznati s Arduinom C. Međutim, ako ste bolje upoznati s Raspberryjem, ima ih mnogo Raspberry Pi IoT projekti možete isprobati.

Ovo su osnovni zahtjevi:

  • MQTT broker ili poslužitelj (kao što je Mosquitto ili CloudMQTT).
  • Arduino IDE s bibliotekom jezgre ESP8266.
  • PubSubClient biblioteka za Arduino.

Morate zapamtiti da vam posjedovanje vlastitog MQTT poslužitelja lokalno daje fleksibilnost unutar vaših projekata.

Instaliranje potrebnih biblioteka

Prvo preuzmite i instalirajte Arduino IDE na svoje računalo. Nakon instalacije otvorite Arduino IDE i idite na Datoteka > Postavke.

u Dodatni URL-ovi upravitelja ploča polje unesite sljedeći URL:

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

Klik u redu za zatvaranje prozora postavki.

Dalje, idite na Alati > Odbor > Upravitelj odbora.

Zatim potražite esp8266 i instalirajte paket ploče esp8266—ovo uključuje sve potrebne biblioteke za modul ESP-01.

Da biste instalirali biblioteku PubSubClient, idite na Skica > Uključi knjižnicu > Upravljanje knjižnicama.

Traziti PubSubClient i kliknite na knjižnicu da biste je instalirali.

Nakon što instalirate sve potrebne biblioteke, možete započeti s programiranjem modula ESP-01. Jedna stvar koju treba napomenuti je da možete koristiti Wifi.h koji je uključen u biblioteku ili preuzmite ESPWifi.h knjižnica i uključite ga u svoju skicu.

Uspostavljanje veze između ESP-01 i MQTT brokera

MQTT broker je poslužitelj koji djeluje kao posrednik između MQTT klijenata. Klijentima omogućuje slanje i primanje poruka jedni drugima putem modela objavljivanja i pretplate.

Za povezivanje vašeg ESP-01 modula s MQTT brokerom, morat ćete navesti brokerovu IP adresu i broj porta u svom kodu. Također ćete morati dati jedinstveni ID klijenta koji identificira vaš ESP-01 modul posredniku.

Prvo uključite potrebne biblioteke na vrh svoje skice

#uključi <ESP8266WiFi.h>
#uključi <PubSubClient.h>

Zatim definirajte pojedinosti WiFi i MQTT veze.

konstchar* ssid = "VAŠ_SSID";
konstchar* lozinka = "TVOJA LOZINKA";
konstchar* mqtt_poslužitelj = "VAŠ_MQTT_SERVER";

Ne zaboravite zamijeniti rezervirana mjesta vlastitim podacima o WiFi i MQTT vezi.

Nakon toga izradite WiFi klijent i spojite se na svoju lokalnu WiFi mrežu:

WiFiClient espClient;
poništitipostavljanje_wifi(){
kašnjenje (10);
WiFi.begin (ssid, lozinka);
dok (WiFi.status() != WL_CONNECTED) {
kašnjenje (500);
}
}

Ovu funkciju treba pozvati u postaviti() funkciju vaše skice.

Zatim ćete morati izraditi MQTT klijent i povezati se sa svojim MQTT brokerom:

PubSubClient klijent(espKlijent);
poništitiponovno spojiti(){
dok (!client.connected()) {
ako (client.connect("ESP01", mqtt_korisnik, mqtt_lozinka)) {
// Pretplatite se na temu
client.subscribe("test/tema");
} drugo {
kašnjenje (5000);
}
}
}

Nakon što se povežete sa svojim MQTT brokerom, možete početi objavljivati ​​i pretplaćivati ​​se na teme.

Objavljivanje podataka od ESP-01 do MQTT brokera

Sada kada ste uspješno povezali svoj ESP01 modul s MQTT brokerom, pogledajmo kako možete objaviti podatke s ESP-01 brokeru.

Za objavu podataka koristite client.publish() funkcija za objavljivanje poruke na inTopic tema.

client.publish("u temi", "Pozdrav iz ESP-01");

Ovo će objaviti poruku "Pozdrav od ESP-01" na inTopic tema.

Također možete objaviti podatke senzora iz ESP-01 posredniku. Na primjer, ako imate senzor temperature povezan s vašim ESP-01, možete objaviti podatke o temperaturi brokeru kao što je prikazano u nastavku.

plutati temperatura = 25.5;
Niz temperaturni niz = Niz(temperatura);
char temperaturaChar[5];
temperatureString.toCharArray(temperaturaChar, 5);
client.publish("temp.", temperaturaChar);

Ovo će objaviti podatke o temperaturi na Temp tema.

Podaci se mogu objavljivati ​​u petlji ili u pravilnim intervalima, ovisno o zahtjevima vašeg projekta. Pazite da ne preplavljujete brokera s previše podataka i da objavljujete u razumnim intervalima.

Pretplata na MQTT teme i primanje podataka na ESP-01

Da biste se pretplatili na temu, koristite client.subscribe() funkcija. Za naš slučaj u nastavku, klijent se pretplaćuje na outTopic tema.

client.subscribe("van teme");

Nakon što se pretplatite na temu, možete primati poruke objavljene u toj temi koristeći klijent.petlja() funkcija u petlja() funkcija na skici ispod:

poništitipetlja(){
ako (!klijent.povezano()) {
ponovno povezivanje();
}
klijent.petlja();
}

Ovo će kontinuirano provjeravati nove poruke i izvršiti funkciju povratnog poziva kada se primi nova poruka.

Za obradu primljenih poruka definirajte funkciju povratnog poziva poput one prikazane u nastavku:

poništitiuzvratiti poziv(char* tema, bajt* nosivost, nepotpisano int duljina){
// Ispis primljene poruke
Serijski.ispisati("Primljena poruka na temu: ");
Serijski.ispisati(tema);
Serijski.ispisati(". Poruka: ");
za (int i=0;iSerijski.ispisati((char)nosivost[i]);
}
Serijski.println();
}

Ova funkcija će biti pozvana kada se primi nova poruka o temi na koju ste pretplaćeni. Ispisat će primljenu poruku na serijski monitor.

Korištenje QoS (Quality of Service) razina i sigurnosnih značajki

Jedna od najvažnijih tehnika koja se koristi u rukovanju zahtjevima je korištenje QoS (Quality of Service) razina za vaše MQTT poruke. Razine QoS definiraju kako broker i pretplatnici trebaju postupati s vašim porukama. Postoje tri razine QoS-a: 0, 1 i 2.

QoS razina 0 je najmanje pouzdana, budući da se poruke šalju samo jednom i nije zajamčeno da će biti isporučene pretplatniku. QoS razina 1 je pouzdanija, budući da se poruke šalju barem jednom i zajamčeno je da će biti isporučene pretplatniku barem jednom. QoS razina 2 je najpouzdanija, jer se poruke šalju točno jednom i zajamčeno je da će biti isporučene pretplatniku točno jednom. Način na koji vaši uređaji komuniciraju u skladu je s ostalima uobičajeni sigurnosni problemi i popravci interneta stvari (IoT). želite ostati na vrhu.

Da biste koristili razine QoS-a, možete odrediti željenu razinu prilikom objavljivanja poruka pomoću client.publish() funkcija:

client.publish("tema", "Pozdrav svijete!", 1);

Ovo će objaviti poruku Pozdrav svijete! prema tema tema s QoS razinom 1.

Još jedna napredna tehnika je korištenje Posljednja volja i testament (LWT) poruke. LWT poruke su poruke koje posrednik šalje kada klijent neočekivano prekine vezu. Vjerujemo da je to važno za otkrivanje izvanmrežnih uređaja ili za pokretanje radnji kada se uređaj prekine.

Da biste koristili LWT poruke, možete odrediti LWT poruku prilikom povezivanja s brokerom pomoću klijent.setWill() funkcija:

client.setWill("status", "izvan mreže", 1, pravi);

Ovo će postaviti LWT poruku na izvan mreže na status tema s QoS razinom 1 i zastavom zadržavanja postavljenom na pravi.

Pripremite se za svoj sljedeći IoT projekt

Modul ESP-01 pristupačno je i kompaktno rješenje za IoT projekte, a njegova uporaba s MQTT-om može podići vaš projekt na višu razinu. Iako početno postavljanje može biti zastrašujuće, prednosti MQTT-a, poput lagane komunikacije i visoke skalabilnosti, čine ga vrijednom investicijom.