IoT-enheter kan gjøre kule ting, men en viktig del av ligningen er hvordan de kommuniserer. Du kan klare det med en ESP-01-modul.

Å være på et budsjett betyr ikke nødvendigvis at du ikke kan ta på deg avanserte DIY-prosjekter. Hvis du leter etter en liten, rimelig og praktisk WiFi-modul for å skalere opp IoT-prosjektene dine, er ESP-01-modulen et godt valg. Det kan imidlertid være vanskelig å integrere en slik modul med en lettvektsprotokoll som MQTT, spesielt hvis du er ny innen IoT-utvikling.

Programmering av ESP-01-kortet alene kan være utfordrende sammenlignet med andre moduler i ESP8266-serien. Men la oss gå gjennom det grunnleggende om alt maskinvare- og programvareoppsettet du trenger for å begynne å bruke modulen, samt hvordan du setter opp MQTT på en enkel og prosedyremessig måte.

Bli kjent med styret

ESP8266 ESP-01 er en liten og kompakt WiFi-modul som kommer med en ESP8266EX-brikke, som er en svært integrert SoC designet for IoT-applikasjoner.

Modulen inkluderer en enkeltbrikke trådløs mikrokontroller med en TCP/IP-protokollstack og er i stand til å koble til et trådløst nettverk eller fungere som et tilgangspunkt. ESP-01-modulen har også en 2x4 pin header som gir tilgang til GPIO-pinner, strøm og jord, og UART-grensesnitt.

instagram viewer

Sette opp maskinvaren

Modulen er ikke brødbrettvennlig i det hele tatt. For enkelhets skyld kan du kjøpe et forhåndsbygget forlengelsesbrett eller bare gå på den gamle måten - ved å bruke jumper-tråder og et brødbrett.

Det er en dedikert programmerer, ESP8266 Serial Module Board, som kan lette programmeringsopplevelsen din. Hvis du foretrekker å gå denne ruten, DIYHOBI har en praktisk veiledning om hvordan du flasher et program inn i ESP-01-modulen ved hjelp av en programmerer (inkludert USB til TTL CH340G Converter Module Adapter).

Men du kan fortsatt programmere modulen ved å bruke et Arduino-kort. Se på kretsskjemaet nedenfor for referanse.

Selv om det kan se fristende ut, anbefaler vi generelt ikke å koble modulen direkte til Arduinos 3.3v pin siden den krever mer strøm enn pinnen gir. Koble i stedet til Arduino 5V til en 3,3V spenningsregulator som LM1117/LD117, og strøm deretter WiFi-modulen fra regulatoren.

Ikke koble til VCC og CH_PD pinnene til ESP til 5V pinne til Arduino. Koble modulen til 5V strøm kan skade den.

Alle kondensatorene er 10uF og motstanden er en 1K motstand.

Programvarekrav

ESP-01-modulen brukes ofte med Arduino-plattformen. Som sådan er det ganske enkelt å sette opp programvaren, spesielt hvis du er kjent med Arduino C. Men hvis du er mer kjent med Raspberry, er det nok av Raspberry Pi IoT-prosjekter du kan prøve.

Dette er de grunnleggende kravene:

  • En MQTT-megler eller server (som Mosquitto eller CloudMQTT).
  • En Arduino IDE med ESP8266 kjernebibliotek.
  • PubSubClient-biblioteket for Arduino.

Du må huske at det å ha din egen MQTT-server lokalt gir deg fleksibilitet i prosjektene dine.

Installere de nødvendige bibliotekene

Først last ned og installer Arduino IDE på datamaskinen din. Når den er installert, åpner du Arduino IDE og går til Fil > Preferanser.

I Ytterligere nettadresser for styreledere feltet, skriv inn følgende URL:

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

Klikk OK for å lukke vinduet Innstillinger.

Gå deretter til Verktøy > Borde > Styreleder.

Søk deretter etter esp8266 og installer esp8266-kortpakken – denne inkluderer alle nødvendige biblioteker for ESP-01-modulen.

For å installere PubSubClient-biblioteket, gå til Skisse > Inkluder bibliotek > Administrer biblioteker.

Søk etter PubSubClient og klikk på biblioteket for å installere det.

Når du har installert alle nødvendige biblioteker, kan du begynne å programmere ESP-01-modulen. En ting å merke seg er at du kan bruke Wifi.h som er inkludert i biblioteket, eller last ned ESPWifi.h bibliotek og ta det med i skissen din.

Etablere en forbindelse mellom ESP-01 og MQTT Broker

En MQTT-megler er en server som fungerer som mellomledd mellom MQTT-klienter. Den lar klienter sende og motta meldinger til og fra hverandre gjennom en publiser-abonner-modell.

For å koble din ESP-01-modul til en MQTT-megler, må du spesifisere meglerens IP-adresse og portnummer i koden din. Du må også oppgi en unik klient-ID som identifiserer ESP-01-modulen til megleren.

Ta først med de nødvendige bibliotekene øverst på skissen din

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

Deretter definerer du WiFi- og MQTT-tilkoblingsdetaljene.

konstrøye* ssid = "DIN_SSID";
konstrøye* passord = "DITT PASSORD";
konstrøye* mqtt_server = "DIN_MQTT_SERVER";

Ikke glem å erstatte plassholderne med dine egne WiFi- og MQTT-tilkoblingsdetaljer.

Deretter oppretter du en WiFi-klient og kobler til ditt lokale WiFi-nettverk:

WiFiClient espClient;
tomromsetup_wifi(){
forsinkelse (10);
WiFi.begin (ssid, passord);
samtidig som (WiFi.status() != WL_CONNECTED) {
forsinkelse (500);
}
}

Denne funksjonen skal kalles i oppsett() funksjonen til skissen din.

Deretter må du opprette en MQTT-klient og koble til MQTT-megleren din:

PubSubClient klient(espClient);
tomromkoble til på nytt(){
samtidig som (!client.connected()) {
hvis (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Abonner på et emne
klient.abonner("test/emne");
} ellers {
forsinkelse (5000);
}
}
}

Når du har koblet til MQTT-megleren din, kan du begynne å publisere og abonnere på emner.

Publiserer data fra ESP-01 til MQTT Broker

Nå som du har koblet ESP01-modulen til MQTT-megleren, la oss se på hvordan du kan publisere data fra ESP-01 til megleren.

For å publisere data, bruk client.publish() funksjon for å publisere en melding til inTopic emne.

client.publish("inTopic", "Hei fra ESP-01");

Dette vil publisere meldingen "Hei fra ESP-01" til inTopic emne.

Du kan også publisere sensordata fra ESP-01 til megleren. Hvis du for eksempel har en temperatursensor koblet til din ESP-01, kan du publisere temperaturdataene til megleren som vist nedenfor.

flyte temperatur = 25.5;
String temperaturstreng = String(temperatur);
røye temperaturChar[5];
temperaturstreng.toCharArray(temperaturChar, 5);
client.publish("temp", temperaturChar);

Dette vil publisere temperaturdataene til Temp emne.

Data kan publiseres i en loop eller med jevne mellomrom, avhengig av prosjektets krav. Pass på at du ikke oversvømmer megleren med for mye data og at du publiserer med et rimelig intervall.

Abonnere på MQTT-emner og motta data på ESP-01

For å abonnere på et emne, bruk client.subscribe() funksjon. For vårt tilfelle nedenfor, abonnerer klienten på utTemne emne.

klient.abonner("outTopic");

Når du har abonnert på et emne, kan du motta meldinger publisert til det emnet ved å bruke client.loop() funksjon i Løkke() funksjon i skissen nedenfor:

tomromLøkke(){
hvis (!klient.tilkoblet()) {
koble til på nytt();
}
klient.Løkke();
}

Dette vil kontinuerlig se etter nye meldinger og utføre tilbakeringingsfunksjonen når en ny melding er mottatt.

For å håndtere mottatte meldinger, definer en tilbakeringingsfunksjon som den som vises nedenfor:

tomromRing tilbake(røye* emne, byte* nyttelast, usignert int lengde){
// Skriv ut den mottatte meldingen
Seriell.skrive ut("Melding mottatt om emnet: ");
Seriell.skrive ut(emne);
Seriell.skrive ut(". Beskjed: ");
til (int i=0;JegSeriell.skrive ut((røye)nyttelast[Jeg]);
}
Seriell.println();
}

Denne funksjonen vil bli kalt når en ny melding mottas om det abonnerte emnet. Den vil skrive ut den mottatte meldingen til den serielle monitoren.

Bruk av QoS-nivåer (Quality of Service) og sikkerhetsfunksjoner

En av de viktigste teknikkene som brukes til å håndtere forespørsler er å bruke QoS-nivåer (Quality of Service) for dine MQTT-meldinger. QoS-nivåer definerer hvordan megleren og abonnentene skal håndtere meldingene dine. Det er tre nivåer av QoS: 0, 1 og 2.

QoS-nivå 0 er det minst pålitelige, ettersom meldinger sendes kun én gang og det er ikke garantert å bli levert til abonnenten. QoS nivå 1 er mer pålitelig, ettersom meldinger sendes minst én gang og er garantert levert til abonnenten minst én gang. QoS nivå 2 er det mest pålitelige, ettersom meldinger sendes nøyaktig én gang og garantert leveres til abonnenten nøyaktig én gang. Hvordan enhetene dine kommuniserer er på linje med andre vanlige Internet of Things (IoT) sikkerhetsproblemer og rettelser du ønsker å holde deg på toppen av.

For å bruke QoS-nivåer, kan du spesifisere ønsket nivå når du publiserer meldinger ved hjelp av client.publish() funksjon:

client.publish("emne", "Hei Verden!", 1);

Dette vil publisere meldingen Hei Verden! til emne emne med QoS-nivå 1.

En annen avansert teknikk er å bruke Siste vilje og testamente (LWT) meldinger. LWT-meldinger er meldinger som sendes av megleren når en klient uventet kobler fra. Vi mener dette er viktig for å oppdage enheter uten nett eller for å utløse handlinger når en enhet kobles fra.

For å bruke LWT-meldinger kan du spesifisere LWT-meldingen når du kobler til megleren ved hjelp av client.setWill() funksjon:

client.setWill("status", "frakoblet", 1, ekte);

Dette vil sette LWT-meldingen til offlinestatus emne med QoS nivå 1 og beholde flagget satt til ekte.

Forbered deg på ditt neste IoT-prosjekt

ESP-01-modulen er en rimelig og kompakt løsning for IoT-prosjekter, og å bruke den med MQTT kan ta prosjektet ditt til neste nivå. Selv om det første oppsettet kan være skremmende, gjør fordelene med MQTT, som lett kommunikasjon og høy skalerbarhet, det til en verdig investering.