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, Juli
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Danas objavljujem prvi video u nizu o tome kako montirati Endpoint uređaj sa ESP32, a zatim ga poslati na cloud uslugu. U ovoj specifičnoj epizodi ću vam pokazati kako slati informacije sa DHT22 senzora koristeći MQTT protokol za IBM Watson.

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

Korak 1: ESP32 Pinout

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

Korak 2: Isključivanje NodeMCU -a

NodeMCU Pinout
NodeMCU Pinout

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 sistem za pretplatu/objavljivanje, gdje se uređaj "pretplati" na temu sa specifičnim informacijama koje vas zanimaju, a zatim prima informacije kad god uređaj objavi podatke koji se tiču ove teme.

Kao i serverski program, MQTT -u je potreban softver. To se zove posrednik. U ovom konkretnom slučaju koristit ćemo IBM -ovu Bluemix IoT uslugu. Ova usluga je besplatna za testiranje krajnjih tačaka.

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

Korak 4: Montaža

Montaža
Montaža

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

Korak 5: Dijagram

Dijagram
Dijagram
Dijagram
Dijagram

Ovdje pokazujem nekoliko načina rada s lokalnim posrednikom MQTT. Postavio sam dva modela dijagrama. U videu govorim o situaciji na kojoj se na primjer koristi Raspberry Pi za otvaranje vrata.

Na gornjoj slici imamo prvu arhitekturu koja uporno koristi lokalnog brokera, 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: Biblioteke

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

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

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

Korak 7: Biblioteka za čitanje temperature i vlažnosti

Biblioteka za čitanje temperature i vlažnosti
Biblioteka za čitanje temperature i vlažnosti

Korak 8: MQTT biblioteka

MQTT biblioteka
MQTT biblioteka

Korak 9: MQTT.ino

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

// Provjeri da li je ESP upotrijebljen za korištenje ESP -a // Uvezi li i wi -fi korespondenciju #ako je definirano (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do senzora temperature i umidade #include

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

// Intervalo entre os envios #define INTERVAL 1000 // Zamjena pelo SSID -a za redefiniranje #define SSID "TesteESP" // Zamjena zamjene za suad rede #define PASSWORD "87654321" // MQTT servera za iremos utlizar #define MQTT_SERVER "brzi početak.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 tracer 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. Ovo će poslužiti kao identifikacija na web stranici QuickStart. Ovdje također povezujemo Quickstart ID s ID -om našeg uređaja.

// Nema DEVICE_ID -a za početak rada za um id único // Aqui nesse exemplo utilizemos o MAC Address // ne raspolaže que estamos utilizando // Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos ili id do quickstart com o id do nosso // dispozitivo 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.

// Klijentska WiFi mreža ili MQTT koriste se za povezivanjeWiFiClient wifiClient; // Klijent MQTT, prolazi do servera za url, porta // i o klijentu WiFi PubSubClient klijent (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realization a leitura to temperature and to 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 postavkama ćemo pokrenuti 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 server 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 puštanje temperature i umidade readSensor (); Serial.print ("Objavi poruku:"); // Criamos ili json que enviaremos za server mqtt String msg = createJsonString (); Serial.println (poruka); // Publiciranje no tópico onde ili servidor espera para receber // e grar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Ovdje imamo funkciju odgovornu za povezivanje na WiFi mrežu.

// Funkcionalno odgovaranje na povezivanje i ponovno WiFivoid setupWiFi () {Serial.println (); Serial.print ("Povezivanje sa"); Serial.print (SSID); // Manda o esp se povezuje s 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 na MQTT poslužitelj.

// Funkcionalno odgovaranje na povezivanje na poslužitelju MQTTvoid connectMQTTServer () {Serial.println ("Povezivanje na MQTT poslužitelj …"); // 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 - readSensor

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

// Funkcionalni odgovor za realizaciju litara // da temperatura i umidade void readSensor () {float value; // Faz a leitura da temperature 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 no valor da umidade Vlažnost = vrijednost; }}

MQTT.ino - createJsonString

Ovdje imamo funkciju odgovornu za stvaranje Json -a s pročitanim podacima.

// Funkcionalni odgovor prema criar -u // um Json sa oslobodjenim nizom String createJsonString () {String data = "{"; podaci+= "\" d / ": {"; podaci+= "\" temperatura / ":"; podaci+= niz (temperatura); podaci+= ","; podaci+= "\" vlažnost / ":"; podaci+= niz (vlažnost); podaci+= "}"; podaci+= "}"; vratiti podatke; }

Korak 10: Grafički prikaz

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

Idite na grafikon senzora

na

U polje Device ID 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 uslove 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čni servis nesmetano primati podatke koje šaljemo ako otvorimo račun.

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

Korak 11: Datoteke

Preuzmite datoteke:

PDF

JA NE

Preporučuje se: