Innholdsfortegnelse:

IBM Watson med ESP32 som endepunkt: 11 trinn
IBM Watson med ESP32 som endepunkt: 11 trinn

Video: IBM Watson med ESP32 som endepunkt: 11 trinn

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

Jeg legger ut her den første videoen i en serie om hvordan du monterer en endepunktsenhet med ESP32, og deretter sender den til en skytjeneste. I denne spesifikke episoden viser jeg deg hvordan du sender informasjon fra en DHT22 -sensor ved hjelp av MQTT -protokollen for IBM Watson.

Vi skal først introdusere MQTT, som er en maskin-til-maskin-protokoll som brukes i IoT (Internet of Things). Vi vil også sende data fra temperatur- og fuktighetssensoren ved hjelp av denne protokollen, og deretter sjekke grafen med disse dataene på en webside.

Trinn 1: ESP32 Pinout

Jeg plasserte her Pinout av ESP32, som vi bruker i vårt eksempel. Jeg vil imidlertid gjøre det klart at prosjektet også fungerer med ESP8266, og til og med med den samme kildekoden.

Trinn 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Trinn 3: MQTT

MQTT
MQTT

MQTT er en maskin-til-maskin-protokoll som brukes i IoT. Den ble designet for å være lett og rask. Den bruker et abonnement/publiseringssystem, der en enhet "abonnerer" på et emne med spesifikk informasjon av din interesse, og mottar deretter informasjonen når en enhet publiserer data om dette emnet.

Som et serverprogram, trenger MQTT programvare. Dette kalles en megler. I dette spesifikke tilfellet vil vi bruke IBMs Bluemix IoT -tjeneste. Denne tjenesten er gratis for endepunktstesting.

Deretter må vi ha en mobiltelefon eller et nettbrett med applikasjonssiden, det vil si som en MQTT -klient. Vi har også enhetssiden, som er ESP -siden med et termometer. Dette sender data om temperatur og fuktighet til Bluemix, som deretter sender denne informasjonen til applikasjonssiden.

Trinn 4: Montering

montering
montering

Kretsen vår består av en 4,7k ohm motstand mellom 3.3v og datapinnen, pluss en DHT22 koblet til GPIO4 på en ESP32 eller NodeMCU. Dermed er dette vårt endepunkt.

Trinn 5: Diagram

Diagram
Diagram
Diagram
Diagram

Jeg viser her flere måter å jobbe med MQTT Local Broker. Jeg plasserte to diagrammodeller. I videoen snakker jeg om en situasjon som for eksempel bruker en Raspberry Pi for å åpne en port.

På bildet ovenfor har vi den første arkitekturen som bruker en lokal megler med utholdenhet, og en andre arkitektur nedenfor som bare kommuniserer med megleren i skyen.

Som vist i diagrammet sender vår sensor deretter temperatur- og fuktighetsdataene til IBM Watson. Det er viktig å understreke at IBM Watson ikke skriver dataene i dette tilfellet, ettersom de bare vises i grafer. Dette er fordi vi ikke vil ta opp noen databaseoperasjoner i dagens eksempel, men bare angi tilgang til Quickstart -siden (https://quickstart.internetofthings.ibmcloud.com/), som viser statusen til endepunktet. Opplegget er enkelt og bruker WiFi for å sende data.

Trinn 6: Biblioteker

I Arduino IDE, gå til Sketch -menyen -> Inkluder bibliotek -> Administrer biblioteker …

På skjermen som åpnes, skriv inn "DHT" i søket og installer lib "DHT -sensorbiblioteket"

Skriv deretter inn "PubSubClient" og installer "PubSubClient" lib.

Trinn 7: Lesing av temperatur og fuktighet

Temperatur og fuktighet Lesebibliotek
Temperatur og fuktighet Lesebibliotek

Trinn 8: MQTT -bibliotek

MQTT -bibliotek
MQTT -bibliotek

Trinn 9: MQTT.ino

Vi starter kildekoden med å sjekke hvilken ESP som brukes og importere det tilsvarende biblioteket og WiFi. Vi inkluderer fortsatt MQTT Libs og temperatur- og fuktighetssensoren.

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

Deretter definerer vi følgende: intervallet mellom datainnleveringer, MQTT -serveren som skal brukes, utskriftsinformasjonen på diagrammet og ID -en. Vi påpekte også hvordan strengen QUICK_START skal 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 trinnet definerer vi en unik ID. I dette eksemplet bruker vi MAC -adressen til enheten vi bruker. Dette vil fungere som identifikasjon på QuickStart -nettstedet. Her kobler vi også hurtigstart -IDen til ID -en til enheten vår.

// 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 deretter MQTT og WiFi, samt objektene og variablene som er involvert i verdiene temperatur og fuktighet.

// Cliente WiFi que o 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 fuktighet = 0;

MQTT.ino - oppsett

I oppsettet vil vi initialisere DHT og koble til WiFi -nettverket og MQTT -serveren.

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

MQTT.ino - sløyfe

I Loop samler vi sensordata for å lage Json som vil bli publisert i emnet som IBM Watson forventer å 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 ("Publiser melding:"); // 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 funksjonen som er ansvarlig for å koble til WiFi -nettverket.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Koble 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 tilkoblet"); }

MQTT.ino - koble tilMQTTServer

I dette trinnet bruker vi funksjonen som er ansvarlig for å koble til MQTT -serveren.

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

MQTT.ino - readSensor

Avlesningen av temperatur- og fuktighetsdata er definert i denne funksjonen.

// 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 (verdi)) {// Armazena o novo valor da temperatura temperatur = verdi; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade fuktighet = verdi; }}

MQTT.ino - createJsonString

Her har vi funksjonen som er ansvarlig for å lage en Json med dataene som er lest.

// 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+= "\" fuktighet / ":"; data+= streng (fuktighet); data+= "}"; data+= "}"; returnere data; }

Trinn 10: Grafisk

Grafisk
Grafisk
Grafisk
Grafisk

For å se sensorgrafikken, gå

til

I feltet Enhets -ID skriver du inn DEVICE_ID som du definerte i koden.

- Det er viktig å endre denne enhets -ID -en til en unik ID, bare brukt for å unngå konflikt med data sendt av en annen person.

Godta vilkårene til slutt, og klikk på Gå.

I dette prosjektet testet vi vårt endepunkt på IBM Watson -serveren. Dette sikrer at vårt Arduino -program kommuniserer ordentlig med plattformen, og at dataene vi sender vil bli mottatt jevnt av en skytjeneste hvis vi oppretter en konto.

I en kommende video i denne serien viser jeg deg hvordan du logger deg på IBM Watson, samt skriver i databanken til denne eller en annen skytjeneste, for eksempel Google, Amazon, blant andre.

Trinn 11: Filer

Last ned filene:

PDF

INO

Anbefalt: