Obsah:

IBM Watson s ESP32 jako koncovým bodem: 11 kroků
IBM Watson s ESP32 jako koncovým bodem: 11 kroků

Video: IBM Watson s ESP32 jako koncovým bodem: 11 kroků

Video: IBM Watson s ESP32 jako koncovým bodem: 11 kroků
Video: How to connect ESP32 with IBM Watson Cloud Platform 2024, Červenec
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Dnes zde zveřejňuji první video ze série o tom, jak připojit zařízení Endpoint pomocí ESP32 a poté jej odeslat do cloudové služby. V této konkrétní epizodě vám ukážu, jak odesílat informace ze snímače DHT22 pomocí protokolu MQTT pro IBM Watson.

Nejprve představíme MQTT, což je protokol stroj-stroj používaný v IoT (Internet of Things). Pomocí tohoto protokolu také odešleme data ze snímače teploty a vlhkosti a poté zkontrolujeme graf s těmito údaji na webové stránce.

Krok 1: ESP32 Pinout

Umístil jsem sem Pinout ESP32, který používáme v našem příkladu. Chci však objasnit, že projekt funguje také s ESP8266, a dokonce se stejným zdrojovým kódem.

Krok 2: Pinout NodeMCU

Pinout NodeMCU
Pinout NodeMCU

Krok 3: MQTT

MQTT
MQTT

MQTT je protokol stroj-stroj používaný v IoT. Byl navržen tak, aby byl lehký a rychlý. Používá systém odběru/publikování, kde se zařízení „přihlásí“k tématu s konkrétními informacemi, které vás zajímají, a poté obdrží informace, kdykoli zařízení zveřejní data týkající se tohoto tématu.

Stejně jako serverový program, MQTT potřebuje software. Tomu se říká makléř. V tomto konkrétním případě použijeme službu Bluemix IoT společnosti IBM. Tato služba je pro testování koncových bodů zdarma.

Dále potřebujeme mít mobilní telefon nebo tablet na straně aplikace, tj. Jako klient MQTT. Máme také stranu zařízení, což je strana ESP s teploměrem. To odešle data o teplotě a vlhkosti do Bluemix, který pak odešle tyto informace na stranu aplikace.

Krok 4: Sestavení

Shromáždění
Shromáždění

Náš obvod se skládá z odporu 4,7 kOhm mezi 3,3 V a datovým pinem a DHT22 připojeného k GPIO4 ESP32 nebo NodeMCU. Toto je tedy náš koncový bod.

Krok 5: Diagram

Diagram
Diagram
Diagram
Diagram

Ukazuji zde několik způsobů práce s lokálním makléřem MQTT. Umístil jsem dva diagramové modely. Ve videu mluvím o situaci, kdy se například pomocí Raspberry Pi otevírá brána.

Na obrázku výše máme první architekturu, která používá lokální Broker s trvalostí, a druhou architekturu níže, která komunikuje pouze s brokerem v cloudu.

Jak ukazuje diagram, náš senzor poté odešle údaje o teplotě a vlhkosti do IBM Watson. Je důležité zdůraznit, že IBM Watson v tomto případě nepíše data, protože se zobrazují pouze v grafech. Důvodem je, že v dnešním příkladu nebudeme řešit žádné databázové operace, ale pouze indikujeme přístup na stránku Quickstart (https://quickstart.internetofthings.ibmcloud.com/), která zobrazí stav koncového bodu. Schéma je jednoduché a k odesílání dat využívá WiFi.

Krok 6: Knihovny

V Arduino IDE přejděte do nabídky Sketch -> Include Library -> Manage Libraries…

Na obrazovce, která se otevře, zadejte do vyhledávání „DHT“a nainstalujte lib „Knihovna snímačů DHT“

Poté zadejte „PubSubClient“a nainstalujte lib „PubSubClient“.

Krok 7: Knihovna pro čtení teploty a vlhkosti

Knihovna pro čtení teploty a vlhkosti
Knihovna pro čtení teploty a vlhkosti

Krok 8: Knihovna MQTT

Knihovna MQTT
Knihovna MQTT

Krok 9: MQTT.ino

Zdrojový kód spustíme kontrolou, který ESP se používá, a importem odpovídající knihovny a WiFi. Stále zahrnujeme MQTT Libs a snímač teploty a vlhkosti.

// Kvalitní ověřování ESP odesílání // // import a sdílení wifi korespondence #pokud je definováno (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Dále definujeme následující: interval mezi odesláním dat, server MQTT, který bude použit, tiskové informace v grafu a ID. Také jsme poukázali na to, jak by měl být řetězec QUICK_START.

// Interval 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 "quickst.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // 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ý řádek s konstantním řetězcem QUICK_START = "d: quickstart: arduino:";

V tomto kroku definujeme jedinečné ID. V tomto případě používáme MAC adresu zařízení, které používáme. To bude sloužit jako identifikace na webu QuickStart. Zde také propojíme Quickstart ID s ID našeho zařízení.

// Žádná DEVICE_ID nevytváří více parametrů // Účetní název // MAC adresa // Adresa URL // nevyužívá žádné možnosti // Servirá como identificação no site //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;

Poté nakonfigurujeme MQTT a WiFi, stejně jako objekty a proměnné související s hodnotami teploty a vlhkosti.

// Klienti WiFi que o MQTT využívají hlavně conectarWiFiClient 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 - nastavení

V nastavení inicializujeme DHT a připojíme se k síti WiFi a serveru MQTT.

neplatné nastavení () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }

MQTT.ino - smyčka

Ve smyčce shromažďujeme data ze senzorů, abychom vytvořili JSON, který bude publikován v tématu, které IBM Watson očekává ke generování grafu.

void loop () {// Tempos 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; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Publikovat zprávu:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (zpráva); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - nastavení Wi -Fi

Zde máme funkci zodpovědnou za připojení k síti WiFi.

// Odpovědnost na připojení k WiFivoid setupWiFi () {Serial.println (); Serial.print („Připojování 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 a rede seja establishmentelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println („WiFi připojeno“); }

MQTT.ino - connectMQTTServer

V tomto kroku používáme funkci zodpovědnou za připojení k serveru MQTT.

// Odpovědnost na připojení k serveru MQTTvoid connectMQTTServer () {Serial.println ("Připojování k serveru MQTT …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

V této funkci je definováno čtení údajů o teplotě a vlhkosti.

// Odpovídající funkce nebo lekce // Teplota a umdade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (hodnota)) {// 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

Zde máme funkci zodpovědnou za vytvoření JSON s načtenými daty.

// Odpovědná funkce // // Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" teplota / ":"; data+= řetězec (teplota); data+= ","; data+= "\" vlhkost / ":"; data+= řetězec (vlhkost); data+= "}"; data+= "}"; vrátit data; }

Krok 10: Grafika

Grafický
Grafický
Grafický
Grafický

Chcete -li zobrazit graf senzorů, přejděte na

na

Do pole ID zařízení zadejte DEVICE_ID, které jste definovali v kódu.

- Je důležité změnit toto ID zařízení na jedinečné ID, které slouží pouze k zamezení konfliktu s daty odeslanými jinou osobou.

Nakonec přijměte podmínky a klikněte na Přejít.

V tomto projektu jsme testovali náš koncový bod na serveru IBM Watson. Tím je zajištěno, že náš program Arduino správně komunikuje s platformou a že data, která posíláme, budou hladce přijímána cloudovou službou, pokud si vytvoříme účet.

V připravovaném videu z této série vám ukážu, jak se přihlásit k IBM Watson a také zapisovat mimo jiné do databanky této nebo jiné cloudové služby, jako je Google, Amazon.

Krok 11: Soubory

Stáhnout soubory:

PDF

INO

Doporučuje: