Sisukord:

IBM Watson, mille lõpp -punkt ESP32: 11 sammu
IBM Watson, mille lõpp -punkt ESP32: 11 sammu

Video: IBM Watson, mille lõpp -punkt ESP32: 11 sammu

Video: IBM Watson, mille lõpp -punkt ESP32: 11 sammu
Video: Cómo conectar el ESP32 a IBMC Cloud IoT Platform (Resubido) 2024, November
Anonim
Image
Image
ESP32 pinout
ESP32 pinout

Postitan täna siia esimese video seeriast, kuidas ESP32 -ga lõpp -seadet ühendada ja seejärel pilveteenusesse saata. Selles konkreetses episoodis näitan teile, kuidas saata teavet DHT22 andurilt, kasutades IBM Watsoni MQTT protokolli.

Esmalt tutvustame MQTT-d, mis on masinatevaheline protokoll, mida kasutatakse asjade internetis (asjade internet). Selle protokolli abil saadame ka temperatuuri- ja niiskusanduri andmed ning kontrollime seejärel nende andmetega graafikut veebilehel.

Samm: ESP32 pinout

Panin siia ESP32 Pinouti, mida me oma näites kasutame. Siiski tahan selgeks teha, et projekt töötab ka ESP8266 -ga ja isegi sama lähtekoodiga.

2. samm: NodeMCU pinout

NodeMCU pinout
NodeMCU pinout

3. samm: MQTT

MQTT
MQTT

MQTT on IoT-s kasutatav masinatevaheline protokoll. See oli mõeldud kergeks ja kiireks. See kasutab tellimis-/avaldamissüsteemi, kus seade "tellib" teid huvitava konkreetse teabega teema ja seejärel saab selle teabe iga kord, kui seade seda teemat puudutavaid andmeid avaldab.

Nagu serveriprogramm, vajab ka MQTT tarkvara. Seda nimetatakse maakleriks. Sel konkreetsel juhul kasutame IBMi Bluemix IoT teenust. See teenus on lõpp -punktide testimiseks tasuta.

Järgmisena peab meil olema mobiiltelefon või tahvelarvuti, millel on rakenduse pool, st MQTT -klient. Meil on ka seadme pool, mis on termomeetriga ESP pool. See saadab temperatuuri ja niiskuse andmed Bluemixile, mis seejärel saadab selle teabe rakenduste poolele.

4. samm: kokkupanek

Kokkupanek
Kokkupanek

Meie vooluahel koosneb 4,7 kΩ takistist 3,3 V ja andmeklemmi vahel, lisaks DHT22, mis on ühendatud ESP32 või NodeMCU GPIO4 -ga. Seega on see meie lõpp -punkt.

Samm: diagramm

Diagramm
Diagramm
Diagramm
Diagramm

Näitan siin mitmeid võimalusi MQTT kohaliku maakleriga töötamiseks. Panin kaks skeemimudelit. Videos räägin olukorrast, kus kasutatakse näiteks värava avamiseks Raspberry Pi.

Ülaltoodud pildil on meil esimene arhitektuur, mis kasutab püsivalt kohalikku maaklerit, ja teine arhitektuur, mis suhtleb ainult vahendajaga pilves.

Nagu diagrammil näidatud, saadab meie andur temperatuuri ja niiskuse andmed IBM Watsonile. Oluline on rõhutada, et IBM Watson ei kirjuta antud juhul andmeid, kuna neid kuvatakse ainult graafikuna. Selle põhjuseks on asjaolu, et me ei käsitle tänases näites ühtegi andmebaasi toimingut, vaid näitame ainult juurdepääsu kiirkäivituslehele (https://quickstart.internetofthings.ibmcloud.com/), mis kuvab lõpp -punkti oleku. Skeem on lihtne ja kasutab andmete saatmiseks WiFi -d.

6. samm: raamatukogud

Avage Arduino IDE -s visandimenüü -> Kaasa raamatukogu -> Halda raamatukogusid…

Sisestage avaneval ekraanil otsing "DHT" ja installige lib "DHT sensor Library"

Seejärel tippige "PubSubClient" ja installige "PubSubClient" lib.

7. samm: temperatuuri ja niiskuse lugemisraamatukogu

Temperatuuri ja niiskuse lugemisraamatukogu
Temperatuuri ja niiskuse lugemisraamatukogu

8. samm: MQTT raamatukogu

MQTT raamatukogu
MQTT raamatukogu

9. samm: MQTT.ino

Alustame lähtekoodi, kontrollides, millist ESP -d kasutatakse, ning importides vastava kogu ja WiFi. Kaasame endiselt MQTT libid ning temperatuuri ja niiskuse anduri.

// Verifica quality ESP estate sendo utilizado // e importa a lib e wifirespondente #if defineeritud (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Järgmisena määratleme järgmised andmed: andmete esitamise vaheline intervall, kasutatav MQTT -server, diagrammil olev prinditeave ja ID. Samuti juhtisime tähelepanu sellele, kuidas peaks olema string QUICK_START.

// 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" // Server 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:";

Selles etapis määratleme kordumatu ID. Selles näites kasutame kasutatava seadme MAC -aadressi. See toimib QuickStarti saidil identifitseerimisena. Siin ühendame ka kiirkäivituse ID meie seadme ID -ga.

// No DEVICE_ID você deve mudar para um id idnn // Aqui nesse examplelo utilizamos o MAC Address // do dispositivo que estamos utilizando // Teenuse como identification 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;

Seejärel seadistame MQTT ja WiFi, samuti temperatuuri ja niiskuse väärtustega seotud objektid ja muutujad.

// Client WiFi WiFi või MQTT, mida saab kasutada, kasutades Wi -FiClient wifiClient; // Cliente MQTT, passamos a url do server, porta // e või klient WiFi PubSubClient klient (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 niiskust = 0;

MQTT.ino - seadistamine

Seadistuses lähtestame DHT ja ühendame WiFi -võrgu ja MQTT -serveriga.

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

MQTT.ino - silmus

Loopis kogume andurite andmeid, et luua Json, mis avaldatakse teemas, mille IBM Watson loodab graafiku genereerida.

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 ("Avalda sõnum:"); // 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 - seadistamineWiFi

Siin on meil WiFi -võrguga ühenduse loomise eest vastutav funktsioon.

// Função responseavel por conectar Wi -Fi setup Wi -Fi () {Serial.println (); Serial.print ("Ühendamine"); 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 estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Seeria.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi ühendatud"); }

MQTT.ino - connectMQTTServer

Selles etapis kasutame funktsiooni, mis vastutab MQTT serveriga ühenduse loomise eest.

// Funktsionaalne vastus serveri MQTTvoid connectMQTTServer () {Serial.println ("Ühendamine MQTT -serveriga…"); // 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

Selles funktsioonis on määratud temperatuuri ja niiskuse andmete lugemine.

// Função responseá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 (väärtus)) {// Armazena o novo valor da temperatura temperatuur = väärtus; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade niiskus = väärtus; }}

MQTT.ino - createJsonString

Siin on meil funktsioon, mis vastutab loetud andmetega Jsoni loomise eest.

// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; andmed+= "\" d / ": {"; andmed+= "\" temperatuur / ":"; andmed+= string (temperatuur); andmed+= ","; andmed+= "\" niiskus / ":"; andmed+= string (niiskus); andmed+= "}"; andmed+= "}"; tagastada andmed; }

10. samm: graafiline

Graafiline
Graafiline
Graafiline
Graafiline

Anduri graafiku vaatamiseks minge

aadressile

Sisestage väljale Seadme ID DEVICE_ID, mille määrasite koodis.

- Oluline on muuta see seadme ID unikaalseks ID -ks, mida kasutatakse ainult selleks, et vältida vastuolu teise isiku saadetud andmetega.

Lõpuks nõustuge tingimustega ja klõpsake nuppu Mine.

Selles projektis testisime oma lõpp -punkti IBM Watsoni serveris. See tagab, et meie Arduino programm suhtleb platvormiga korralikult ja et meie saadetud andmed saavad konto loomisel sujuvalt pilveteenus.

Selle sarja eelseisvas videos näitan teile, kuidas IBM Watsoni sisse logida, samuti kirjutada selle või mõne muu pilveteenuse, näiteks Google, Amazon, andmebaasi.

Samm 11: failid

Laadige failid alla:

PDF

INO

Soovitan: