IoT-enheter kan göra coola saker, men en viktig del av ekvationen är hur de kommunicerar. Du kan hantera det med en ESP-01-modul.

Att ha en budget betyder inte nödvändigtvis att du inte kan ta dig an avancerade DIY-projekt. Om du letar efter en liten, prisvärd och bekväm WiFi-modul för att skala upp dina IoT-projekt är ESP-01-modulen ett utmärkt val. Att integrera en sådan modul med ett lättviktsprotokoll som MQTT kan dock vara knepigt, speciellt om du är ny på IoT-utveckling.

Att bara programmera ESP-01-kortet kan vara en utmaning jämfört med andra moduler i ESP8266-serien. Men låt oss gå igenom grunderna för all hård- och mjukvaruinstallation du behöver för att börja använda modulen samt hur du ställer in MQTT på ett enkelt och procedurmässigt sätt.

Lär känna styrelsen

ESP8266 ESP-01 är en liten och kompakt WiFi-modul som kommer med ett ESP8266EX-chip, som är en högintegrerad SoC designad för IoT-applikationer.

Modulen inkluderar en trådlös mikrokontroller med ett chip med en TCP/IP-protokollstack och kan ansluta till ett trådlöst nätverk eller fungera som en åtkomstpunkt. ESP-01-modulen har också ett 2x4-stiftshuvud som ger tillgång till dess GPIO-stift, ström och jord samt UART-gränssnitt.

Installera hårdvaran

Modulen är inte alls bredbrädesvänlig. För enkelhetens skull kan du köpa en förbyggd förlängningsbräda eller bara gå på gammaldags sätt - med hjälp av bygelkablar och en brödbräda.

Det finns en dedikerad programmerare, ESP8266 Serial Module Board, som kan underlätta din programmeringsupplevelse. Om du föredrar att gå den här vägen, DIYHOBI har en praktisk handledning om hur man flashar ett program i ESP-01-modulen med hjälp av en programmerare (inklusive USB till TTL CH340G Converter Module Adapter).

Men du kan fortfarande programmera modulen med ett Arduino-kort. Titta på kretsschemat nedan för referens.

Även om det kan se lockande ut, rekommenderar vi i allmänhet inte att du ansluter modulen direkt till Arduinos 3.3v-stift eftersom det kräver mer ström än vad stiftet ger. Anslut istället Arduino 5V till en 3,3V spänningsregulator som LM1117/LD117, strömsätt sedan WiFi-modulen från regulatorn.

Anslut inte VCC och CH_PD stiften på ESP: n till 5V stift på Arduino. Anslutning av modulen till 5V ström kan skada den.

Alla kondensatorer är 10uF och motståndet är a 1K motstånd.

Programvarukrav

ESP-01-modulen används ofta med Arduino-plattformen. Som sådan är det ganska enkelt att installera programvaran, särskilt om du är bekant med Arduino C. Men om du är mer bekant med Raspberry finns det gott om Raspberry Pi IoT-projekt du kan försöka.

Dessa är de grundläggande kraven:

  • En MQTT-mäklare eller -server (som Mosquitto eller CloudMQTT).
  • En Arduino IDE med ESP8266 kärnbibliotek.
  • PubSubClient-biblioteket för Arduino.

Du måste komma ihåg att att ha din egen MQTT-server lokalt ger dig flexibilitet i dina projekt.

Installera de nödvändiga biblioteken

Ladda först ner och installera Arduino IDE på din dator. När du har installerat, öppna Arduino IDE och gå till Fil > Inställningar.

I den Ytterligare webbadresser för styrelseansvariga fältet anger du följande URL:

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

Klick OK för att stänga fönstret Inställningar.

Gå sedan till Verktyg > Styrelse > Styrelsechef.

Sök sedan efter esp8266 och installera esp8266-kortpaketet – detta inkluderar alla nödvändiga bibliotek för ESP-01-modulen.

För att installera PubSubClient-biblioteket, gå till Skiss > Inkludera bibliotek > Hantera bibliotek.

Söka efter PubSubClient och klicka på biblioteket för att installera det.

När du har installerat alla nödvändiga bibliotek kan du börja programmera ESP-01-modulen. En sak att dock notera är att du kan använda Wifi.h som ingår i biblioteket, eller ladda ner ESPWifi.h bibliotek och inkludera det i din skiss.

Upprätta en koppling mellan ESP-01 och MQTT Broker

En MQTT-mäklare är en server som fungerar som en mellanhand mellan MQTT-klienter. Det tillåter kunder att skicka och ta emot meddelanden till och från varandra genom en publicera-prenumerationsmodell.

För att ansluta din ESP-01-modul till en MQTT-mäklare måste du ange mäklarens IP-adress och portnummer i din kod. Du kommer också att behöva tillhandahålla ett unikt klient-ID som identifierar din ESP-01-modul till mäklaren.

Inkludera först de nödvändiga biblioteken överst i din skiss

#omfatta <ESP8266 WiFi.h>
#omfatta <PubSubClient.h>

Därefter definierar du WiFi- och MQTT-anslutningsdetaljerna.

konströding*ssid = "YOUR_SSID";
konströding*lösenord = "DITT LÖSENORD";
konströding* mqtt_server = "DIN_MQTT_SERVER";

Glöm inte att ersätta platshållarna med dina egna WiFi- och MQTT-anslutningsdetaljer.

Efter det skapar du en WiFi-klient och ansluter till ditt lokala WiFi-nätverk:

