Dispozitivele IoT pot face lucruri interesante, dar o parte esențială a ecuației este modul în care comunică. Puteți gestiona asta cu un modul ESP-01.
A fi cu un buget nu înseamnă neapărat că nu poți prelua proiecte avansate de bricolaj. Dacă sunteți în căutarea unui modul WiFi mic, accesibil și convenabil pentru a vă extinde proiectele IoT, modulul ESP-01 este o alegere excelentă. Cu toate acestea, integrarea unui astfel de modul cu un protocol ușor precum MQTT poate fi dificilă, mai ales dacă sunteți nou în dezvoltarea IoT.
Programarea plăcii ESP-01 singură poate fi o provocare în comparație cu alte module din seria ESP8266. Dar să trecem peste elementele de bază ale setărilor hardware și software de care aveți nevoie pentru a începe să utilizați modulul, precum și cum să configurați MQTT într-un mod simplu și procedural.
Cunoașterea consiliului
ESP8266 ESP-01 este un modul WiFi mic și compact, care vine cu un cip ESP8266EX, care este un SoC foarte integrat conceput pentru aplicații IoT.
Modulul include un microcontroler fără fir cu un singur cip cu o stivă de protocol TCP/IP și este capabil să se conecteze la o rețea fără fir sau să acționeze ca un punct de acces. Modulul ESP-01 are, de asemenea, un antet cu 2x4 pini care oferă acces la pinii săi GPIO, la alimentare și la masă și la interfața UART.
Configurarea hardware-ului
Modulul nu este deloc prietenos cu placa. Pentru comoditate, puteți cumpăra o placă de extensie pre-construită sau pur și simplu mergeți pe calea de modă veche - folosind fire de legătură și o placă de breadboard.
Există un programator dedicat, placa modulului serial ESP8266, care vă poate ușura experiența de programare. Dacă preferați să mergeți pe acest traseu, DIYHOBI are un tutorial la îndemână despre cum să flashați un program în modulul ESP-01 folosind un programator (inclusiv adaptorul pentru modulul convertizor USB la TTL CH340G).
Dar, puteți încă programa modulul folosind o placă Arduino. Priviți schema de circuit de mai jos pentru referință.
Deși poate părea tentant, în general nu recomandăm conectarea modulului direct la pinul de 3,3 V al Arduino, deoarece necesită mai mult curent decât furnizează pinul. În schimb, conectați Arduino 5V la un regulator de tensiune de 3,3 V precum LM1117/LD117, apoi alimentați modulul WiFi de la regulator.
Nu conectați VCC și CH_PD pinii ESP la 5V pinul Arduino. Conectarea modulului la 5V puterea îl poate deteriora.
Toți condensatorii sunt 10uF iar rezistența este a 1K rezistor.
Cerințe software
Modulul ESP-01 este utilizat în mod obișnuit cu platforma Arduino. Ca atare, configurarea software-ului este destul de simplă, mai ales dacă sunteți familiarizat cu Arduino C. Cu toate acestea, dacă sunteți mai familiarizat cu Raspberry, există o mulțime Proiecte Raspberry Pi IoT poti incerca.
Acestea sunt cerințele de bază:
- Un broker sau un server MQTT (cum ar fi Mosquitto sau CloudMQTT).
- Un IDE Arduino cu biblioteca de bază ESP8266.
- Biblioteca PubSubClient pentru Arduino.
Trebuie să rețineți că a avea propriul server MQTT la nivel local vă oferă flexibilitate în cadrul proiectelor dvs.
Instalarea bibliotecilor necesare
Mai întâi, descărcați și instalați IDE-ul Arduino pe computer. Odată instalat, deschideți Arduino IDE și accesați Fişier > Preferințe.
În Adrese URL suplimentare ale Managerului de forumuri câmp, introduceți următorul URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Clic Bine pentru a închide fereastra Preferințe.
Apoi, du-te la Instrumente > Bord > Manager de consilii.
Atunci caută esp8266 și instalați pachetul de plăci esp8266 - acesta include toate bibliotecile necesare pentru modulul ESP-01.
Pentru a instala biblioteca PubSubClient, accesați Schiță > Includeți biblioteca > Gestionați bibliotecile.
Caută PubSubClient și faceți clic pe bibliotecă pentru ao instala.
După ce aveți instalate toate bibliotecile necesare, puteți începe programarea modulului ESP-01. Totuși, un lucru de reținut este că puteți utiliza Wifi.h care este inclus în bibliotecă sau descărcați ESPWifi.h bibliotecă și includeți-l în schița dvs.
Stabilirea unei conexiuni între ESP-01 și MQTT Broker
Un broker MQTT este un server care acționează ca intermediar între clienții MQTT. Permite clienților să trimită și să primească mesaje unul către și de la celălalt printr-un model de publicare-abonare.
Pentru a vă conecta modulul ESP-01 la un broker MQTT, va trebui să specificați adresa IP și numărul de port al brokerului în cod. De asemenea, va trebui să furnizați brokerului un ID unic de client care vă identifică modulul ESP-01.
Mai întâi, includeți bibliotecile necesare în partea de sus a schiței
#include <ESP8266 WiFi.h>
#include <PubSubClient.h>
Apoi, definiți detaliile conexiunii WiFi și MQTT.
constchar* ssid = „YOUR_SSID”;
constchar* parola = "PAROLA DVS";
constchar* mqtt_server = „YOUR_MQTT_SERVER”;
Nu uitați să înlocuiți substituenții cu propriile detalii de conexiune WiFi și MQTT.
După aceea, creați un client WiFi și conectați-vă la rețeaua locală WiFi:
WiFiClient espClient;
golsetup_wifi(){
întârziere (10);
WiFi.begin (ssid, parola);
in timp ce (WiFi.status() != WL_CONNECTED) {
întârziere (500);
}
}
Această funcție ar trebui apelată în înființat() funcția schiței dvs.
În continuare, va trebui să creați un client MQTT și să vă conectați la brokerul dvs. MQTT:
PubSubClient client(espClient);
golreconectați(){
in timp ce (!client.connected()) {
dacă (client.connect("ESP01", mqtt_user, mqtt_parola)) {
// Abonați-vă la un subiect
client.subscribe("test/temă");
} altfel {
întârziere (5000);
}
}
}
După ce v-ați conectat la brokerul dvs. MQTT, puteți începe să publicați și să vă abonați la subiecte.
Publicarea datelor de la ESP-01 la MQTT Broker
Acum că v-ați conectat cu succes modulul ESP01 la brokerul MQTT, să vedem cum puteți publica datele de la ESP-01 către broker.
Pentru a publica date, utilizați client.publish() funcția de a publica un mesaj către inTopic subiect.
client.publish("inTopic", „Bună ziua de la ESP-01”);
Aceasta va publica mesajul „Bună ziua de la ESP-01” către inTopic subiect.
De asemenea, puteți publica datele senzorului de la ESP-01 către broker. De exemplu, dacă aveți un senzor de temperatură conectat la ESP-01, puteți publica datele de temperatură către broker, așa cum se arată mai jos.
pluti temperatura = 25.5;
Şir temperatureString = Şir(temperatura);
char temperaturaChar[5];
temperatureString.toCharArray(temperaturaChar, 5);
client.publish("Temp", temperaturaChar);
Aceasta va publica datele de temperatură către Temp subiect.
Datele pot fi publicate în buclă sau la intervale regulate, în funcție de cerințele proiectului dumneavoastră. Asigurați-vă că nu inundați brokerul cu prea multe date și că publicați la un interval rezonabil.
Abonarea la subiecte MQTT și primirea datelor pe ESP-01
Pentru a vă abona la un subiect, utilizați client.subscribe() funcţie. Pentru cazul nostru de mai jos, clientul se abonează la outTopic subiect.
client.subscribe("outTopic");
Odată ce v-ați abonat la un subiect, puteți primi mesaje publicate la acel subiect folosind client.loop() funcţia în buclă() funcția din schița de mai jos:
golbuclă(){
dacă (!client.conectat()) {
reconectare();
}
client.buclă();
}
Aceasta va verifica în mod continuu mesajele noi și va executa funcția de apel invers atunci când a fost primit un mesaj nou.
Pentru a gestiona mesajele primite, definiți o funcție de apel invers precum cea prezentată mai jos:
golsună din nou(char* subiect, octet* sarcină utilă, nesemnată int lungime){
// Imprimă mesajul primit
Serial.imprimare("Mesaj primit pe subiect: ");
Serial.imprimare(subiect);
Serial.imprimare(". Mesaj: ");
pentru (int i=0;iSerial.imprimare((char)încărcătură utilă[i]);
}
Serial.println();
}
Această funcție va fi apelată atunci când se primește un nou mesaj cu privire la subiectul abonat. Acesta va imprima mesajul primit pe monitorul serial.
Utilizarea nivelurilor QoS (Calitatea serviciului) și a caracteristicilor de securitate
Una dintre cele mai importante tehnici utilizate în gestionarea cererilor este utilizarea nivelurilor QoS (Calitatea Serviciului) pentru mesajele dvs. MQTT. Nivelurile QoS definesc modul în care brokerul și abonații ar trebui să vă gestioneze mesajele. Există trei niveluri de QoS: 0, 1 și 2.
Nivelul QoS 0 este cel mai puțin fiabil, deoarece mesajele sunt trimise o singură dată și nu se garantează că vor fi livrate abonatului. Nivelul QoS 1 este mai fiabil, deoarece mesajele sunt trimise cel puțin o dată și sunt garantate că vor fi livrate abonatului cel puțin o dată. Nivelul QoS 2 este cel mai de încredere, deoarece mesajele sunt trimise exact o dată și sunt garantate că vor fi livrate abonatului exact o dată. Modul în care dispozitivele dvs. comunică este în concordanță cu celelalte probleme de securitate și remedieri comune ale Internetului obiectelor (IoT). vrei să stai pe deasupra.
Pentru a utiliza nivelurile QoS, puteți specifica nivelul dorit atunci când publicați mesaje folosind client.publish() funcţie:
client.publish("subiect", "Salut Lume!", 1);
Acest lucru va publica mesajul Salut Lume! la subiect subiect cu nivel QoS 1.
O altă tehnică avansată este utilizarea Ultima voință și testament (LWT) mesaje. Mesajele LWT sunt mesaje care sunt trimise de broker atunci când un client se deconectează în mod neașteptat. Considerăm că acest lucru este important pentru detectarea dispozitivelor offline sau pentru declanșarea acțiunilor atunci când un dispozitiv se deconectează.
Pentru a utiliza mesajele LWT, puteți specifica mesajul LWT atunci când vă conectați la broker folosind client.setWill() funcţie:
client.setWill("stare", "deconectat", 1, Adevărat);
Aceasta va seta mesajul LWT la deconectat pe stare subiect cu QoS nivelul 1 și marcajul de reținere setat la Adevărat.
Pregătiți-vă pentru următorul dvs. proiect IoT
Modulul ESP-01 este o soluție accesibilă și compactă pentru proiecte IoT, iar utilizarea lui cu MQTT vă poate duce proiectul la nivelul următor. Deși configurarea inițială poate fi descurajantă, beneficiile MQTT, cum ar fi comunicarea ușoară și scalabilitatea ridicată, îl fac o investiție utilă.