Zařízení IoT dokážou skvělé věci, ale nezbytnou součástí rovnice je způsob komunikace. Můžete to zvládnout pomocí modulu ESP-01.
Mít rozpočet nutně neznamená, že se nemůžete pustit do pokročilých DIY projektů. Pokud hledáte malý, cenově dostupný a pohodlný WiFi modul pro rozšíření vašich IoT projektů, modul ESP-01 je skvělou volbou. Integrace takového modulu s odlehčeným protokolem, jako je MQTT, však může být ošemetná, zvláště pokud s vývojem IoT teprve začínáte.
Samotné programování desky ESP-01 může být náročné ve srovnání s jinými moduly řady ESP8266. Pojďme si ale projít základy veškerého nastavení hardwaru a softwaru, které potřebujete, abyste mohli začít používat modul, a také to, jak jednoduše a procedurálně nastavit MQTT.
Seznámení s představenstvem
ESP8266 ESP-01 je malý a kompaktní WiFi modul, který je dodáván s čipem ESP8266EX, což je vysoce integrovaný SoC určený pro aplikace IoT.
Modul obsahuje jednočipový bezdrátový mikrokontrolér se zásobníkem protokolů TCP/IP a je schopen se připojit k bezdrátové síti nebo fungovat jako přístupový bod. Modul ESP-01 také obsahuje 2x4 pin header, který poskytuje přístup k jeho GPIO pinům, napájení a uzemnění a rozhraní UART.
Nastavení hardwaru
Modul není vůbec přátelský k prkénku. Pro větší pohodlí si můžete koupit předpřipravenou prodlužovací desku nebo jít staromódním způsobem – pomocí propojovacích kabelů a prkénka.
K dispozici je vyhrazený programátor, deska sériového modulu ESP8266, která vám usnadní programování. Pokud dáváte přednost této cestě, DIYHOBI má praktický návod, jak flashovat program do modulu ESP-01 pomocí programátoru (včetně adaptéru převodního modulu USB na TTL CH340G).
Stále však můžete modul naprogramovat pomocí desky Arduino. Podívejte se na níže uvedené schéma zapojení.
I když to může vypadat lákavě, obecně nedoporučujeme připojovat modul přímo k 3,3V kolíku Arduina, protože vyžaduje více proudu, než poskytuje kolík. Místo toho připojte Arduino 5V k regulátoru napětí 3,3 V, jako je LM1117/LD117, poté napájejte modul WiFi z regulátoru.
Nepřipojujte VCC a CH_PD kolíky ESP k 5V pin Arduina. Připojení modulu k 5V moc ho může poškodit.
Všechny kondenzátory jsou 10uF a rezistor je a 1K odpor.
Softwarové požadavky
Modul ESP-01 se běžně používá s platformou Arduino. Nastavení softwaru je tedy velmi jednoduché, zvláště pokud znáte Arduino C. Pokud však znáte Raspberry blíže, existuje jich spousta Raspberry Pi IoT projekty si můžete vyzkoušet.
Toto jsou základní požadavky:
- Zprostředkovatel nebo server MQTT (například Mosquitto nebo CloudMQTT).
- Arduino IDE s knihovnou jádra ESP8266.
- Knihovna PubSubClient pro Arduino.
Musíte mít na paměti, že mít svůj vlastní server MQTT lokálně vám dává flexibilitu v rámci vašich projektů.
Instalace potřebných knihoven
Nejprve si stáhněte a nainstalujte Arduino IDE do počítače. Po instalaci otevřete Arduino IDE a přejděte na Soubor > Předvolby.
V Adresy URL správce dalších desek do pole zadejte následující adresu URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klikněte OK zavřete okno Předvolby.
Dále přejděte na Nástroje > Deska > Správce desek.
Pak hledejte esp8266 a nainstalujte balíček desky esp8266 – to zahrnuje všechny potřebné knihovny pro modul ESP-01.
Chcete-li nainstalovat knihovnu PubSubClient, přejděte na Skica > Zahrnout knihovnu > Správa knihoven.
Hledat PubSubClient a kliknutím na knihovnu ji nainstalujte.
Jakmile máte nainstalované všechny potřebné knihovny, můžete se pustit do programování modulu ESP-01. Jedna věc, kterou je třeba poznamenat, je, že můžete použít Wifi.h který je součástí knihovny, nebo si jej stáhněte ESPWifi.h knihovna a zahrňte jej do náčrtu.
Navázání spojení mezi ESP-01 a MQTT Broker
Broker MQTT je server, který funguje jako prostředník mezi klienty MQTT. Umožňuje klientům posílat a přijímat zprávy mezi sebou a od sebe prostřednictvím modelu publikování a odběru.
Chcete-li připojit svůj modul ESP-01 k brokerovi MQTT, budete muset ve svém kódu zadat IP adresu brokera a číslo portu. Budete také muset makléři poskytnout jedinečné ID klienta, které identifikuje váš modul ESP-01.
Nejprve zahrňte potřebné knihovny do horní části náčrtu
#zahrnout <ESP8266 WiFi.h>
#zahrnout <PubSubClient.h>
Dále definujte podrobnosti připojení WiFi a MQTT.
konstchar* ssid = "VAŠE_SSID";
konstchar* heslo = "VAŠE HESLO";
konstchar* mqtt_server = "VÁŠ_SERVER_MQTT";
Nezapomeňte nahradit zástupné symboly svými vlastními údaji o připojení WiFi a MQTT.
Poté vytvořte klienta WiFi a připojte se k místní síti WiFi:
WiFiClient espClient;
prázdnotanastavení_wifi(){
zpoždění (10);
WiFi.begin (ssid, Heslo);
zatímco (WiFi.status() != WL_CONNECTED) {
zpoždění (500);
}
}
Tato funkce by měla být volána v založit() funkce vašeho náčrtu.
Dále budete muset vytvořit klienta MQTT a připojit se ke svému brokerovi MQTT:
PubSubClient klienta(espClient);
prázdnotaznovu připojit(){
zatímco (!client.connected()) {
-li (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Přihlásit se k odběru tématu
client.subscribe("test/téma");
} jiný {
zpoždění (5000);
}
}
}
Jakmile se připojíte ke svému brokerovi MQTT, můžete začít publikovat a odebírat témata.
Publikování dat z ESP-01 do MQTT Broker
Nyní, když jste úspěšně připojili svůj modul ESP01 k brokerovi MQTT, pojďme se podívat, jak můžete publikovat data z ESP-01 brokerovi.
Chcete-li publikovat data, použijte client.publish() funkce pro zveřejnění zprávy na v tématu téma.
client.publish("inTopic", "Ahoj z ESP-01");
Tím se publikuje zpráva „Ahoj z ESP-01“. v tématu téma.
Data senzoru z ESP-01 můžete také publikovat brokerovi. Pokud máte například k ESP-01 připojený teplotní senzor, můžete údaje o teplotě publikovat brokerovi, jak je znázorněno níže.
plovák teplota = 25.5;
Tětiva teplotaString = Tětiva(teplota);
char teplotaChar[5];
teplotní řetězec.toCharArray(teplotaChar, 5);
client.publish("teplota", teplotaChar);
Tím se údaje o teplotě zveřejní Temp téma.
Data lze publikovat ve smyčce nebo v pravidelných intervalech v závislosti na požadavcích vašeho projektu. Ujistěte se, že brokera nezahlcujete příliš velkým množstvím dat a že publikujete v rozumném intervalu.
Přihlášení k odběru témat MQTT a příjem dat na ESP-01
Chcete-li se přihlásit k odběru tématu, použijte client.subscribe() funkce. V našem případě níže se klient přihlásí k odběru outTopic téma.
client.subscribe("outTopic");
Jakmile se přihlásíte k odběru tématu, můžete přijímat zprávy publikované na toto téma pomocí client.loop() funkce v smyčka() funkce na náčrtu níže:
prázdnotasmyčka(){
-li (!klienta.připojeno()) {
znovu připojit ();
}
klienta.smyčka();
}
To bude průběžně kontrolovat nové zprávy a provádět funkci zpětného volání, když je přijata nová zpráva.
Pro zpracování přijatých zpráv definujte funkci zpětného volání, jako je ta, která je zobrazena níže:
prázdnotazpětné volání(char* téma, byte* užitečné zatížení, nepodepsané int délka){
// Tisk přijaté zprávy
Seriál.tisk("Přijata zpráva na téma: ");
Seriál.tisk(téma);
Seriál.tisk(". Zpráva: ");
pro (int i=0;iSeriál.tisk((char)užitečné zatížení[i]);
}
Seriál.println();
}
Tato funkce bude vyvolána při přijetí nové zprávy na přihlášené téma. Vytiskne přijatou zprávu na Serial Monitor.
Používání úrovní QoS (Quality of Service) a funkcí zabezpečení
Jednou z nejdůležitějších technik používaných při zpracování požadavků je použití úrovní QoS (Quality of Service) pro vaše zprávy MQTT. Úrovně QoS definují, jak by zprostředkovatel a předplatitelé měli zacházet s vašimi zprávami. Existují tři úrovně QoS: 0, 1 a 2.
Úroveň QoS 0 je nejméně spolehlivá, protože zprávy jsou odesílány pouze jednou a není zaručeno, že budou doručeny předplatiteli. Úroveň QoS 1 je spolehlivější, protože zprávy jsou odeslány alespoň jednou a je zaručeno, že budou doručeny předplatiteli alespoň jednou. Úroveň QoS 2 je nejspolehlivější, protože zprávy jsou odeslány přesně jednou a je zaručeno, že budou doručeny předplatiteli přesně jednou. Způsob, jakým vaše zařízení komunikují, je v souladu s ostatními běžné problémy se zabezpečením internetu věcí (IoT) a opravy chcete zůstat na vrcholu.
Chcete-li použít úrovně QoS, můžete zadat požadovanou úroveň při publikování zpráv pomocí client.publish() funkce:
client.publish("téma", "Ahoj světe!", 1);
Tím zprávu publikujete Ahoj světe! k téma téma s úrovní QoS 1.
Další pokročilou technikou je použití Poslední vůle a testament (LWT) zprávy. Zprávy LWT jsou zprávy, které zprostředkovatel odesílá, když se klient neočekávaně odpojí. Věříme, že je to důležité pro detekci offline zařízení nebo pro spouštění akcí, když se zařízení odpojí.
Chcete-li používat zprávy LWT, můžete určit zprávu LWT při připojení k brokerovi pomocí client.setWill() funkce:
client.setWill("postavení", "offline", 1, skutečný);
Tím nastavíte zprávu LWT na offline na postavení téma s úrovní QoS 1 a příznakem zachování nastaveným na skutečný.
Připravte se na svůj další projekt IoT
Modul ESP-01 je cenově dostupné a kompaktní řešení pro projekty IoT a jeho použití s MQTT může posunout váš projekt na další úroveň. Přestože počáteční nastavení může být skličující, výhody MQTT, jako je nenáročná komunikace a vysoká škálovatelnost, z něj činí investici, která se vyplatí.