WiFiClient espClient;
tomhetsetup_wifi(){
fördröjning (10);
WiFi.begin (ssid, Lösenord);
medan (WiFi.status() != WL_CONNECTED) {
fördröjning (500);
}
}

Denna funktion bör anropas i uppstart() skissens funktion.

Därefter måste du skapa en MQTT-klient och ansluta till din MQTT-mäklare:

PubSubClient klient(espClient);
tomhetåteranslut(){
medan (!client.connected()) {
om (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Prenumerera på ett ämne
client.subscribe("test/ämne");
} annan {
fördröjning (5000);
}
}
}

När du har anslutit till din MQTT-mäklare kan du börja publicera och prenumerera på ämnen.

Publicera data från ESP-01 till MQTT Broker

Nu när du framgångsrikt har anslutit din ESP01-modul till MQTT-mäklaren, låt oss titta på hur du kan publicera data från ESP-01 till mäklaren.

För att publicera data, använd client.publish() funktion för att publicera ett meddelande till inTopic ämne.

client.publish("inTopic", "Hej från ESP-01");

Detta kommer att publicera meddelandet "Hej från ESP-01" till inTopic ämne.

Du kan också publicera sensordata från ESP-01 till mäklaren. Om du till exempel har en temperatursensor ansluten till din ESP-01 kan du publicera temperaturdata till mäklaren enligt nedan.

flyta temperatur = 25.5;
Sträng temperaturString = Sträng(temperatur);
röding temperaturChar[5];
temperatursträng.toCharArray(temperaturChar, 5);
client.publish("temp"temperaturChar);

Detta kommer att publicera temperaturdata till Temp ämne.

Data kan publiceras i en loop eller med jämna mellanrum, beroende på ditt projekts krav. Se till att du inte översvämmer mäklaren med för mycket data och att du publicerar med ett rimligt intervall.

Prenumerera på MQTT-ämnen och ta emot data på ESP-01

För att prenumerera på ett ämne, använd client.subscribe() fungera. För vårt fall nedan, prenumererar kunden på outTopic ämne.

client.subscribe("outtopic");

När du har prenumererat på ett ämne kan du ta emot meddelanden som publicerats för det ämnet med hjälp av client.loop() funktion i slinga() funktion i skissen nedan:

tomhetslinga(){
om (!klient.ansluten()) {
reconnect();
}
klient.slinga();
}

Detta kommer att kontinuerligt söka efter nya meddelanden och utföra återuppringningsfunktionen när ett nytt meddelande har mottagits.

För att hantera mottagna meddelanden, definiera en återuppringningsfunktion som den som visas nedan:

tomhetring tillbaka(röding* ämne, byte* nyttolast, osignerad int längd){
// Skriv ut det mottagna meddelandet
Serie.skriva ut("Meddelande mottaget om ämnet:");
Serie.skriva ut(ämne);
Serie.skriva ut(". Meddelande: ");
för (int i=0;iSerie.skriva ut((röding)nyttolast[i]);
}
Serie.println();
}

Denna funktion kommer att anropas när ett nytt meddelande tas emot om det prenumererade ämnet. Det kommer att skriva ut det mottagna meddelandet till den seriella monitorn.

Använda QoS-nivåer (Quality of Service) och säkerhetsfunktioner

En av de viktigaste teknikerna som används för att hantera förfrågningar är att använda QoS-nivåer (Quality of Service) för dina MQTT-meddelanden. QoS-nivåer definierar hur mäklaren och prenumeranterna ska hantera dina meddelanden. Det finns tre nivåer av QoS: 0, 1 och 2.

QoS-nivå 0 är den minst tillförlitliga, eftersom meddelanden bara skickas en gång och inte garanteras levereras till abonnenten. QoS nivå 1 är mer tillförlitlig, eftersom meddelanden skickas minst en gång och garanteras levereras till abonnenten minst en gång. QoS nivå 2 är den mest tillförlitliga, eftersom meddelanden skickas exakt en gång och garanteras levereras till abonnenten exakt en gång. Hur dina enheter kommunicerar stämmer överens med andra vanliga Internet of Things (IoT) säkerhetsproblem och korrigeringar du vill hålla dig på toppen.

För att använda QoS-nivåer kan du ange önskad nivå när du publicerar meddelanden med hjälp av client.publish() fungera:

client.publish("ämne", "Hej världen!", 1);

Detta kommer att publicera meddelandet Hej världen! till ämne ämne med QoS-nivå 1.

En annan avancerad teknik är att använda Sista viljan och testamentet (LWT) meddelanden. LWT-meddelanden är meddelanden som skickas av mäklaren när en klient oväntat kopplar bort. Vi tror att detta är viktigt för att upptäcka offlineenheter eller för att utlösa åtgärder när en enhet kopplas från.

För att använda LWT-meddelanden kan du ange LWT-meddelandet när du ansluter till mäklaren med hjälp av client.setWill() fungera:

client.setWill("status", "off-line", 1, Sann);

Detta kommer att ställa in LWT-meddelandet till off-linestatus ämne med QoS nivå 1 och behåll flaggan inställd på Sann.

Förbered dig för ditt nästa IoT-projekt

ESP-01-modulen är en prisvärd och kompakt lösning för IoT-projekt, och att använda den med MQTT kan ta ditt projekt till nästa nivå. Även om den initiala installationen kan vara skrämmande, gör fördelarna med MQTT, såsom lätt kommunikation och hög skalbarhet, det till en givande investering.