Obsah:

IBM Watson s koncovým bodom ESP32: 11 krokov
IBM Watson s koncovým bodom ESP32: 11 krokov

Video: IBM Watson s koncovým bodom ESP32: 11 krokov

Video: IBM Watson s koncovým bodom ESP32: 11 krokov
Video: CLOUD — Synology 2022 AND BEYOND 2024, Júl
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Dnes tu uverejňujem prvé video zo série o tom, ako pripojiť zariadenie Endpoint k systému ESP32 a potom ho odoslať do cloudovej služby. V tejto konkrétnej epizóde vám ukážem, ako odosielať informácie zo senzora DHT22 pomocou protokolu MQTT pre IBM Watson.

Najprv predstavíme MQTT, čo je protokol stroj-stroj používaný v IoT (internet vecí). Pomocou tohto protokolu tiež odošleme údaje zo snímača teploty a vlhkosti a potom skontrolujeme graf s týmito údajmi na webovej stránke.

Krok 1: Pinout ESP32

Tu som umiestnil Pinout ESP32, ktorý používame v našom príklade. Chcem však objasniť, že projekt funguje aj s ESP8266, a dokonca s rovnakým zdrojovým kódom.

Krok 2: Pinout NodeMCU

Pinout NodeMCU
Pinout NodeMCU

Krok 3: MQTT

MQTT
MQTT

MQTT je protokol stroj-stroj používaný v IoT. Bol navrhnutý tak, aby bol ľahký a rýchly. Využíva systém predplatného/publikovania, kde sa zariadenie „prihlási“na odber témy s konkrétnymi informáciami, ktoré vás zaujímajú, a potom dostane informácie vždy, keď zariadenie zverejní údaje týkajúce sa tejto témy.

Rovnako ako serverový program, MQTT potrebuje softvér. Tomu sa hovorí maklér. V tomto konkrétnom prípade použijeme službu IoT Bluemix spoločnosti IBM. Táto služba je bezplatná na testovanie koncových bodov.

Ďalej musíme mať mobilný telefón alebo tablet so stranou Aplikácie, to znamená ako klienta MQTT. Máme tiež stranu zariadenia, ktorá je stranou ESP s teplomerom. To odošle údaje o teplote a vlhkosti do zariadenia Bluemix, ktoré potom tieto informácie odošle na stranu aplikácií.

Krok 4: Zostavenie

zhromaždenie
zhromaždenie

Náš obvod pozostáva z rezistora 4,7 kOhm medzi 3,3 V a dátovým pinom a DHT22 pripojeného k GPIO4 ESP32 alebo NodeMCU. Toto je teda náš koncový bod.

Krok 5: Diagram

Diagram
Diagram
Diagram
Diagram

Ukazujem tu niekoľko spôsobov práce s miestnym maklérom MQTT. Umiestnil som dva diagramové modely. Vo videu hovorím o situácii, keď sa napríklad pomocou Raspberry Pi otvorí brána.

Na obrázku vyššie máme prvú architektúru, ktorá perzistentne používa lokálneho makléra, a druhú architektúru nižšie, ktorá komunikuje iba s maklérom v cloude.

Ako je znázornené na obrázku, náš snímač potom odošle údaje o teplote a vlhkosti do IBM Watson. Je dôležité zdôrazniť, že IBM Watson v tomto prípade nepíše údaje, pretože sa zobrazujú iba v grafoch. Dôvodom je, že v dnešnom príklade sa nebudeme zaoberať žiadnymi databázovými operáciami, ale iba naznačíme prístup na stránku Quickstart (https://quickstart.internetofthings.ibmcloud.com/), ktorá zobrazí stav koncového bodu. Schéma je jednoduchá a na odosielanie údajov používa WiFi.

Krok 6: Knižnice

V Arduino IDE prejdite do ponuky Skica -> Zahrnúť knižnicu -> Spravovať knižnice …

Na obrazovke, ktorá sa otvorí, zadajte do vyhľadávania „DHT“a nainštalujte lib „Knižnica senzorov DHT“

Potom zadajte „PubSubClient“a nainštalujte lib „PubSubClient“.

Krok 7: Knižnica na čítanie teploty a vlhkosti

Knižnica na čítanie teploty a vlhkosti
Knižnica na čítanie teploty a vlhkosti

Krok 8: Knižnica MQTT

Knižnica MQTT
Knižnica MQTT

Krok 9: MQTT.ino

Zdrojový kód spustíme tak, že skontrolujeme, ktorý ESP sa používa, a importujeme zodpovedajúcu knižnicu a WiFi. Stále zahrnujeme MQTT Libs a snímač teploty a vlhkosti.

// Kvalitné overenie ESP odoslaním // // import a wifi korešpondencia #ak je definovaný (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Ďalej definujeme nasledujúce: interval medzi odoslaním údajov, server MQTT, ktorý sa použije, tlačové informácie v grafe a ID. Tiež sme poukázali na to, ako by mal byť reťazec QUICK_START.

// Interve entre os envios #define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_SERVER ".messaging.internetofthings.ibmcloud.com "// Niektoré typy súborov pre vývojárov // para que eles apareçam nos gráficos #define TOPIC_NAME" iot-2/evt/status/fmt/json "// ID que usaremos para conectar // QUICK_START vývojový radový reťazec QUICK_START = "d: quickstart: arduino:";

V tomto kroku definujeme jedinečné ID. V tomto prípade používame MAC adresu zariadenia, ktoré používame. Toto bude slúžiť ako identifikácia na webe QuickStart. Tu tiež spájame ID rýchleho štartu s ID nášho zariadenia.

// Žiadne zariadenie DEVICE_ID nemá žiadny identifikátor // Územie // Využitie MAC adresy // Adresa zariadenia // Dopredu nevyužíva žiadne stránky //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Potom nakonfigurujeme MQTT a WiFi, ako aj objekty a premenné súvisiace s hodnotami teploty a vlhkosti.

// Klienti, ktorí majú WiFi, alebo používajú MQTT, používajú sa ako konektoryWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, a porta // e o cliente WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperature = 0; // Variável para guardarmos o valor da umidade float vlhkost = 0;

MQTT.ino - nastavenie

V nastavení inicializujeme DHT a pripojíme sa k sieti WiFi a serveru MQTT.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }

MQTT.ino - slučka

V slučke zhromažďujeme údaje zo senzorov, aby sme vytvorili JSON, ktorý bude publikovaný v téme, ktorú IBM Watson očakáva, že vygeneruje graf.

void loop () {// Tempo agora em milisegundos long now = millis (); // Se o tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; // Fazémy a leitura da temperatura e umidade readSensor (); Serial.print ("Publikovať správu:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - nastavenieWiFi

Tu máme funkciu zodpovednú za pripojenie k sieti WiFi.

// Funkcie odpovedajúce na pripojenie WiFivoid setupWiFi () {Serial.println (); Serial.print („Pripojenie k“); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, PASSWORD); // Espera até que a conexão com and rede seja establishmentelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi pripojené"); }

MQTT.ino - connectMQTTServer

V tomto kroku používame funkciu zodpovednú za pripojenie k serveru MQTT.

// Funkcie odpovedajúce na server a MQT Vyhnite sa connectMQTTServer () {Serial.println ("Pripojenie k serveru MQTT …"); // Pozrite sa na ďalšie definície if (client.connect (CLIENT_ID.c_str ()))) {// Pozrite sa na ďalšie informácie o Serced.println ("pripojené"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

V tejto funkcii je definované čítanie údajov o teplote a vlhkosti.

// Funkcie zodpovedajúce mnohým lektúram // Teplota a umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura teplota = hodnota; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade vlhkost = hodnota; }}

MQTT.ino - createJsonString

Tu máme funkciu zodpovednú za vytvorenie JSON s načítanými údajmi.

// Funkcie odpovedajúce // // Json com dados lidos String createJsonString () {String data = "{"; údaje+= "\" d / ": {"; údaje+= "\" teplota / ":"; údaje+= Reťazec (teplota); údaje+= ","; údaje+= "\" vlhkosť / ":"; údaje+= Reťazec (vlhkosť); údaje+= "}"; údaje+= "}"; vrátiť údaje; }

Krok 10: Grafika

Grafický
Grafický
Grafický
Grafický

Ak si chcete pozrieť graf senzora, choďte

na

Do poľa ID zariadenia zadajte DEVICE_ID, ktoré ste definovali v kóde.

- Je dôležité zmeniť toto ID zariadenia na jedinečný identifikátor, ktorý sa používa iba na zabránenie konfliktu s údajmi odoslanými inou osobou.

Nakoniec prijmite podmienky a kliknite na položku Prejsť.

V tomto projekte sme testovali náš koncový bod na serveri IBM Watson. To zaisťuje, že náš program Arduino správne komunikuje s platformou a že údaje, ktoré odosielame, budú hladko prijaté cloudovou službou, ak si vytvoríme účet.

V pripravovanom videu z tejto série vám ukážem, ako sa prihlásiť do IBM Watson, a okrem iného zapisovať do databanky tejto alebo inej cloudovej služby, ako je Google, Amazon.

Krok 11: Súbory

Stiahnite si súbory:

PDF

INO

Odporúča: