IoT-enheder kan seje ting, men en væsentlig del af ligningen er, hvordan de kommunikerer. Det kan du klare med et ESP-01-modul.
At være på et budget betyder ikke nødvendigvis, at du ikke kan påtage dig avancerede DIY-projekter. Hvis du leder efter et lille, overkommeligt og praktisk WiFi-modul til at opskalere dine IoT-projekter, er ESP-01-modulet et godt valg. Det kan dog være vanskeligt at integrere et sådant modul med en letvægtsprotokol som MQTT, især hvis du er ny inden for IoT-udvikling.
Programmering af ESP-01-kortet alene kan være en udfordring sammenlignet med andre moduler i ESP8266-serien. Men lad os gennemgå det grundlæggende i al den hardware- og softwareopsætning, du skal bruge for at begynde at bruge modulet, samt hvordan du opsætter MQTT på en enkel og proceduremæssig måde.
Lær bestyrelsen at kende
ESP8266 ESP-01 er et lille og kompakt WiFi-modul, der kommer med en ESP8266EX-chip, som er en meget integreret SoC designet til IoT-applikationer.
Modulet inkluderer en enkelt-chip trådløs mikrocontroller med en TCP/IP protokolstak og er i stand til at oprette forbindelse til et trådløst netværk eller fungere som et adgangspunkt. ESP-01-modulet har også en 2x4-bens header, der giver adgang til dets GPIO-ben, strøm og jord samt UART-interface.
Opsætning af hardware
Modulet er slet ikke brødbrætvenligt. For nemheds skyld kan du købe et forudbygget forlængerbræt eller bare gå på den gammeldags måde - ved at bruge jumper-tråde og et brødbræt.
Der er en dedikeret programmør, ESP8266 Serial Module Board, som kan lette din programmeringsoplevelse. Hvis du foretrækker at gå denne rute, DIYHOBI har en praktisk vejledning i, hvordan man flasher et program ind i ESP-01-modulet ved hjælp af en programmør (inklusive USB til TTL CH340G Converter Modul Adapter).
Men du kan stadig programmere modulet ved hjælp af et Arduino-kort. Se kredsløbsdiagrammet nedenfor for reference.
Selvom det kan se fristende ud, anbefaler vi generelt ikke at tilslutte modulet direkte til Arduinos 3.3v pin, da det kræver mere strøm end pinden giver. Tilslut i stedet Arduino 5V til en 3,3V spændingsregulator som LM1117/LD117, og strøm derefter til WiFi-modulet fra regulatoren.
Tilslut ikke VCC og CH_PD stifter af ESP til 5V pin af Arduino. Tilslutning af modulet til 5V strøm kan beskadige den.
Alle kondensatorerne er 10uF og modstanden er en 1K modstand.
Softwarekrav
ESP-01-modulet bruges almindeligvis sammen med Arduino-platformen. Som sådan er opsætning af softwaren ret enkel, især hvis du er bekendt med Arduino C. Men hvis du er mere fortrolig med Raspberry, er der masser af Raspberry Pi IoT-projekter du kan prøve.
Dette er de grundlæggende krav:
- En MQTT-mægler eller server (såsom Mosquitto eller CloudMQTT).
- En Arduino IDE med ESP8266-kernebiblioteket.
- PubSubClient-biblioteket til Arduino.
Du skal huske, at det at have din egen MQTT-server lokalt giver dig fleksibilitet i dine projekter.
Installation af de nødvendige biblioteker
Først skal du downloade og installere Arduino IDE på din computer. Når det er installeret, skal du åbne Arduino IDE og gå til Fil > Præferencer.
I den Yderligere Boards Manager-URL'er feltet skal du indtaste følgende URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klik Okay for at lukke vinduet Indstillinger.
Gå derefter til Værktøjer > Bestyrelse > Bestyrelsesleder.
Søg derefter efter esp8266 og installer esp8266-kortpakken – denne inkluderer alle de nødvendige biblioteker til ESP-01-modulet.
For at installere PubSubClient-biblioteket skal du gå til Skitse > Inkluder bibliotek > Administrer biblioteker.
Søge efter PubSubClient og klik på biblioteket for at installere det.
Når du har installeret alle de nødvendige biblioteker, kan du begynde at programmere ESP-01-modulet. En ting at bemærke er dog, at du kan bruge Wifi.h som er inkluderet i biblioteket, eller download ESPWifi.h bibliotek og medtag det i din skitse.
Etablering af en forbindelse mellem ESP-01 og MQTT Broker
En MQTT-mægler er en server, der fungerer som mellemled mellem MQTT-klienter. Det giver kunderne mulighed for at sende og modtage beskeder til og fra hinanden gennem en publicerings-abonnement-model.
For at forbinde dit ESP-01-modul til en MQTT-mægler, skal du angive mæglerens IP-adresse og portnummer i din kode. Du skal også angive et unikt klient-id, der identificerer dit ESP-01-modul til mægleren.
Medtag først de nødvendige biblioteker øverst på din skitse
#omfatte <ESP8266 WiFi.h>
#omfatte <PubSubClient.h>
Dernæst skal du definere WiFi- og MQTT-forbindelsesdetaljerne.
konstchar*ssid = "DIT_SSID";
konstchar* adgangskode = "DIT KODEORD";
konstchar* mqtt_server = "DIN_MQTT_SERVER";
Glem ikke at erstatte pladsholderne med dine egne WiFi- og MQTT-forbindelsesdetaljer.
Derefter skal du oprette en WiFi-klient og oprette forbindelse til dit lokale WiFi-netværk:
WiFiClient espClient;
ugyldigsetup_wifi(){
forsinkelse (10);
WiFi.begin (ssid, adgangskode);
mens (WiFi.status() != WL_CONNECTED) {
forsinkelse (500);
}
}
Denne funktion skal kaldes i Opsætning() funktion af din skitse.
Dernæst skal du oprette en MQTT-klient og oprette forbindelse til din MQTT-mægler:
PubSubClient klient(esp Client);
ugyldigoprette forbindelse igen(){
mens (!client.connected()) {
hvis (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Abonner på et emne
client.subscribe("test/emne");
} andet {
forsinkelse (5000);
}
}
}
Når du har oprettet forbindelse til din MQTT-mægler, kan du begynde at udgive og abonnere på emner.
Udgivelse af data fra ESP-01 til MQTT Broker
Nu hvor du har tilsluttet dit ESP01-modul til MQTT-mægleren, lad os se på, hvordan du kan publicere data fra ESP-01 til mægleren.
For at offentliggøre data skal du bruge client.publish() funktion til at offentliggøre en besked til inTopic emne.
client.publish("inTopic", "Hej fra ESP-01");
Dette vil udgive beskeden "Hej fra ESP-01" til inTopic emne.
Du kan også offentliggøre sensordata fra ESP-01 til mægleren. For eksempel, hvis du har en temperatursensor tilsluttet din ESP-01, kan du offentliggøre temperaturdataene til mægleren som vist nedenfor.
flyde temperatur = 25.5;
Snor temperaturstreng = Snor(temperatur);
char temperaturChar[5];
temperaturstreng.toCharArray(temperaturChar, 5);
client.publish("Midlertidig"temperaturChar);
Dette vil offentliggøre temperaturdataene til Midlertidig emne.
Data kan publiceres i en loop eller med jævne mellemrum, afhængigt af dit projekts krav. Sørg for, at du ikke oversvømmer mægleren med for mange data, og at du udgiver med et rimeligt interval.
Abonner på MQTT-emner og modtagelse af data på ESP-01
For at abonnere på et emne, brug client.subscribe() fungere. I vores tilfælde nedenfor abonnerer klienten på udeTemne emne.
client.subscribe("uden emne");
Når du har abonneret på et emne, kan du modtage beskeder udgivet til det emne ved hjælp af client.loop() funktion i loop() funktion i skitsen nedenfor:
ugyldigsløjfe(){
hvis (!klient.forbundet()) {
reconnect();
}
klient.loop();
}
Dette vil løbende tjekke for nye beskeder og udføre tilbagekaldsfunktionen, når en ny besked er modtaget.
For at håndtere modtagne beskeder skal du definere en tilbagekaldsfunktion som den, der er vist nedenfor:
ugyldigring tilbage(char*emne, byte* nyttelast, usigneret int længde){
// Udskriv den modtagne besked
Seriel.Print("Besked modtaget om emnet: ");
Seriel.Print(emne);
Seriel.Print(". Besked: ");
til (int i=0;jegSeriel.Print((char)nyttelast[jeg]);
}
Seriel.println();
}
Denne funktion kaldes, når der modtages en ny besked om det tilmeldte emne. Den vil udskrive den modtagne besked til den serielle monitor.
Brug af QoS-niveauer (Quality of Service) og sikkerhedsfunktioner
En af de vigtigste teknikker, der bruges til at håndtere anmodninger, er at bruge QoS-niveauer (Quality of Service) til dine MQTT-meddelelser. QoS-niveauer definerer, hvordan mægleren og abonnenterne skal håndtere dine beskeder. Der er tre niveauer af QoS: 0, 1 og 2.
QoS niveau 0 er det mindst pålidelige, da beskeder kun sendes én gang og ikke garanteres at blive leveret til abonnenten. QoS niveau 1 er mere pålideligt, da beskeder sendes mindst én gang og garanteres at blive leveret til abonnenten mindst én gang. QoS niveau 2 er det mest pålidelige, da beskeder sendes præcis én gang og garanteres at blive leveret til abonnenten præcis én gang. Hvordan dine enheder kommunikerer falder i tråd med andre almindelige Internet of Things (IoT) sikkerhedsproblemer og rettelser du ønsker at blive på toppen af.
For at bruge QoS-niveauer kan du angive det ønskede niveau, når du udgiver meddelelser ved hjælp af client.publish() fungere:
client.publish("emne", "Hej Verden!", 1);
Dette vil offentliggøre meddelelsen Hej Verden! til emne emne med QoS-niveau 1.
En anden avanceret teknik er at bruge Sidste vilje og testamente (LWT) Beskeder. LWT-meddelelser er meddelelser, der sendes af mægleren, når en klient uventet afbryder forbindelsen. Vi mener, at dette er vigtigt for at opdage offline-enheder eller for at udløse handlinger, når en enhed afbrydes.
For at bruge LWT-meddelelser kan du angive LWT-meddelelsen, når du opretter forbindelse til mægleren ved hjælp af client.setWill() fungere:
client.setWill("status", "offline", 1, rigtigt);
Dette vil indstille LWT-meddelelsen til offline på den status emne med QoS niveau 1 og bevare flaget sat til rigtigt.
Forbered dig på dit næste IoT-projekt
ESP-01-modulet er en prisbillig og kompakt løsning til IoT-projekter, og brug af det med MQTT kan tage dit projekt til næste niveau. Selvom den indledende opsætning kan være skræmmende, gør fordelene ved MQTT, såsom letvægtskommunikation og høj skalerbarhed, det til en værdifuld investering.