INHOUDSOPGAWE:

IBM Watson met ESP32 as eindpunt: 11 stappe
IBM Watson met ESP32 as eindpunt: 11 stappe

Video: IBM Watson met ESP32 as eindpunt: 11 stappe

Video: IBM Watson met ESP32 as eindpunt: 11 stappe
Video: Wokwi to IBM watson cloud - IOT 2024, Julie
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Ek plaas vandag die eerste video van 'n reeks oor hoe om 'n eindpunt -toestel met ESP32 te monteer en dit dan na 'n wolkdiens te stuur. In hierdie spesifieke episode sal ek u wys hoe u inligting vanaf 'n DHT22 -sensor kan stuur met behulp van die MQTT -protokol vir IBM Watson.

Ons stel eers die MQTT bekend, wat 'n masjien-tot-masjien-protokol is wat in IoT (Internet of Things) gebruik word. Ons stuur ook data van die temperatuur- en humiditeitsensor met behulp van hierdie protokol, en kyk dan na die grafiek met hierdie data op 'n webblad.

Stap 1: ESP32 Pinout

Ek het die Pinout van ESP32 hier geplaas, wat ons in ons voorbeeld gebruik. Ek wil dit egter duidelik maak dat die projek ook werk met ESP8266, en selfs met dieselfde bronkode.

Stap 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Stap 3: MQTT

MQTT
MQTT

MQTT is 'n masjien-tot-masjien-protokol wat in IoT gebruik word. Dit is ontwerp om lig en vinnig te wees. Dit gebruik 'n subskripsie/publiseer stelsel, waar 'n toestel 'n subskripsie het op 'n onderwerp met die spesifieke inligting van u belangstelling, en dan die inligting ontvang wanneer 'n toestel data oor hierdie onderwerp publiseer.

Soos 'n bedienerprogram, benodig MQTT sagteware. Dit word 'n makelaar genoem. In hierdie spesifieke geval gebruik ons IBM se Bluemix IoT -diens. Hierdie diens is gratis vir eindpunt toetsing.

Vervolgens moet ons 'n selfoon of tablet hê met die aansoekkant, dit wil sê as 'n MQTT -kliënt. Ons het ook die apparaatkant, die ESP -kant met 'n termometer. Dit stuur die temperatuur- en humiditeitsdata na die Bluemix, wat hierdie inligting dan na die aansoekkant stuur.

Stap 4: Montering

Vergadering
Vergadering

Ons stroombaan bestaan uit 'n weerstand van 4.7k Ohm tussen die 3.3v en die datapen, plus 'n DHT22 wat gekoppel is aan die GPIO4 van 'n ESP32 of NodeMCU. Dit is dus ons eindpunt.

Stap 5: Diagram

Diagram
Diagram
Diagram
Diagram

Ek wys hier die verskillende maniere om met die MQTT Local Broker saam te werk. Ek het twee diagrammodelle geplaas. In die video praat ek oor 'n situasie met 'n Raspberry Pi om byvoorbeeld 'n hek oop te maak.

In die bostaande prentjie het ons die eerste argitektuur wat 'n plaaslike makelaar met volharding gebruik, en 'n tweede argitektuur hieronder wat slegs met die makelaar in die wolk kommunikeer.

Soos in die diagram getoon word, stuur ons sensor dan die temperatuur- en humiditeitsdata na IBM Watson. Dit is belangrik om te beklemtoon dat IBM Watson in hierdie geval nie die data skryf nie, aangesien dit slegs in grafieke vertoon word. Dit is omdat ons geen databasisbedrywighede in die voorbeeld van vandag sal aanspreek nie, maar slegs toegang tot die Quickstart -bladsy (https://quickstart.internetofthings.ibmcloud.com/) aandui, wat die status van die eindpunt sal vertoon. Die skema is eenvoudig en gebruik WiFi om data te stuur.

Stap 6: Biblioteke

Gaan in die Arduino IDE na die Skets -kieslys -> Sluit biblioteek in -> Bestuur biblioteke …

Tik in die soektog "DHT" op die skerm wat oopmaak en installeer die lib "DHT -sensorbiblioteek"

Tik dan "PubSubClient" en installeer die "PubSubClient" lib.

Stap 7: Leesbiblioteek vir temperatuur en humiditeit

Temperatuur- en humiditeitsleesbiblioteek
Temperatuur- en humiditeitsleesbiblioteek

Stap 8: MQTT -biblioteek

MQTT -biblioteek
MQTT -biblioteek

Stap 9: MQTT.ino

Ons begin die bronkode deur te kyk watter ESP gebruik word en die ooreenstemmende biblioteek en WiFi in te voer. Ons bevat nog steeds die MQTT Libs en die temperatuur- en humiditeitsensor.

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

Vervolgens definieer ons die volgende: die interval tussen data -voorleggings, die MQTT -bediener wat gebruik gaan word, die drukinligting op die grafiek en die ID. Ons het ook daarop gewys hoe die string QUICK_START moet wees.

// Intervalo entre os envios #definieer INTERVAL 1000 // Vervang die SSID vir meer as #define SSID "TesteESP" // Vervang die nuwe #definieer wagwoord "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 permanecer como está const String QUICK_START = "d: quickstart: arduino:";

In hierdie stap definieer ons 'n unieke ID. In hierdie voorbeeld gebruik ons die MAC -adres van die toestel wat ons gebruik. Dit sal dien as identifikasie op die QuickStart -webwerf. Hier koppel ons ook die Quickstart ID met die ID van ons toestel.

// Geen DEVICE_ID kan vir ons 'n ID gebruik nie // Vir voorbeeld kan gebruik word van MAC -adres // om dispositivo que estamos utilizando te gebruik // Servirá como identifieraçã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;

Ons stel dan die MQTT en WiFi op, sowel as die voorwerpe en veranderlikes wat betrokke is by die waardes van temperatuur en humiditeit.

// Wifi -klante kan deur MQTT gebruik word vir die konteks van WiFiClient wifiClient; // Kliënt MQTT, slaag na 'n URL -bediener, 'n portaal // of na WiFi PubSubClient -kliënt (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objekto que realiza a leitura da temperaturea e da umidade DHT dht (4, DHT22); // Variabel vir wagarmos of valor da temperatuura float temperature = 0; // Variável para guardarmos o valor da umidade float humiditeit = 0;

MQTT.ino - opstelling

In die opset begin ons die DHT en maak ons verbinding met die WiFi -netwerk en MQTT -bediener.

ongeldige opstelling () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Verbind WiFi met WiFi (); // Verbind met die bediener MQTT connectMQTTServer (); }

MQTT.ino - lus

In die lus versamel ons die sensordata om die Json te skep wat gepubliseer sal word in die onderwerp wat IBM Watson verwag om die grafiek te genereer.

leemte lus () {// Tempos agora em milisegundos nou lank = 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 ("Publiseer boodskap:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (boodskap); // Publicamos no tópico onde o servidor espera for receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - opstelWiFi

Hier het ons die funksie wat verantwoordelik is vir die verbinding met die WiFi -netwerk.

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

MQTT.ino - verbindMQTTServer

In hierdie stap gebruik ons die funksie wat verantwoordelik is vir die verbinding met die MQTT -bediener.

// Funksionele reaksie op die bediener van MQTTvoid connectMQTTServer () {Serial.println ("Koppel aan MQTT -bediener …"); // Sien ook die definisie as (client.connect (CLIENT_ID.c_str ())) {// Sien 'n koneksão foi bem sucedida Serial.println ("verbind"); } anders {// Sien ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - leesSensor

Die lees van die temperatuur- en humiditeitsdata word in hierdie funksie gedefinieer.

// Função responsável por realizar a leitura // da temperatuura e umidade void readSensor () {float value; // Faz a leitura da temperatuura 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 (); // Soek waarde vir válido as (! Isnan (waarde)) {// Armazena o novo valor da umidade humiditeit = waarde; }}

MQTT.ino - createJsonString

Hier het ons die funksie wat verantwoordelik is vir die skep van 'n Json met die lees van die data.

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

Stap 10: Grafies

Grafies
Grafies
Grafies
Grafies

Gaan na die sensorgrafiek

na

Voer in die veld Toestel -ID die DEVICE_ID in wat u in die kode gedefinieer het.

- Dit is belangrik om hierdie toestel -ID te verander na 'n unieke ID, wat slegs gebruik word om konflik te voorkom met data wat deur 'n ander persoon gestuur word.

Aanvaar ten slotte die bepalings en klik op Gaan.

In hierdie projek het ons ons eindpunt op die IBM Watson -bediener getoets. Dit verseker dat ons Arduino -program behoorlik met die platform kommunikeer, en dat die data wat ons stuur glad deur 'n wolkdiens ontvang sal word as ons 'n rekening skep.

In 'n komende video in hierdie reeks sal ek jou wys hoe om by IBM Watson aan te meld, asook om in die databank van hierdie of 'n ander wolkdiens, soos onder andere Google, Amazon, te skryf.

Stap 11: lêers

Laai die lêers af:

PDF

EK NEE

Aanbeveel: