Tartalomjegyzék:

IBM Watson ESP32 végponttal: 11 lépés
IBM Watson ESP32 végponttal: 11 lépés

Videó: IBM Watson ESP32 végponttal: 11 lépés

Videó: IBM Watson ESP32 végponttal: 11 lépés
Videó: IoT Project - Sending Sensor Readings from ESP32 to IBM Cloud/Watson 2024, November
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Ma közzéteszem itt az első videót egy sorozatról, amely arról szól, hogyan lehet Endpoint eszközt ESP32 -vel felszerelni, majd elküldeni egy felhőszolgáltatáshoz. Ebben a konkrét epizódban megmutatom, hogyan lehet információt küldeni egy DHT22 érzékelőből az IBM Watson MQTT protokolljával.

Először bemutatjuk az MQTT-t, amely gépek közötti protokoll, amelyet az IoT (Internet of Things) használ. A protokoll használatával adatokat küldünk a hőmérséklet- és páratartalom -érzékelőről is, majd ellenőrizzük a grafikont ezen adatokkal egy weboldalon.

1. lépés: ESP32 Pinout

Itt helyeztem el az ESP32 Pinout -ját, amelyet példánkban használunk. Szeretném azonban világossá tenni, hogy a projekt ESP8266 -al is működik, és még ugyanazzal a forráskóddal is.

2. lépés: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

3. lépés: MQTT

MQTT
MQTT

Az MQTT egy gépek közötti protokoll, amelyet az IoT-ban használnak. Úgy tervezték, hogy könnyű és gyors legyen. Feliratkozási/közzétételi rendszert használ, ahol egy eszköz "feliratkozik" egy témára az Ön számára érdekes információkkal, majd megkapja az információkat, amikor egy eszköz közzéteszi a témával kapcsolatos adatokat.

A szerverprogramokhoz hasonlóan az MQTT szoftverre is szüksége van. Ezt Brókernek hívják. Ebben a konkrét esetben az IBM Bluemix IoT szolgáltatását fogjuk használni. Ez a szolgáltatás ingyenes a végpont teszteléséhez.

Ezután rendelkeznünk kell egy mobiltelefonnal vagy táblagéppel az Alkalmazás oldallal, azaz MQTT ügyfélként. Rendelkezünk a készülék oldallal is, amely az ESP oldala, hőmérővel. Ez elküldi a hőmérséklet- és páratartalom -adatokat a Bluemix -hez, amely ezt követően elküldi ezeket az információkat az alkalmazásoldalra.

4. lépés: Összeszerelés

Összeszerelés
Összeszerelés

Az áramkörünk egy 4,7 k ohmos ellenállásból áll a 3,3 V és az adatcsap között, valamint egy DHT22 -ből, amely egy ESP32 vagy NodeMCU GPIO4 -hez van csatlakoztatva. Így ez a végpontunk.

5. lépés: Diagram

Diagram
Diagram
Diagram
Diagram

Itt bemutatom az MQTT Local Brokerrel való együttműködés számos módját. Két diagrammodellt helyeztem el. A videóban egy olyan helyzetről beszélek, amelyen például egy Raspberry Pi -t használnak a kapu megnyitásához.

A fenti képen megvan az első architektúra, amely kitartóan használ helyi bróker, és egy második architektúra, amely csak a felhőben kommunikál a közvetítővel.

Az ábrán látható módon érzékelőnk elküldi a hőmérséklet és páratartalom adatait az IBM Watson -nak. Fontos hangsúlyozni, hogy az IBM Watson ebben az esetben nem írja az adatokat, mivel csak grafikonokon jelennek meg. Ennek az az oka, hogy a mai példában nem foglalkozunk semmilyen adatbázis -művelettel, hanem csak a gyorsindító oldalhoz (https://quickstart.internetofthings.ibmcloud.com/) való hozzáférést jelezzük, amely megjeleníti a végpont állapotát. A rendszer egyszerű, és WiFi -t használ az adatok küldéséhez.

6. lépés: Könyvtárak

Az Arduino IDE -ben lépjen a Vázlat menübe -> Könyvtár bevonása -> Könyvtárak kezelése…

A megnyíló képernyőn írja be a "DHT" keresést, és telepítse a "DHT szenzortár" kifejezést.

Ezután írja be a "PubSubClient" parancsot, és telepítse a "PubSubClient" lib.

7. lépés: Hőmérséklet és páratartalom olvasókönyvtár

Hőmérséklet és páratartalom olvasókönyvtár
Hőmérséklet és páratartalom olvasókönyvtár

8. lépés: MQTT könyvtár

MQTT könyvtár
MQTT könyvtár

9. lépés: MQTT.ino

A forráskódot azzal kezdjük, hogy ellenőrizzük, melyik ESP -t használjuk, és importáljuk a megfelelő könyvtárat és WiFi -t. Továbbra is tartalmazza az MQTT Libeket és a hőmérséklet- és páratartalom -érzékelőt.

// Verifica quality ESP está sendo utilizado // e importa a lib e wifi levelező #if meghatározott (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de Temperature e umidade #include

Ezután a következőket határozzuk meg: az adatküldések közötti időköz, a használni kívánt MQTT -kiszolgáló, a diagram nyomtatási információi és az azonosító. Arra is felhívtuk a figyelmet, hogy milyen legyen a QUICK_START karakterlánc.

// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Szerver MQTT que iremos utlizar #define MQTT_SERVER ".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 deve permanecer como está const String QUICK_START = "d: quickstart: arduino:";

Ebben a lépésben egyedi azonosítót definiálunk. Ebben a példában a használt eszköz MAC -címét használjuk. Ez azonosításként szolgál a QuickStart webhelyen. Itt is összekapcsoljuk a gyorsindító azonosítót a készülékünk azonosítójával.

// No DEVICE_ID você deve mudar para um id único // Aqui nesse examplelo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como identifaçã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;

Ezután konfiguráljuk az MQTT -t és a WiFi -t, valamint a hőmérséklet és páratartalom értékeivel kapcsolatos objektumokat és változókat.

// Cliente WiFi que o MQTT ira utilizar para se conectarWiFiClient wifiClient; // Client MQTT, passamos url do server, porta // e vagy kliens WiFi PubSubClient kliens (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 páratartalom = 0;

MQTT.ino - beállítás

A beállításban inicializáljuk a DHT -t, és csatlakozunk a WiFi hálózathoz és az MQTT szerverhez.

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

MQTT.ino - hurok

A ciklusban összegyűjtjük az érzékelő adatait, hogy létrehozzuk azt a Json -t, amely az IBM Watson által a grafikon előállítására váró témakörben jelenik meg.

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 ("Üzenet közzététele:"); // 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 - Wi -Fi beállítása

Itt a WiFi hálózathoz való csatlakozásért felelős funkcióval rendelkezünk.

// Função responseavel por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Csatlakozás"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, JELSZÓ); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Soros.nyomtatás ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi csatlakoztatva"); }

MQTT.ino - connectMQTTServer

Ebben a lépésben az MQTT szerverhez való csatlakozásért felelős funkciót használjuk.

// Função responseavel by conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Csatlakozás az MQTT szerverhez …"); // 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

Ez a funkció határozza meg a hőmérséklet és páratartalom adatait.

// Função responsável por realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (érték)) {// Armazena o novo valor da temperatura hőmérséklet = érték; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade páratartalom = érték; }}

MQTT.ino - createJsonString

Itt a funkció felelős a Json létrehozásáért az olvasott adatokkal.

// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; adatok+= "\" d / ": {"; adatok+= "\" hőmérséklet / ":"; adatok+= String (hőmérséklet); adatok+= ","; adatok+= "\" páratartalom / ":"; adatok+= String (páratartalom); adatok+= "}"; adatok+= "}"; adatok visszaadása; }

10. lépés: Grafikus

Grafikus
Grafikus
Grafikus
Grafikus

Az érzékelő grafikonjának megtekintéséhez lépjen

a https://quickstart.internetofthings.ibmcloud.com címre

Az Eszközazonosító mezőbe írja be a kódban megadott DEVICE_ID azonosítót.

- Fontos, hogy ezt az eszközazonosítót egyedi azonosítóra változtassa, amelyet csak azért használnak, hogy elkerüljék a más személy által küldött adatokkal való ütközést.

Végül fogadja el a feltételeket, majd kattintson az Ugrás gombra.

Ebben a projektben teszteltük a végpontunkat az IBM Watson szerveren. Ez biztosítja, hogy Arduino programunk megfelelően kommunikáljon a platformmal, és hogy az általunk küldött adatokat zökkenőmentesen fogadja a felhőszolgáltatás, ha fiókot hozunk létre.

A sorozat egy soron következő videójában megmutatom, hogyan kell bejelentkezni az IBM Watson -ba, valamint írni kell ennek vagy egy másik felhőszolgáltatásnak, például a Google -nak, az Amazonnak az adatbankjába.

11. lépés: Fájlok

Töltse le a fájlokat:

PDF

ÉN NEM

Ajánlott: