Az IoT-eszközök remek dolgokra képesek, de az egyenlet lényeges része a kommunikáció módja. Ezt egy ESP-01 modullal kezelheti.

A költségvetés nem feltétlenül jelenti azt, hogy nem vállalhat előrehaladott barkácsprojekteket. Ha kicsi, megfizethető és kényelmes WiFi-modult keres IoT-projektjei bővítéséhez, az ESP-01 modul nagyszerű választás. Azonban egy ilyen modul integrálása egy könnyű protokollal, például az MQTT-vel bonyolult lehet, különösen akkor, ha még új az IoT-fejlesztésben.

Az ESP-01 kártya programozása önmagában is kihívást jelenthet az ESP8266 sorozat többi moduljához képest. De nézzük át a modul használatának megkezdéséhez szükséges hardver- és szoftverbeállítások alapjait, valamint az MQTT egyszerű és eljárási módját.

A tábla megismerése

Az ESP8266 ESP-01 egy kicsi és kompakt WiFi modul, amely ESP8266EX chippel rendelkezik, amely egy IoT-alkalmazásokhoz tervezett, magasan integrált SoC.

A modul egylapkás vezeték nélküli mikrokontrollert tartalmaz TCP/IP protokoll veremmel, és képes vezeték nélküli hálózathoz csatlakozni vagy hozzáférési pontként működni. Az ESP-01 modul egy 2x4 tűs fejléccel is rendelkezik, amely hozzáférést biztosít a GPIO érintkezőihez, a tápellátáshoz és a földeléshez, valamint az UART interfészhez.

A hardver beállítása

A modul egyáltalán nem kenyérlapbarát. A kényelem kedvéért vásárolhat előre beépített bővítőkártyát, vagy egyszerűen csak a régimódi módon – áthidaló vezetékek és kenyérsütődeszka használatával.

Van egy dedikált programozó, az ESP8266 Serial Module Board, amely megkönnyíti a programozási élményt. Ha inkább ezt az utat választja, DIYHOBI egy praktikus oktatóanyaggal rendelkezik arról, hogyan lehet programot flashelni az ESP-01 modulba egy programozó segítségével (beleértve az USB-TTL CH340G átalakító modul adaptert).

De továbbra is programozhatja a modult Arduino kártyával. Tekintse meg az alábbi kapcsolási rajzot referenciaként.

Bár csábítónak tűnhet, általában nem javasoljuk, hogy a modult közvetlenül az Arduino 3,3 V-os érintkezőjéhez csatlakoztassuk, mivel több áramot igényel, mint amennyit a tű biztosít. Ehelyett csatlakoztassa az Arduinót 5V egy 3,3 V-os feszültségszabályozóra, például LM1117/LD117-re, majd a szabályozóról táplálja a WiFi modult.

Ne csatlakoztassa a VCC és CH_PD az ESP érintkezőit a 5V Az Arduino tűje. A modul csatlakoztatása a 5V az áram károsíthatja.

Az összes kondenzátor megvan 10uF az ellenállás pedig a 1K ellenállás.

Szoftverkövetelmények

Az ESP-01 modult általában az Arduino platformmal használják. Mint ilyen, a szoftver beállítása meglehetősen egyszerű, különösen, ha ismeri az Arduino C-t. Ha azonban jobban ismeri a Raspberry-t, akkor rengeteg van Raspberry Pi IoT projektek megpróbálhatod.

Ezek az alapvető követelmények:

  • MQTT bróker vagy szerver (például Mosquitto vagy CloudMQTT).
  • Egy Arduino IDE ESP8266 alapkönyvtárral.
  • A PubSubClient könyvtár az Arduino számára.

Ne feledje, hogy saját helyi MQTT-kiszolgálója rugalmasságot biztosít a projektek során.

A szükséges könyvtárak telepítése

Először töltse le és telepítse az Arduino IDE-t a számítógépére. A telepítés után nyissa meg az Arduino IDE-t, és lépjen a következőre Fájl > preferenciák.

Ban,-ben További fórumkezelői URL-ek mezőbe írja be a következő URL-t:

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

Kattintson rendben a Beállítások ablak bezárásához.

Ezután lépjen ide Eszközök > Tábla > táblák menedzsere.

Ezután keressen esp8266 és telepítse az esp8266 kártyacsomagot – ez tartalmazza az ESP-01 modulhoz szükséges összes könyvtárat.

A PubSubClient könyvtár telepítéséhez lépjen a következő helyre: Vázlat > Tartalmazza a könyvtárat > Könyvtárak kezelése.

Keressen rá PubSubClient és kattintson a könyvtárra a telepítéshez.

Miután az összes szükséges könyvtárat telepítette, megkezdheti az ESP-01 modul programozását. Egy dolgot azonban meg kell jegyezni, hogy használhatja a Wifi.h amely szerepel a könyvtárban, vagy töltse le a ESPWifi.h könyvtár és belefoglalja a vázlatába.

Kapcsolat létrehozása az ESP-01 és az MQTT Broker között

Az MQTT bróker egy olyan szerver, amely közvetítőként működik az MQTT kliensek között. Lehetővé teszi az ügyfelek számára, hogy üzeneteket küldjenek és fogadjanak egymásnak egy közzétételi-előfizetési modellen keresztül.

Az ESP-01 modul MQTT közvetítőhöz való csatlakoztatásához meg kell adnia a bróker IP-címét és portszámát a kódban. Ezenkívül meg kell adnia a közvetítőnek egy egyedi ügyfél-azonosítót, amely azonosítja az ESP-01 modult.

Először is a vázlat tetején helyezze el a szükséges könyvtárakat

#beleértve <ESP8266 WiFi.h>
#beleértve <PubSubClient.h>

Ezután határozza meg a WiFi és MQTT kapcsolat részleteit.

constchar* ssid = "YOUR_SSID";
constchar* jelszó = "A JELSZAVAD";
constchar* mqtt_server = "YOUR_MQTT_SERVER";

Ne felejtse el lecserélni a helyőrzőket saját WiFi és MQTT kapcsolati adataira.

Ezután hozzon létre egy WiFi klienst, és csatlakozzon a helyi WiFi hálózathoz:

WiFiClient espClient;
üressetup_wifi(){
késleltetés (10);
WiFi.begin (ssid, Jelszó);
míg (WiFi.status() != WL_CONNECTED) {
késleltetés (500);
}
}

Ezt a függvényt a beállít() a vázlat funkciója.

Ezután létre kell hoznia egy MQTT-ügyfelet, és csatlakoznia kell MQTT-brókeréhez:

PubSubClient ügyfél(espClient);
ürescsatlakozzon újra(){
míg (!client.connected()) {
ha (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Feliratkozás egy témára
client.subscribe("teszt/téma");
} más {
késés (5000);
}
}
}

Miután csatlakozott MQTT brókeréhez, megkezdheti a témák közzétételét és előfizetését.

Adatok közzététele az ESP-01-től az MQTT Broker felé

Most, hogy sikeresen csatlakoztatta az ESP01 modult az MQTT brókerhez, nézzük meg, hogyan tehet közzé adatokat az ESP-01-ről a bróker számára.

Az adatok közzétételéhez használja a client.publish() funkcióval üzenetet tesz közzé a inTopic téma.

client.publish("InTopic", "Üdvözlet az ESP-01-ből");

Ezzel közzéteszi a "Hello from ESP-01" üzenetet a inTopic téma.

Az ESP-01-ről származó érzékelőadatokat is közzéteheti a közvetítő számára. Például, ha hőmérséklet-érzékelője van csatlakoztatva az ESP-01-hez, közzéteheti a hőmérsékleti adatokat a közvetítőnek az alábbiak szerint.

úszó hőmérséklet = 25.5;
Húr thermoString = Húr(hőfok);
char hőmérséklet Char[5];
hőmérsékletString.toCharArray(hőmérsékletChar, 5);
client.publish("hőmérséklet", hőmérsékletChar);

Ez közzéteszi a hőmérsékleti adatokat a Temp téma.

Az adatokat ciklusban vagy rendszeres időközönként lehet közzétenni, a projekt követelményeitől függően. Győződjön meg arról, hogy nem árasztja el túl sok adattal a brókert, és ésszerű időközönként tesz közzé.

Előfizetés az MQTT témákra és adatok fogadása az ESP-01-en

Egy témára való feliratkozáshoz használja a client.subscribe() funkció. Az alábbi esetünkre az ügyfél előfizet a outTopic téma.

client.subscribe("outtopic");

Miután feliratkozott egy témára, a témában közzétett üzeneteket fogadhatja a client.loop() funkció a hurok() függvény az alábbi vázlaton:

üreshurok(){
ha (!ügyfél.csatlakoztatva()) {
reconnect();
}
ügyfél.hurok();
}

Ez folyamatosan ellenőrzi az új üzeneteket, és végrehajtja a visszahívási funkciót, ha új üzenet érkezik.

A beérkezett üzenetek kezeléséhez definiáljon egy visszahívási funkciót, mint az alábbiakban:

üresvisszahív(char* téma, byte* hasznos teher, aláíratlan int hossz){
// Nyomtassa ki a fogadott üzenetet
Sorozatszám.nyomtatás("Üzenet érkezett a témában: ");
Sorozatszám.nyomtatás(téma);
Sorozatszám.nyomtatás(". Üzenet: ");
számára (int i=0;énSorozatszám.nyomtatás((char)hasznos teher[én]);
}
Sorozatszám.println();
}

Ez a funkció akkor kerül meghívásra, ha új üzenet érkezik az előfizetett témában. A kapott üzenetet kinyomtatja a soros monitorra.

QoS (Quality of Service) szintek és biztonsági szolgáltatások használata

A kérések kezelésében használt egyik legfontosabb technika a QoS (Quality of Service) szintek használata az MQTT üzenetekhez. A QoS-szintek határozzák meg, hogy a közvetítő és az előfizetők hogyan kezeljék az üzeneteket. A QoS-nek három szintje van: 0, 1 és 2.

A 0-s QoS-szint a legkevésbé megbízható, mivel az üzeneteket csak egyszer küldik el, és nem garantáltan eljutnak az előfizetőhöz. Az 1. QoS-szint megbízhatóbb, mivel az üzeneteket legalább egyszer elküldik, és garantáltan legalább egyszer eljutnak az előfizetőhöz. A 2-es QoS-szint a legmegbízhatóbb, mivel az üzeneteket pontosan egyszer küldik el, és garantáltan pontosan egyszer jutnak el az előfizetőhöz. Az eszközök kommunikációja összhangban van a többivel a tárgyak internete (IoT) általános biztonsági problémái és javításai a tetején akar maradni.

A QoS-szintek használatához megadhatja a kívánt szintet, amikor üzeneteket tesz közzé a segítségével client.publish() funkció:

client.publish("téma", "Helló Világ!", 1);

Ezzel közzéteszi az üzenetet Helló Világ! hoz téma téma QoS szinttel 1.

Egy másik fejlett technika a használata Utolsó akarat és Testamentum (LWT) üzenetek. Az LWT üzenetek olyan üzenetek, amelyeket a közvetítő küld, amikor egy ügyfél váratlanul megszakad. Meggyőződésünk, hogy ez fontos az offline eszközök észleléséhez, vagy a műveletek elindításához, amikor egy eszköz lekapcsol.

Az LWT üzenetek használatához megadhatja az LWT üzenetet, amikor a közvetítőhöz csatlakozik a client.setWill() funkció:

client.setWill("állapot", "offline", 1, igaz);

Ezzel beállítja az LWT üzenetet offline módban a állapot témakör 1-es QoS-szinttel és a megtartási jelző beállítása igaz.

Készüljön fel a következő IoT-projektjére

Az ESP-01 modul megfizethető és kompakt megoldás az IoT-projektekhez, és az MQTT-vel való használatával projektje a következő szintre emelkedhet. Bár a kezdeti beállítás ijesztő lehet, az MQTT előnyei, mint például a könnyű kommunikáció és a magas skálázhatóság, megtérülő befektetéssé teszik.