IoT-laitteet voivat tehdä hienoja asioita, mutta olennainen osa yhtälöä on tapa, jolla ne kommunikoivat. Voit hallita sitä ESP-01-moduulilla.

Budjetissa oleminen ei välttämättä tarkoita, ettet voi ottaa edistyneitä tee-se-itse-projekteja. Jos etsit pientä, edullista ja kätevää WiFi-moduulia IoT-projektien laajentamiseen, ESP-01-moduuli on loistava valinta. Tällaisen moduulin integroiminen kevyeen protokollaan, kuten MQTT, voi kuitenkin olla hankalaa, varsinkin jos olet uusi IoT-kehityksessä.

Pelkästään ESP-01-kortin ohjelmointi voi olla haastavaa verrattuna muihin ESP8266-sarjan moduuleihin. Mutta käydään läpi kaikki laitteiston ja ohjelmiston asennuksen perusteet, joita tarvitset moduulin käytön aloittamiseen, sekä MQTT: n määrittäminen yksinkertaisella ja menettelytavalla.

Hallitukseen tutustuminen

ESP8266 ESP-01 on pieni ja kompakti WiFi-moduuli, jonka mukana tulee ESP8266EX-siru, joka on IoT-sovelluksiin suunniteltu pitkälle integroitu SoC.

Moduuli sisältää yksisirun langattoman mikro-ohjaimen, jossa on TCP/IP-protokollapino ja joka pystyy muodostamaan yhteyden langattomaan verkkoon tai toimimaan tukiasemana. ESP-01-moduulissa on myös 2x4-nastainen otsikko, joka tarjoaa pääsyn sen GPIO-nastoihin, tehoon ja maahan sekä UART-liitäntään.

instagram viewer

Laitteiston asentaminen

Moduuli ei ole ollenkaan leipälautaystävällinen. Mukavuussyistä voit ostaa valmiiksi rakennetun laajennuslevyn tai mennä vain vanhaan tapaan käyttämällä hyppyjohtimia ja leipälautaa.

Siellä on oma ohjelmoija, ESP8266 Serial Module Board, joka voi helpottaa ohjelmointikokemustasi. Jos haluat mieluummin mennä tälle tielle, DIYHOBI on kätevä opetusohjelma ohjelman flash-muistiin ESP-01-moduuliin ohjelmoijan avulla (mukaan lukien USB-TTL CH340G Converter Module Adapter).

Mutta voit silti ohjelmoida moduulin Arduino-levyllä. Katso alla olevaa piirikaaviota viitteeksi.

Vaikka se saattaa näyttää houkuttelevalta, emme yleensä suosittele moduulin kytkemistä suoraan Arduinon 3,3 V: n nastaan, koska se vaatii enemmän virtaa kuin nasta tarjoaa. Liitä sen sijaan Arduino 5V 3,3 V jännitesäätimeen, kuten LM1117/LD117, ja anna sitten virta WiFi-moduulille säätimestä.

Älä yhdistä VCC ja CH_PD ESP: n nastat 5V Arduinon pin. Moduulin liittäminen 5V virta voi vahingoittaa sitä.

Kaikki kondensaattorit ovat 10uF ja vastus on a 1K vastus.

Ohjelmistovaatimukset

ESP-01-moduulia käytetään yleisesti Arduino-alustan kanssa. Sellaisenaan ohjelmiston asentaminen on melko yksinkertaista, varsinkin jos tunnet Arduino C: n. Jos kuitenkin tunnet Raspberryn paremmin, niitä on paljon Raspberry Pi IoT -projektit voit kokeilla.

Nämä ovat perusvaatimukset:

  • MQTT-välittäjä tai palvelin (kuten Mosquitto tai CloudMQTT).
  • Arduino IDE, jossa on ESP8266-ydinkirjasto.
  • PubSubClient-kirjasto Arduinolle.

Sinun on muistettava, että oman MQTT-palvelimen omistaminen paikallisesti antaa sinulle joustavuutta projekteissasi.

Tarvittavien kirjastojen asentaminen

Lataa ja asenna ensin Arduino IDE tietokoneellesi. Kun olet asentanut, avaa Arduino IDE ja siirry kohtaan Tiedosto > Asetukset.

Vuonna Muut Boards Managerin URL-osoitteet kenttään, kirjoita seuraava URL-osoite:

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

Klikkaus OK sulkeaksesi Asetukset-ikkunan.

Siirry seuraavaksi kohtaan Työkalut > hallitus > Hallituspäällikkö.

Etsi sitten esp8266 ja asenna esp8266-korttipaketti – tämä sisältää kaikki ESP-01-moduulin tarvittavat kirjastot.

Asenna PubSubClient-kirjasto siirtymällä osoitteeseen Luonnos > Sisällytä kirjasto > Hallitse kirjastoja.

Etsiä PubSubClient ja asenna se napsauttamalla kirjastoa.

Kun olet asentanut kaikki tarvittavat kirjastot, voit aloittaa ESP-01-moduulin ohjelmoinnin. Yksi asia on kuitenkin huomattava, että voit käyttää Wifi.h joka sisältyy kirjastoon, tai lataa ESPWifi.h kirjasto ja sisällytä se luonnoksiisi.

Yhteyden muodostaminen ESP-01:n ja MQTT Brokerin välille

MQTT-välittäjä on palvelin, joka toimii välittäjänä MQTT-asiakkaiden välillä. Sen avulla asiakkaat voivat lähettää ja vastaanottaa viestejä toisilleen ja toisiltaan julkaisu-tilaa -mallin avulla.

Jos haluat yhdistää ESP-01-moduulin MQTT-välittäjään, sinun on määritettävä välittäjän IP-osoite ja portin numero koodissasi. Sinun on myös annettava välittäjälle yksilöllinen asiakastunnus, joka tunnistaa ESP-01-moduulisi.

Sisällytä ensin tarvittavat kirjastot luonnoksesi yläosaan

#sisältää <ESP8266WiFi.h>
#sisältää <PubSubClient.h>

Määritä seuraavaksi WiFi- ja MQTT-yhteyden tiedot.

konsthiiltyä* ssid = "YOUR_SSID";
konsthiiltyä* salasana = "SALASANASI";
konsthiiltyä* mqtt_server = "YOUR_MQTT_SERVER";

Älä unohda korvata paikkamerkit omilla WiFi- ja MQTT-yhteystiedoillasi.

Luo sen jälkeen WiFi-asiakas ja muodosta yhteys paikalliseen WiFi-verkkoosi:

WiFiClient espClient;
mitätönsetup_wifi(){
viive (10);
WiFi.begin (ssid, Salasana);
sillä aikaa (WiFi.status() != WL_CONNECTED) {
viive (500);
}
}

Tämä toiminto tulee kutsua perustaa() luonnoksesi funktio.

Seuraavaksi sinun on luotava MQTT-asiakas ja muodostettava yhteys MQTT-välittäjään:

PubSubClient asiakas(espClient);
mitätönyhdistä uudelleen(){
sillä aikaa (!client.connected()) {
jos (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Tilaa aihe
client.subscribe("testi/aihe");
} muu {
viive (5000);
}
}
}

Kun olet muodostanut yhteyden MQTT-välittäjään, voit aloittaa aiheiden julkaisun ja tilaamisen.

Tietojen julkaiseminen ESP-01:stä MQTT Brokerille

Nyt kun olet yhdistänyt ESP01-moduulin onnistuneesti MQTT-välittäjään, katsotaan kuinka voit julkaista tietoja ESP-01:stä välittäjälle.

Käytä tietojen julkaisemiseen client.publish() toiminto, jolla voit julkaista viestin InTopic aihe.

client.publish("inTopic", "Hei ESP-01:stä");

Tämä julkaisee viestin "Hello from ESP-01" osoitteeseen InTopic aihe.

Voit myös julkaista anturitietoja ESP-01:stä välittäjälle. Jos sinulla on esimerkiksi lämpötila-anturi kytkettynä ESP-01:een, voit julkaista lämpötilatiedot välittäjälle alla kuvatulla tavalla.

kellua lämpötila = 25.5;
merkkijono lämpötilamerkkijono = merkkijono(lämpötila);
hiiltyä lämpötila Char[5];
lämpötilamerkkijono.toCharArray(lämpötilaChar, 5);
client.publish("Lämpö", lämpötilaChar);

Tämä julkaisee lämpötilatiedot Temp aihe.

Tiedot voidaan julkaista silmukassa tai säännöllisin väliajoin projektisi vaatimuksista riippuen. Varmista, että et tulvi välittäjää liikaa datalla ja että julkaiset kohtuullisen väliajoin.

MQTT-aiheiden tilaaminen ja tietojen vastaanottaminen ESP-01:llä

Voit tilata aiheen käyttämällä client.subscribe() toiminto. Alla olevassa tapauksessa asiakas tilaa OutTopic aihe.

client.subscribe("outTopic");

Kun olet tilannut aiheen, voit vastaanottaa kyseiseen aiheeseen julkaistuja viestejä käyttämällä client.loop() toimintoa loop() toiminto alla olevassa luonnoksessa:

mitätönsilmukka(){
jos (!asiakas.yhdistetty()) {
yhdistä uudelleen();
}
asiakas.silmukka();
}

Tämä tarkistaa jatkuvasti uusia viestejä ja suorittaa takaisinsoittotoiminnon, kun uusi viesti on vastaanotettu.

Voit käsitellä vastaanotetut viestit määrittämällä alla olevan kaltaisen takaisinsoittotoiminnon:

mitätönsoita takaisin(hiiltyä* aihe, tavu* hyötykuorma, allekirjoittamaton int pituus){
// Tulosta vastaanotettu viesti
Sarja.Tulosta("Viesti vastaanotettu aiheesta:");
Sarja.Tulosta(aihe);
Sarja.Tulosta(". Viesti: ");
varten (int i=0;iSarja.Tulosta((hiiltyä)hyötykuorma[i]);
}
Sarja.println();
}

Tätä toimintoa kutsutaan, kun tilattua aihetta koskeva uusi viesti vastaanotetaan. Se tulostaa vastaanotetun viestin Serial Monitoriin.

QoS (Quality of Service) -tasojen ja suojausominaisuuksien käyttö

Yksi tärkeimmistä pyyntöjen käsittelyssä käytetyistä tekniikoista on QoS (Quality of Service) -tasojen käyttäminen MQTT-viesteissäsi. QoS-tasot määrittelevät, kuinka välittäjän ja tilaajien tulee käsitellä viestejäsi. QoS-tasoja on kolme: 0, 1 ja 2.

QoS-taso 0 on vähiten luotettava, koska viestit lähetetään vain kerran, eikä niiden toimittamista tilaajalle taata. QoS-taso 1 on luotettavampi, koska viestit lähetetään vähintään kerran ja ne taataan toimitettavaksi tilaajalle vähintään kerran. QoS-taso 2 on luotettavin, sillä viestit lähetetään täsmälleen kerran ja ne toimitetaan tilaajalle taatusti tasan kerran. Laitteidesi kommunikointi on linjassa muiden kanssa yleiset Internet of Things (IoT) -tietoturvaongelmat ja -korjaukset haluat pysyä kärjessä.

Jos haluat käyttää QoS-tasoja, voit määrittää haluamasi tason, kun julkaiset viestejä käyttämällä client.publish() toiminto:

client.publish("aihe", "Hei maailma!", 1);

Tämä julkaisee viestin Hei maailma! kohtaan aihe aihe QoS-tasolla 1.

Toinen edistynyt tekniikka käyttää Viimeinen testamentti ja testamentti (LWT) viestejä. LWT-viestit ovat viestejä, jotka välittäjä lähettää, kun asiakas katkaisee yhteyden yllättäen. Uskomme, että tämä on tärkeää offline-laitteiden havaitsemiseksi tai toimintojen käynnistämiseksi, kun laite katkeaa.

Jos haluat käyttää LWT-viestejä, voit määrittää LWT-sanoman muodostaessasi yhteyden välittäjään käyttämällä client.setWill() toiminto:

client.setWill("Tila", "offline", 1, totta);

Tämä asettaa LWT-viestin arvoon offline-tilassa päällä Tila aihe, jonka QoS-taso 1 ja säilytyslippu asetettu arvoon totta.

Valmistaudu seuraavaan IoT-projektiisi

ESP-01-moduuli on edullinen ja kompakti ratkaisu IoT-projekteihin, ja sen käyttäminen MQTT: n kanssa voi viedä projektisi uudelle tasolle. Vaikka alkuasennus voi olla pelottava, MQTT: n edut, kuten kevyt viestintä ja korkea skaalautuvuus, tekevät siitä kannattavan investoinnin.