Cuprins:
- Pasul 1: ESP32 Pinout
- Pasul 2: NodeMCU Pinout
- Pasul 3: MQTT
- Pasul 4: Asamblare
- Pasul 5: Diagrama
- Pasul 6: Biblioteci
- Pasul 7: Biblioteca de citire a temperaturii și umidității
- Pasul 8: Biblioteca MQTT
- Pasul 9: MQTT.ino
- Pasul 10: Grafic
- Pasul 11: Fișiere
Video: IBM Watson cu ESP32 ca punct final: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
Pasul 3: 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
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
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
Pasul 8: 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
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:
EU NU
Recomandat:
Consola Punct la Punct Atari Punk 1 și jumătate: 19 pași
Point to Point Atari Punk Console One and Half: What! ?? O altă versiune Atari Punk Console? Așteptați, așteptați, așteptați oamenii, aceasta este diferită, promiteți. Waaay, în 1982, Forrest Mims, scriitorul de broșuri Radio Shack și Creaționistul Young Earth (emoji cu ochi plini) a publicat planurile în genul său Stepped Tone
Căi ferate model automat automat punct la punct: 10 pași (cu imagini)
Modele de cale ferată automate simple punct la punct: microcontrolerele Arduino sunt excelente pentru automatizarea modelelor de cale ferată. Automatizarea planurilor este utilă în multe scopuri, cum ar fi plasarea aspectului dvs. pe un afișaj în care operația de planificare poate fi programată pentru a circula trenurile într-o succesiune automată. Eu
Oscilator controlat de tensiune punct la punct: 29 de pași
Oscilator controlat de tensiune punct-la-punct: Bună! Ați găsit un proiect în care luăm un microcip cu adevărat ieftin, un CD4069 (frumos), și lipim câteva piese la acesta și obținem un oscilator de tensiune controlat de pitch-tracking foarte util! Versiunea pe care o vom construi are doar o formă de undă ferăstrău sau rampă, care este o
Circuit Crossfader punct-la-punct: 16 pași (cu imagini)
Crossfader Circuit Point-to-Point: Acesta este un circuit crossfader. Acceptă două intrări și se estompează între ele, ieșirea fiind un amestec al celor două intrări (sau doar una dintre intrări). Este un circuit simplu, foarte util și ușor de construit! Se inversează semnalul care trece prin el
Circuit punct-la-punct Eurorack dual Decay: 12 pași
Dual Decay Eurorack Point-to-Point Circuit: Scopul acestui instructiv este de a arăta cum puteți crea un circuit DUAL DECAY pentru sintetizatorul dvs. modular. Acesta este un circuit punct-la-punct lipsit de orice PCB și demonstrează un alt mod de a construi circuite sintetizatoare funcționale cu piese minime