Sadržaj:

IBM Watson s ESP32 kao krajnjom točkom: 11 koraka
IBM Watson s ESP32 kao krajnjom točkom: 11 koraka

Video: IBM Watson s ESP32 kao krajnjom točkom: 11 koraka

Video: IBM Watson s ESP32 kao krajnjom točkom: 11 koraka
Video: Aplicativo Completo de Automação Residencial via Bluetooth - Aula #26 2024, Srpanj
Anonim
Image
Image
Ispis ESP32
Ispis ESP32

Danas objavljujem prvi video u nizu o tome kako montirati Endpoint uređaj s ESP32, a zatim ga poslati na uslugu u oblaku. U ovoj specifičnoj epizodi pokazat ću vam kako slati informacije s DHT22 senzora pomoću MQTT protokola za IBM Watson.

Prvo ćemo predstaviti MQTT, protokol stroj-stroj koji se koristi u IoT-u (Internet of Things). Pomoću ovog protokola također ćemo poslati podatke s senzora temperature i vlažnosti, a zatim provjeriti grafikon s tim podacima na web stranici.

Korak 1: Ispis ESP32

Ovdje sam postavio Pinout ESP32, koji koristimo u našem primjeru. Međutim, želim jasno staviti do znanja da projekt radi i s ESP8266, pa čak i s istim izvornim kodom.

Korak 2: NodeMCU ispis

Ispis NodeMCU -a
Ispis NodeMCU -a

Korak 3: MQTT

MQTT
MQTT

MQTT je protokol stroj-za-stroj koji se koristi u IoT-u. Dizajniran je da bude lagan i brz. Koristi sustav za pretplatu/objavljivanje, gdje se uređaj "pretplati" na temu s određenim informacijama koje vas zanimaju, a zatim prima informacije kad god uređaj objavi podatke o ovoj temi.

Poput poslužiteljskog programa, MQTT -u je potreban softver. To se zove posrednik. U ovom konkretnom slučaju koristit ćemo IBM -ovu Bluemix IoT uslugu. Ova je usluga besplatna za testiranje krajnjih točaka.

Zatim moramo imati mobitel ili tablet sa aplikacijske strane, odnosno kao MQTT klijent. Imamo i stranu uređaja, koja je ESP strana s termometrom. Ovo šalje podatke o temperaturi i vlažnosti Bluemixu, koji zatim šalje te podatke aplikacijskoj strani.

Korak 4: Montaža

Skupština
Skupština

Naš se krug sastoji od otpornika od 4,7 k Ohma između 3,3 V i podatkovnog pina, plus DHT22 spojen na GPIO4 ESP32 ili NodeMCU. Dakle, ovo je naša krajnja točka.

Korak 5: Dijagram

Dijagram
Dijagram
Dijagram
Dijagram

Ovdje prikazujem nekoliko načina rada s lokalnim posrednikom MQTT. Postavio sam dva modela dijagrama. U videu govorim o situaciji na primjer pomoću Raspberry Pi za otvaranje vrata.

Na gornjoj slici imamo prvu arhitekturu koja uporno koristi lokalnog posrednika, a drugu arhitekturu ispod koja komunicira samo s posrednikom u oblaku.

Kao što je prikazano na dijagramu, naš senzor zatim šalje podatke o temperaturi i vlažnosti IBM Watsonu. Važno je naglasiti da IBM Watson u ovom slučaju ne zapisuje podatke jer se prikazuju samo u grafikonima. To je zato što se u današnjem primjeru nećemo baviti nikakvim operacijama baze podataka, već samo naznačiti pristup stranici Quickstart (https://quickstart.internetofthings.ibmcloud.com/), koja će prikazati status krajnje točke. Shema je jednostavna i koristi WiFi za slanje podataka.

Korak 6: Knjižnice

U Arduino IDE idite na izbornik Sketch -> Include Library -> Manage Libraries …

Na zaslonu koji se otvori unesite u pretraživanje "DHT" i instalirajte lib "DHT sensor library"

Zatim upišite "PubSubClient" i instalirajte "PubSubClient" lib.

Korak 7: Knjižnica za čitanje temperature i vlažnosti

Knjižnica za čitanje temperature i vlažnosti
Knjižnica za čitanje temperature i vlažnosti

Korak 8: MQTT knjižnica

Knjižnica MQTT
Knjižnica MQTT

Korak 9: MQTT.ino

Izvorni kod započinjemo provjerom koji se ESP koristi i uvozom odgovarajuće knjižnice i WiFi -a. Još uvijek uključujemo MQTT Libs i osjetnik temperature i vlažnosti.

// Verifica qual ESP está sendo utilizado // e importa a lib e wifi korespondente #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperature e umidade #include

Zatim definiramo sljedeće: interval između slanja podataka, poslužitelj MQTT koji će se koristiti, ispis informacija na grafikonu i ID. Također smo istaknuli kako bi niz QUICK_START trebao biti.

// Intervalo entre os envios #define INTERVAL 1000 // Zamjena pelo SSID -a za suede rede #define SSID "TesteESP" // Zamjena 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 deve permanentcer como está const String QUICK_START = "d: quickstart: arduino:";

U ovom koraku definiramo jedinstveni ID. U ovom primjeru koristimo MAC adresu uređaja koji koristimo. To će poslužiti kao identifikacija na web stranici QuickStart. Ovdje također povezujemo Quickstart ID s ID -om našeg uređaja.

// 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;

Zatim konfiguriramo MQTT i WiFi, kao i objekte i varijable uključene u vrijednosti temperature i vlažnosti.

// Klijent WiFi za postavljanje MQTT -a koristi se za povezivanjeWiFiClient wifiClient; // Klijent MQTT, passamos url do poslužitelj, porta // e o klijent WiFi PubSubClient klijent (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperature e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura temperatura plovka = 0; // Variável para guardarmos o valor da umidade plutajuća vlažnost = 0;

MQTT.ino - postavljanje

U Postavi ćemo inicijalizirati DHT i povezati se na WiFi mreži i MQTT poslužitelju.

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

MQTT.ino - petlja

U petlji prikupljamo podatke senzora kako bismo stvorili Json koji će biti objavljen u temi za koju IBM Watson očekuje generiranje grafikona.

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 poruku:"); // Criamos o json que enviaremos za poslužitelj mqtt String msg = createJsonString (); Serial.println (poruka); // 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

Ovdje imamo funkciju odgovornu za povezivanje s WiFi mrežom.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezivanje s"); Serijski.ispis (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 estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi povezan"); }

MQTT.ino - povežiteMQTTServer

U ovom koraku koristimo funkciju odgovornu za povezivanje s poslužiteljem MQTT.

// Funkcionalno odgovaranje na poveznicu na poslužitelju MQTTvoid connectMQTTServer () {Serial.println ("Spajanje na MQTT poslužitelj …"); // 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 - senzor za čitanje

Očitavanje podataka o temperaturi i vlažnosti definirano je ovom funkcijom.

// 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 (value)) {// Armazena o novo valor da temperatura temperature = vrijednost; } // 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 = vrijednost; }}

MQTT.ino - createJsonString

Ovdje imamo funkciju odgovornu za stvaranje Jsona s pročitanim podacima.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; podaci+= "\" d / ": {"; podaci+= "\" temperatura / ":"; podaci+= niz (temperatura); podaci+= ","; podaci+= "\" vlažnost / ":"; podaci+= niz (vlažnost); podaci+= "}"; podaci+= "}"; vratiti podatke; }

10. korak: grafički

Grafički
Grafički
Grafički
Grafički

Idite na grafikon senzora

na

U polje ID uređaja unesite DEVICE_ID koji ste definirali u kodu.

- Važno je promijeniti ovaj ID uređaja u jedinstveni ID, koji se koristi samo kako bi se izbjegao sukob s podacima koje je poslala druga osoba.

Na kraju, prihvatite uvjete i kliknite Idi.

U ovom projektu testirali smo našu Endpoint na IBM Watson poslužitelju. To osigurava da naš Arduino program pravilno komunicira s platformom i da će oblačne usluge nesmetano primati podatke koje šaljemo ako stvorimo račun.

U nadolazećem videu u ovoj seriji pokazat ću vam kako se prijaviti na IBM Watson, kao i upisivati u bazu podataka ove ili druge usluge u oblaku, poput Googlea, Amazona, između ostalih.

Korak 11: Datoteke

Preuzmite datoteke:

PDF

INO

Preporučeni: