Cuprins:

IBM Watson cu ESP32 ca punct final: 11 pași
IBM Watson cu ESP32 ca punct final: 11 pași

Video: IBM Watson cu ESP32 ca punct final: 11 pași

Video: IBM Watson cu ESP32 ca punct final: 11 pași
Video: IBM Watson com ESP32 como Endpoint - Pt2 2024, Noiembrie
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Postez aici astăzi primul videoclip al unei serii despre cum se montează un dispozitiv Endpoint cu ESP32 și apoi îl trimit unui serviciu cloud. În acest episod specific, vă voi arăta cum să trimiteți informații de la un senzor DHT22 utilizând protocolul MQTT pentru IBM Watson.

Mai întâi vom introduce MQTT, care este un protocol de la mașină la mașină utilizat în IoT (Internet of Things). De asemenea, vom trimite date de la senzorul de temperatură și umiditate folosind acest protocol și apoi vom verifica graficul cu aceste date pe o pagină web.

Pasul 1: ESP32 Pinout

Am plasat aici Pinout-ul ESP32, pe care îl folosim în exemplul nostru. Cu toate acestea, vreau să clarific că proiectul funcționează și cu ESP8266 și chiar cu același cod sursă.

Pasul 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Pasul 3: MQTT

MQTT
MQTT

MQTT este un protocol mașină la mașină utilizat în IoT. A fost conceput pentru a fi ușor și rapid. Folosește un sistem de abonare / publicare, în care un dispozitiv „se abonează” la un subiect cu informațiile specifice de interes și apoi primește informațiile ori de câte ori un dispozitiv publică date referitoare la acest subiect.

La fel ca un program de server, MQTT are nevoie de software. Aceasta se numește Broker. În acest caz specific, vom folosi serviciul IoT Bluemix al IBM. Acest serviciu este gratuit pentru testarea punctelor finale.

În continuare, trebuie să avem un telefon mobil sau o tabletă cu partea Aplicație, adică ca client MQTT. De asemenea, avem partea dispozitivului, care este partea ESP cu un termometru. Aceasta trimite datele de temperatură și umiditate către Bluemix, care apoi trimite aceste informații către partea aplicației.

Pasul 4: Asamblare

Asamblare
Asamblare

Circuitul nostru constă dintr-un rezistor de 4,7 k Ohmi între 3,3 v și pinul de date, plus un DHT22 conectat la GPIO4 al unui ESP32 sau NodeMCU. Astfel, acesta este punctul nostru final.

Pasul 5: Diagrama

Diagramă
Diagramă
Diagramă
Diagramă

Arăt aici câteva modalități de a lucra cu Brokerul Local MQTT. Am plasat două modele de diagrame. În videoclip, vorbesc despre o situație folosind un Raspberry Pi pentru a deschide o poartă, de exemplu.

În imaginea de mai sus, avem prima arhitectură care folosește un Broker local cu persistență și o a doua arhitectură de mai jos care comunică doar cu brokerul în cloud.

După cum se arată în diagramă, senzorul nostru trimite apoi datele de temperatură și umiditate către IBM Watson. Este important să subliniem că IBM Watson nu scrie datele în acest caz, deoarece este afișat doar în grafice. Acest lucru se datorează faptului că nu vom aborda nicio operațiune din baza de date în exemplul de astăzi, ci vom indica doar accesul la pagina Quickstart (https://quickstart.internetofthings.ibmcloud.com/), care va afișa starea punctului final. Schema este simplă și utilizează WiFi pentru a trimite date.

Pasul 6: Biblioteci

În IDE-ul Arduino, accesați meniul Sketch -> Includeți biblioteca -> Gestionați bibliotecile …

Pe ecranul care se deschide, introduceți în căutare „DHT” și instalați lib “biblioteca senzorului DHT”

Apoi, tastați „PubSubClient” și instalați lib. „PubSubClient”.

Pasul 7: Biblioteca de citire a temperaturii și umidității

Biblioteca de citire a temperaturii și umidității
Biblioteca de citire a temperaturii și umidității

Pasul 8: Biblioteca MQTT

Biblioteca MQTT
Biblioteca MQTT

Pasul 9: MQTT.ino

Începem codul sursă verificând ce ESP este utilizat și importând biblioteca corespunzătoare și WiFi. Încă includem MQTT Libs și senzorul de temperatură și umiditate.

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

Apoi, definim următoarele: intervalul dintre trimiterile de date, serverul MQTT care va fi utilizat, informațiile de tipărire pe diagramă și ID-ul. De asemenea, am subliniat cum ar trebui să fie șirul QUICK_START.

// Intervalo între 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 "quickstart.messaging.internetofthings.ibmcloud.com "// Nome do tópico that devemos send os dados // pentru care acestea apare noi grafice #define TOPIC_NAME" iot-2 / evt / status / fmt / json "// ID that useemos for conectar // QUICK_START deve permanecer como está const String QUICK_START = "d: quickstart: arduino:";

În acest pas, definim un ID unic. În acest exemplu, folosim adresa MAC a dispozitivului pe care îl folosim. Aceasta va servi drept identificare pe site-ul QuickStart. Aici, conectăm și ID-ul Quickstart cu ID-ul dispozitivului nostru.

// No DEVICE_ID você deve mudar for um id unique // Aqui nesse example utilizamos o MAC Address // do device that estamos using // Servirá as identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatem o id do quickstart com o id do nosso // dispozitiv const String CLIENT_ID = QUICK_START + DEVICE_ID;

Apoi configurăm MQTT și WiFi, precum și obiectele și variabilele implicate în valorile temperaturii și umidității.

// Cliente WiFi care o MQTT va folosi pentru conectareWiFiClient wifiClient; // Cliente MQTT, treceți un URL de server, un port // e o client WiFi PubSubClient client (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 moisture = 0;

MQTT.ino - configurare

În Setup, vom inițializa DHT și ne vom conecta la rețeaua WiFi și la serverul MQTT.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectează-ne la Wi-Fi setupWiFi (); // Conectați-vă la server MQTT connectMQTTServer (); }

MQTT.ino - buclă

În buclă, colectăm datele senzorilor pentru a crea Json, care vor fi publicate în subiectul pe care IBM Watson îl așteaptă să genereze graficul.

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 („Publicare mesaj:”); // Criamos o json care trimiteemos pentru server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico unde o server espera for receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Aici avem funcția responsabilă de conectarea la rețeaua WiFi.

// Funcția răspunde prin conectarea la rede WiFivoid setupWiFi () {Serial.println (); Serial.print („Conectarea la”); Serial.print (SSID); // Manda o esp se conectează la 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 conectat"); }

MQTT.ino - connectMQTTServer

În acest pas, folosim funcția responsabilă de conectarea la serverul MQTT.

// Funcția răspunde pentru conectarea la serverul MQTTvoid connectMQTTServer () {Serial.println ("Conectarea la serverul MQTT …"); // 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

Citirea datelor de temperatură și umiditate este definită în această funcție.

// Função responsável por realizar a leitura // da temperatura și umiditate 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 = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade moisture = value; }}

MQTT.ino - createJsonString

Aici avem funcția responsabilă pentru crearea unui Json cu datele citite.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; date + = "\" d / ": {"; date + = "\" temperature / ":"; date + = Șir (temperatură); date + = ","; date + = "\" umiditate / ":"; date + = String (umiditate); date + = "}"; date + = "}"; returnează date; }

Pasul 10: Grafic

Grafic
Grafic
Grafic
Grafic

Pentru a vizualiza graficul senzorului, mergeți

la

În câmpul Device ID, introduceți DEVICE_ID pe care l-ați definit în cod.

- Este important să schimbați acest ID de dispozitiv într-un ID unic, utilizat numai pentru a evita conflictul cu datele trimise de o altă persoană.

În cele din urmă, acceptați termenii și faceți clic pe Go.

În acest proiect, am testat Endpoint-ul nostru pe serverul IBM Watson. Acest lucru asigură faptul că programul nostru Arduino comunică corect cu platforma și că datele pe care le trimitem vor fi primite fără probleme de către un serviciu cloud dacă creăm un cont.

Într-un videoclip viitoare din această serie, vă voi arăta cum să vă conectați la IBM Watson, precum și să scriu în banca de date a acestui sau a altui serviciu cloud, cum ar fi Google, Amazon, printre altele.

Pasul 11: Fișiere

Descărcați fișierele:

PDF

EU NU

Recomandat: