Indholdsfortegnelse:

IBM Watson med ESP32 som slutpunkt: 11 trin
IBM Watson med ESP32 som slutpunkt: 11 trin

Video: IBM Watson med ESP32 som slutpunkt: 11 trin

Video: IBM Watson med ESP32 som slutpunkt: 11 trin
Video: Ken Jennings: Watson, Jeopardy and me, the obsolete know-it-all 2024, November
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Jeg sender her i dag den første video i en serie om, hvordan man monterer en Endpoint -enhed med ESP32, og derefter sender den til en skytjeneste. I denne specifikke episode viser jeg dig, hvordan du sender oplysninger fra en DHT22 -sensor ved hjælp af MQTT -protokollen til IBM Watson.

Vi introducerer først MQTT, som er en maskine-til-maskine-protokol, der bruges i IoT (Internet of Things). Vi sender også data fra temperatur- og fugtighedsføleren ved hjælp af denne protokol og kontrollerer derefter grafen med disse data på en webside.

Trin 1: ESP32 Pinout

Jeg placerede her Pinout af ESP32, som vi bruger i vores eksempel. Jeg vil dog gøre det klart, at projektet også fungerer med ESP8266, og endda med den samme kildekode.

Trin 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Trin 3: MQTT

MQTT
MQTT

MQTT er en maskine-til-maskine-protokol, der bruges i IoT. Det var designet til at være let og hurtigt. Den bruger et abonnements-/udgivelsessystem, hvor en enhed "abonnerer" på et emne med de specifikke oplysninger af din interesse og derefter modtager oplysningerne, når en enhed offentliggør data vedrørende dette emne.

Ligesom et serverprogram har MQTT brug for software. Dette kaldes en mægler. I dette specifikke tilfælde vil vi bruge IBM's Bluemix IoT Service. Denne service er gratis til slutpunktstest.

Dernæst skal vi have en mobiltelefon eller tablet med applikationssiden, det vil sige som en MQTT -klient. Vi har også Device -siden, som er ESP -siden med et termometer. Dette sender data om temperatur og fugtighed til Bluemix, som derefter sender disse oplysninger til applikationssiden.

Trin 4: Montering

montage
montage

Vores kredsløb består af en 4,7k Ohms modstand mellem 3.3v og datapinden plus en DHT22 forbundet til GPIO4 på en ESP32 eller NodeMCU. Således er dette vores slutpunkt.

Trin 5: Diagram

Diagram
Diagram
Diagram
Diagram

Jeg viser her de flere måder at arbejde med MQTT Local Broker. Jeg placerede to diagrammodeller. I videoen taler jeg om en situation, der f.eks. Bruger en Raspberry Pi til at åbne en port.

På billedet ovenfor har vi den første arkitektur, der bruger en lokal mægler med vedholdenhed og en anden arkitektur nedenfor, der kun kommunikerer med mægleren i skyen.

Som vist i diagrammet sender vores sensor derefter temperatur- og fugtighedsdataene til IBM Watson. Det er vigtigt at understrege, at IBM Watson ikke skriver dataene i dette tilfælde, da det kun vises i grafer. Dette skyldes, at vi ikke vil behandle nogen databasefunktioner i dagens eksempel, men kun angive adgang til Quickstart -siden (https://quickstart.internetofthings.ibmcloud.com/), som viser status for slutpunktet. Ordningen er enkel og bruger WiFi til at sende data.

Trin 6: Biblioteker

I Arduino IDE skal du gå til menuen Skitse -> Inkluder bibliotek -> Administrer biblioteker …

På skærmen, der åbnes, skal du indtaste søgningen "DHT" og installere lib "DHT -sensorbiblioteket"

Skriv derefter "PubSubClient" og installer "PubSubClient" lib.

Trin 7: Læsning af temperatur og fugtighed

Temperatur og luftfugtighed Læsebibliotek
Temperatur og luftfugtighed Læsebibliotek

Trin 8: MQTT -bibliotek

MQTT -bibliotek
MQTT -bibliotek

Trin 9: MQTT.ino

Vi starter kildekoden med at kontrollere, hvilken ESP der bruges, og importere det tilsvarende bibliotek og WiFi. Vi inkluderer stadig MQTT Libs og temperatur- og fugtighedssensoren.

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

Dernæst definerer vi følgende: intervallet mellem dataindsendelser, den MQTT -server, der skal bruges, udskrivningsoplysningerne på diagrammet og id'et. Vi påpegede også, hvordan strengen QUICK_START skulle være.

// 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 "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 permanentecer como está const String QUICK_START = "d: quickstart: arduino:";

I dette trin definerer vi et unikt ID. I dette eksempel bruger vi MAC -adressen på den enhed, vi bruger. Dette fungerer som identifikation på QuickStart -webstedet. Her forbinder vi også Quickstart ID med id'en på vores enhed.

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

Vi konfigurerer derefter MQTT og WiFi, samt objekter og variabler, der er involveret i værdierne for temperatur og fugtighed.

// Cliente WiFi que MQTT irá utilizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, a porta // e o cliente WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objekto 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 luftfugtighed = 0;

MQTT.ino - opsætning

I opsætningen initialiserer vi DHT og opretter forbindelse til WiFi -netværket og MQTT -serveren.

ugyldig opsætning () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }

MQTT.ino - loop

I Loop indsamler vi sensordata for at oprette den Json, der vil blive offentliggjort i det emne, som IBM Watson forventer at generere grafen.

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 ("Udgiv besked:"); // 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 - setupWiFi

Her har vi den funktion, der er ansvarlig for at oprette forbindelse til WiFi -netværket.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Opretter forbindelse til"); 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); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi tilsluttet"); }

MQTT.ino - tilslut MQTTServer

I dette trin bruger vi den funktion, der er ansvarlig for forbindelse til MQTT -serveren.

// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Opretter forbindelse til MQTT Server …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("forbundet"); } andet {// Se ocorreu algum erro Serial.print ("fejl ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Læsning af temperatur- og fugtighedsdata er defineret i denne funktion.

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

MQTT.ino - createJsonString

Her har vi den funktion, der er ansvarlig for at oprette en Json med dataene læst.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" temperatur / ":"; data+= streng (temperatur); data+= ","; data+= "\" fugtighed / ":"; data+= streng (fugtighed); data+= "}"; data+= "}"; returnere data; }

Trin 10: Grafisk

Grafisk
Grafisk
Grafisk
Grafisk

For at se sensorgrafikken, gå

til

I feltet Enheds -id skal du indtaste DEVICE_ID, som du har defineret i koden.

- Det er vigtigt at ændre dette enheds -id til et unikt id, der kun bruges til at undgå konflikt med data sendt af en anden person.

Til sidst accepterer du vilkårene og klikker på Start.

I dette projekt testede vi vores endepunkt på IBM Watson -serveren. Dette sikrer, at vores Arduino -program kommunikerer korrekt med platformen, og at de data, vi sender, vil blive modtaget problemfrit af en cloud -service, hvis vi opretter en konto.

I en kommende video i denne serie viser jeg dig, hvordan du logger ind på IBM Watson, samt skriver i databanken for denne eller en anden cloud -tjeneste, f.eks. Google, Amazon.

Trin 11: Filer

Download filerne:

PDF

INO

Anbefalede: