IoT-apparaten kunnen coole dingen doen, maar een essentieel onderdeel van de vergelijking is hoe ze communiceren. Dat regel je met een ESP-01 module.
Een beperkt budget hebben betekent niet noodzakelijk dat u geen geavanceerde doe-het-zelfprojecten kunt uitvoeren. Als u op zoek bent naar een kleine, betaalbare en handige WiFi-module om uw IoT-projecten op te schalen, dan is de ESP-01-module een uitstekende keuze. Het integreren van zo'n module met een lichtgewicht protocol zoals MQTT kan echter lastig zijn, vooral als je nieuw bent in de ontwikkeling van IoT.
Het programmeren van alleen het ESP-01-bord kan een uitdaging zijn in vergelijking met andere modules van de ESP8266-serie. Maar laten we eens kijken naar de basisprincipes van alle hardware- en software-instellingen die u nodig hebt om de module te gaan gebruiken en hoe u MQTT op een eenvoudige en procedurele manier instelt.
Kennismaking met het bestuur
ESP8266 ESP-01 is een kleine en compacte WiFi-module die wordt geleverd met een ESP8266EX-chip, een sterk geïntegreerde SoC die is ontworpen voor IoT-toepassingen.
De module bevat een single-chip draadloze microcontroller met een TCP/IP-protocolstack en kan verbinding maken met een draadloos netwerk of fungeren als toegangspunt. De ESP-01-module heeft ook een 2x4-pins header die toegang biedt tot de GPIO-pinnen, voeding en aarde, en UART-interface.
De hardware instellen
De module is helemaal niet breadboard-vriendelijk. Voor het gemak kunt u een kant-en-klaar uitbreidingsbord kopen of gewoon de ouderwetse manier gebruiken: met hulpdraden en een breadboard.
Er is een speciale programmeur, de ESP8266 seriële modulekaart, die uw programmeerervaring kan vergemakkelijken. Als u deze route liever wilt volgen, DIYHOBI heeft een handige tutorial over hoe je een programma in de ESP-01-module kunt flashen met behulp van een programmer (inclusief de USB naar TTL CH340G Converter Module Adapter).
Maar u kunt de module nog steeds programmeren met behulp van een Arduino-bord. Kijk naar het schakelschema hieronder ter referentie.
Hoewel het er misschien verleidelijk uitziet, raden we over het algemeen niet aan om de module rechtstreeks op de 3,3 V-pin van de Arduino aan te sluiten, omdat er meer stroom nodig is dan de pin levert. Sluit in plaats daarvan de Arduino aan 5V op een 3,3V-spanningsregelaar zoals LM1117/LD117 en voed vervolgens de WiFi-module vanaf de regelaar.
Sluit de VCC En CH_PD pinnen van de ESP aan de 5V pen van de Arduino. De module aansluiten op 5V kracht kan het beschadigen.
Alle condensatoren zijn 10uF en de weerstand is a 1K weerstand.
Softwarevereisten
De ESP-01-module wordt vaak gebruikt met het Arduino-platform. Als zodanig is het instellen van de software vrij eenvoudig, vooral als u bekend bent met Arduino C. Als u echter meer bekend bent met Raspberry, zijn er genoeg Raspberry Pi IoT-projecten je kan het proberen.
Dit zijn de basisvereisten:
- Een MQTT-makelaar of -server (zoals Mosquitto of CloudMQTT).
- Een Arduino IDE met de ESP8266-kernbibliotheek.
- De PubSubClient-bibliotheek voor Arduino.
U moet niet vergeten dat het lokaal hebben van uw eigen MQTT-server u flexibiliteit geeft binnen uw projecten.
De benodigde bibliotheken installeren
Download en installeer eerst de Arduino IDE op uw computer. Eenmaal geïnstalleerd, opent u de Arduino IDE en gaat u naar Bestand > Voorkeuren.
In de Extra Boards Manager-URL's veld, voer de volgende URL in:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klik OK om het voorkeurenvenster te sluiten.
Ga vervolgens naar Hulpmiddelen > Bord > Bestuurder van de borden.
Zoek dan naar esp8266 en installeer het esp8266-bordpakket - dit bevat alle benodigde bibliotheken voor de ESP-01-module.
Ga naar om de PubSubClient-bibliotheek te installeren Schetsen > Inclusief bibliotheek > Bibliotheken beheren.
Zoeken PubSubClient en klik op de bibliotheek om deze te installeren.
Zodra u alle benodigde bibliotheken hebt geïnstalleerd, kunt u beginnen met het programmeren van de ESP-01-module. Een ding om op te merken is echter dat u de Wifi.h die is opgenomen in de bibliotheek, of download de ESPWifi.h bibliotheek en neem het op in je schets.
Een verbinding tot stand brengen tussen ESP-01 en MQTT Broker
Een MQTT-makelaar is een server die fungeert als tussenpersoon tussen MQTT-clients. Hiermee kunnen clients berichten naar en van elkaar verzenden en ontvangen via een publish-subscribe-model.
Om uw ESP-01-module aan te sluiten op een MQTT-broker, moet u het IP-adres en het poortnummer van de broker in uw code opgeven. U moet ook een uniek klant-ID opgeven dat uw ESP-01-module aan de makelaar identificeert.
Voeg eerst de benodigde bibliotheken toe aan de bovenkant van uw schets
#erbij betrekken <ESP8266WiFi.H>
#erbij betrekken <PubSubClient.H>
Definieer vervolgens de wifi- en MQTT-verbindingsdetails.
constchar* ssid = "UW_SSID";
constchar* wachtwoord = "JE WACHTWOORD";
constchar* mqtt_server = "UW_MQTT_SERVER";
Vergeet niet de tijdelijke aanduidingen te vervangen door uw eigen wifi- en MQTT-verbindingsgegevens.
Maak daarna een wifi-client aan en maak verbinding met je lokale wifi-netwerk:
WiFiClient espClient;
leegteinstellen_wifi(){
vertraging (10);
WiFi.begin (ssid, wachtwoord);
terwijl (WiFi.status() != WL_CONNECTED) {
vertraging (500);
}
}
Deze functie moet worden aangeroepen in de opgericht() functie van je schets.
Vervolgens moet u een MQTT-client maken en verbinding maken met uw MQTT-broker:
PubSubClient cliënt(espClient);
leegteopnieuw verbinden(){
terwijl (!client.verbonden()) {
als (klant.verbinden("ESP01", mqtt_gebruiker, mqtt_wachtwoord)) {
// Abonneer u op een onderwerp
klant.abonneren("test/onderwerp");
} anders {
vertraging (5000);
}
}
}
Zodra u verbinding heeft gemaakt met uw MQTT-makelaar, kunt u beginnen met het publiceren en abonneren op onderwerpen.
Gegevens publiceren van ESP-01 naar MQTT Broker
Nu u uw ESP01-module met succes hebt verbonden met de MQTT-makelaar, gaan we kijken hoe u gegevens van de ESP-01 naar de makelaar kunt publiceren.
Gebruik de klant.publiceren() functie om een bericht te publiceren naar de inOnderwerp onderwerp.
klant.publiceren("inTopic", "Hallo van ESP-01");
Dit publiceert het bericht "Hallo van ESP-01" naar de inOnderwerp onderwerp.
U kunt ook sensorgegevens van de ESP-01 naar de makelaar publiceren. Als u bijvoorbeeld een temperatuursensor op uw ESP-01 heeft aangesloten, kunt u de temperatuurgegevens naar de makelaar publiceren zoals hieronder weergegeven.
vlot temperatuur = 25.5;
Snaar temperatuurString = Snaar(temperatuur);
char temperatuurChar[5];
temperatuurString.toCharArray(temperatuurChar, 5);
klant.publiceren("Temperatuur", temperatuurChar);
Hiermee publiceert u de temperatuurgegevens naar de Temp onderwerp.
Gegevens kunnen in een lus of met regelmatige tussenpozen worden gepubliceerd, afhankelijk van de vereisten van uw project. Zorg ervoor dat u de makelaar niet overspoelt met te veel gegevens en dat u met redelijke tussenpozen publiceert.
Abonneren op MQTT-onderwerpen en gegevens ontvangen op ESP-01
Om je te abonneren op een onderwerp, gebruik je de klant.subscribe() functie. Voor ons onderstaande geval onderschrijft de klant het outTopic onderwerp.
klant.abonneren("uitTopic");
Als u zich eenmaal op een onderwerp hebt geabonneerd, kunt u berichten ontvangen die voor dat onderwerp zijn gepubliceerd met behulp van de cliënt.loop() functie in de lus() functie in onderstaande schets:
leegtelus(){
als (!cliënt.verbonden()) {
opnieuw verbinden();
}
cliënt.lus();
}
Dit zal continu controleren op nieuwe berichten en de callback-functie uitvoeren wanneer een nieuw bericht is ontvangen.
Definieer een terugbelfunctie zoals hieronder weergegeven om ontvangen berichten af te handelen:
leegteBel terug(char* onderwerp, byte* lading, niet ondertekend int lengte){
// Druk het ontvangen bericht af
Serieel.afdrukken("Bericht on-topic ontvangen: ");
Serieel.afdrukken(onderwerp);
Serieel.afdrukken(". Bericht: ");
voor (int ik=0;iSerieel.afdrukken((char)lading[i]);
}
Serieel.println();
}
Deze functie wordt aangeroepen wanneer een nieuw bericht wordt ontvangen over het geabonneerde onderwerp. Het zal het ontvangen bericht naar de seriële monitor afdrukken.
QoS-niveaus (Quality of Service) en beveiligingsfuncties gebruiken
Een van de belangrijkste technieken die worden gebruikt bij het afhandelen van verzoeken, is het gebruik van QoS-niveaus (Quality of Service) voor uw MQTT-berichten. QoS-niveaus bepalen hoe de makelaar en abonnees met uw berichten moeten omgaan. Er zijn drie QoS-niveaus: 0, 1 en 2.
QoS-niveau 0 is het minst betrouwbaar, aangezien berichten slechts één keer worden verzonden en er niet gegarandeerd wordt dat ze bij de abonnee worden afgeleverd. QoS-niveau 1 is betrouwbaarder, omdat berichten minstens één keer worden verzonden en gegarandeerd minstens één keer bij de abonnee worden afgeleverd. QoS-niveau 2 is het meest betrouwbaar, omdat berichten precies één keer worden verzonden en gegarandeerd precies één keer bij de abonnee worden afgeleverd. Hoe uw apparaten communiceren, komt overeen met andere algemene Internet of Things (IoT) beveiligingsproblemen en oplossingen je wilt er bovenop blijven.
Om QoS-niveaus te gebruiken, kunt u het gewenste niveau specificeren bij het publiceren van berichten met behulp van de klant.publiceren() functie:
klant.publiceren("onderwerp", "Hallo Wereld!", 1);
Hiermee wordt het bericht gepubliceerd Hallo Wereld! naar de onderwerp onderwerp met QoS-niveau 1.
Een andere geavanceerde techniek gebruikt Laatste testament (LWT) berichten. LWT-berichten zijn berichten die door de broker worden verzonden wanneer een client onverwachts de verbinding verbreekt. Wij zijn van mening dat dit belangrijk is voor het detecteren van offline apparaten of voor het activeren van acties wanneer een apparaat de verbinding verbreekt.
Om LWT-berichten te gebruiken, kunt u het LWT-bericht specificeren wanneer u verbinding maakt met de makelaar met behulp van de cliënt.setWill() functie:
klant.setWill("toestand", "offline", 1, WAAR);
Hiermee wordt het LWT-bericht ingesteld op offline op de toestand onderwerp met QoS-niveau 1 en de bewaarvlag ingesteld op WAAR.
Bereid u voor op uw volgende IoT-project
De ESP-01-module is een betaalbare en compacte oplossing voor IoT-projecten, en het gebruik ervan met MQTT kan uw project naar een hoger niveau tillen. Hoewel de initiële installatie ontmoedigend kan zijn, maken de voordelen van MQTT, zoals lichtgewicht communicatie en hoge schaalbaarheid, het een waardevolle investering.