Kazalo:

IBM Watson z ESP32 kot končno točko: 11 korakov
IBM Watson z ESP32 kot končno točko: 11 korakov

Video: IBM Watson z ESP32 kot končno točko: 11 korakov

Video: IBM Watson z ESP32 kot končno točko: 11 korakov
Video: How to connect ESP32 with IBM Watson Cloud Platform 2024, November
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Danes objavljam prvi video posnetek o tem, kako namestiti napravo Endpoint z ESP32 in jo nato poslati v storitev v oblaku. V tej posebni epizodi vam bom pokazal, kako pošiljate informacije s senzorja DHT22 z uporabo protokola MQTT za IBM Watson.

Najprej bomo predstavili MQTT, protokol med stroji, ki se uporablja v IoT (Internet of Things). S tem protokolom bomo poslali tudi podatke senzorja temperature in vlažnosti, nato pa grafikon s temi podatki preverimo na spletni strani.

Korak 1: ESP32 Pinout

Tu sem postavil Pinout ESP32, ki ga uporabljamo v našem primeru. Vendar pa želim jasno povedati, da projekt deluje tudi z ESP8266 in celo z isto izvorno kodo.

Korak: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Korak: MQTT

MQTT
MQTT

MQTT je protokol med stroji, ki se uporablja v IoT. Zasnovan je bil lahek in hiter. Uporablja sistem za naročanje/objavo, kjer se naprava "naroči" na temo s posebnimi informacijami, ki vas zanimajo, nato pa informacije prejme vsakič, ko naprava objavi podatke o tej temi.

Tako kot strežniški program tudi MQTT potrebuje programsko opremo. Temu se reče posrednik. V tem posebnem primeru bomo uporabili IBM -ovo storitev Bluemix IoT. Ta storitev je brezplačna za testiranje končnih točk.

Nato moramo imeti mobilni telefon ali tablični računalnik s strani aplikacije, torej kot odjemalca MQTT. Imamo tudi stran naprave, to je stran ESP s termometrom. S tem se podatki o temperaturi in vlažnosti pošljejo v Bluemix, ki te podatke nato pošlje na stran aplikacije.

4. korak: Montaža

Montaža
Montaža

Naše vezje je sestavljeno iz upora 4,7 k Ohmov med 3,3 V in podatkovnim zatičem ter DHT22, priključenega na GPIO4 ESP32 ali NodeMCU. To je torej naša končna točka.

5. korak: diagram

Diagram
Diagram
Diagram
Diagram

Tukaj prikazujem več načinov sodelovanja z lokalnim posrednikom MQTT. Postavil sem dva modela diagramov. V videu govorim o situaciji, na primer z uporabo Raspberry Pi za odpiranje vrat.

Na zgornji sliki imamo prvo arhitekturo, ki vztrajno uporablja lokalnega posrednika, in drugo arhitekturo spodaj, ki komunicira samo s posrednikom v oblaku.

Kot je prikazano na diagramu, naš senzor nato pošlje podatke o temperaturi in vlažnosti v IBM Watson. Pomembno je poudariti, da IBM Watson v tem primeru ne zapisuje podatkov, saj so prikazani le v grafih. To je zato, ker v današnjem primeru ne bomo obravnavali nobenih operacij baze podatkov, ampak samo navedimo dostop do strani Quickstart (https://quickstart.internetofthings.ibmcloud.com/), ki bo prikazala stanje končne točke. Shema je preprosta in uporablja WiFi za pošiljanje podatkov.

6. korak: Knjižnice

V Arduino IDE pojdite v meni Sketch -> Include Library -> Manage Libraries …

Na zaslonu, ki se odpre, vnesite iskanje "DHT" in namestite lib "DHT sensor library"

Nato vnesite "PubSubClient" in namestite lib "PubSubClient".

7. korak: Knjižnica za branje temperature in vlažnosti

Knjižnica za branje temperature in vlažnosti
Knjižnica za branje temperature in vlažnosti

8. korak: Knjižnica MQTT

Knjižnica MQTT
Knjižnica MQTT

9. korak: MQTT.ino

Izvorno kodo zaženemo tako, da preverimo, kateri ESP se uporablja, in uvozimo ustrezno knjižnico in WiFi. Še vedno vključujemo MQTT Libs ter senzor temperature in vlažnosti.

// Preverjanje kakovosti ESP za pošiljanje uporabe // e uvoz in lib e wifi korespondenca #če je definirano (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperature e umidade #include

Nato določimo naslednje: interval med oddajo podatkov, strežnik MQTT, ki bo uporabljen, informacije o tiskanju na grafikonu in ID. Opozorili smo tudi, kako naj bo niz QUICK_START.

// Intervalo entre os envios #define INTERVAL 1000 // Nadomestni pelo SSID za sua rede #define SSID "TesteESP" // Zamenjava pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_SERVER "quickstart.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 razvijalci stalnega sodelovanja z nizom QUICK_START = "d: quickstart: arduino:";

V tem koraku določimo edinstven ID. V tem primeru uporabljamo naslov MAC naprave, ki jo uporabljamo. To bo služilo kot identifikacija na spletnem mestu QuickStart. Tu povežemo tudi Quickstart ID z ID -jem naše naprave.

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

Nato konfiguriramo MQTT in WiFi ter predmete in spremenljivke, povezane z vrednostmi temperature in vlažnosti.

// Odjemalec WiFi za uporabo MQTT uporablja za parametre conectarWiFiClient wifiClient; // Odjemalec MQTT, prehod na strežnik url do, porta // e o stranko odjemalca WiFi PubSubClient (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realization a leitura da temperature e to umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura plavajoča temperatura = 0; // Variável para guardarmos o valor da umidade plavajoča vlažnost = 0;

MQTT.ino - nastavitev

V nastavitvah bomo inicializirali DHT in se povezali v omrežje WiFi in strežnik MQTT.

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

MQTT.ino - zanka

V zanki zbiramo podatke senzorjev, da ustvarimo Json, ki bo objavljen v temi, za katero IBM Watson pričakuje, da bo ustvaril graf.

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 temperature e umidade readSensor (); Serial.print ("Objavi sporočilo:"); // Criamos o json que enviaremos za strežnik mqtt String msg = createJsonString (); Serial.println (sporočilo); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Tu imamo funkcijo, ki je odgovorna za povezavo z omrežjem WiFi.

// Funkão responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezovanje z"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, GESLO); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi povezan"); }

MQTT.ino - povežite strežnik MQTTServer

V tem koraku uporabljamo funkcijo, ki je odgovorna za povezavo s strežnikom MQTT.

// Funkcionalni odziv na povezavi strežnika MQTTvoid connectMQTTServer () {Serial.println ("Povezovanje s strežnikom MQTT …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se conexão foi bem sucedida Serial.println ("connected"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - bralni senzor

Odčitavanje podatkov o temperaturi in vlažnosti je definirano v tej funkciji.

// Funkã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 (value)) {// Armazena o novo valor da temperatura temperature = vrednost; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade Vlažnost = vrednost; }}

MQTT.ino - createJsonString

Tu imamo funkcijo, odgovorno za ustvarjanje Jsona z odčitanimi podatki.

// Funkão responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; podatki+= "\" d / ": {"; podatki+= "\" temperatura / ":"; podatki+= niz (temperatura); podatki+= ","; podatki+= "\" vlažnost / ":"; podatki+= niz (vlažnost); podatki+= "}"; podatki+= "}"; vrniti podatke; }

10. korak: grafično

Grafično
Grafično
Grafično
Grafično

Za ogled grafa senzorja pojdite

na

V polje ID naprave vnesite DEVICE_ID, ki ste ga določili v kodi.

- Pomembno je, da ta ID naprave spremenite v edinstven ID, ki se uporablja le, da se izognete konfliktu s podatki, ki jih pošlje druga oseba.

Na koncu sprejmite pogoje in kliknite Pojdi.

V tem projektu smo preskusili našo končno točko na strežniku IBM Watson. To zagotavlja, da naš program Arduino pravilno komunicira s platformo in da storitve, ki jih pošljemo, storitev v oblaku brez težav prejema, če ustvarimo račun.

V prihajajočem videoposnetku v tej seriji vam bom pokazal, kako se prijaviti v IBM Watson, in med drugim zapisati v podatkovno banko te ali druge storitve v oblaku, kot so Google, Amazon.

11. korak: Datoteke

Prenesite datoteke:

PDF

JAZ NE

Priporočena: