Sisällysluettelo:

IBM Watson, jonka päätepisteenä on ESP32: 11 vaihetta
IBM Watson, jonka päätepisteenä on ESP32: 11 vaihetta

Video: IBM Watson, jonka päätepisteenä on ESP32: 11 vaihetta

Video: IBM Watson, jonka päätepisteenä on ESP32: 11 vaihetta
Video: IBM Watson: Systeeminen käsitys (high tech study) 2024, Heinäkuu
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Lähetän tänne tänään ensimmäisen videon sarjasta, jossa kerrotaan, miten päätelaite asennetaan ESP32: lla ja lähetän sitten pilvipalveluun. Tässä jaksossa näytän sinulle, kuinka voit lähettää tietoja DHT22 -anturista käyttämällä IBM Watsonin MQTT -protokollaa.

Esittelemme ensin MQTT: n, joka on koneiden välinen protokolla, jota käytetään esineiden internetissä (Internet of Things). Lähetämme myös tietoja lämpötila- ja kosteusanturista käyttämällä tätä protokollaa ja tarkistamme sitten kaavion näillä tiedoilla verkkosivulla.

Vaihe 1: ESP32 Pinout

Laitoin tähän ESP32: n Pinoutin, jota käytämme esimerkissämme. Haluan kuitenkin tehdä selväksi, että projekti toimii myös ESP8266: n kanssa ja jopa samalla lähdekoodilla.

Vaihe 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Vaihe 3: MQTT

MQTT
MQTT

MQTT on koneiden välinen protokolla, jota käytetään IoT: ssä. Se on suunniteltu kevyeksi ja nopeaksi. Se käyttää tilaus-/julkaisujärjestelmää, jossa laite "tilaa" aiheen kiinnostavilla tiedoilla ja vastaanottaa tiedot aina, kun laite julkaisee aihetta koskevia tietoja.

Palvelinohjelman tavoin MQTT tarvitsee ohjelmiston. Tätä kutsutaan välittäjäksi. Tässä tapauksessa käytämme IBM: n Bluemix IoT -palvelua. Tämä palvelu on ilmainen päätepisteiden testaamiseen.

Seuraavaksi meillä on oltava matkapuhelin tai tabletti, jossa on sovelluspuoli eli MQTT -asiakas. Meillä on myös laitepuoli, joka on ESP -puoli lämpömittarin kanssa. Tämä lähettää lämpötila- ja kosteustiedot Bluemix -laitteelle, joka lähettää nämä tiedot sovelluspuolelle.

Vaihe 4: Kokoonpano

Kokoonpano
Kokoonpano

Piirimme koostuu 4,7 k ohmin vastuksesta 3,3 V: n ja datatapin välillä sekä DHT22: sta, joka on kytketty ESP32: n tai NodeMCU: n GPIO4: ään. Tämä on siis päätepisteemme.

Vaihe 5: Kaavio

Kaavio
Kaavio
Kaavio
Kaavio

Näytän tässä useita tapoja työskennellä MQTT Local Brokerin kanssa. Laitoin kaksi kaaviomallia. Videolla puhun tilanteesta, jossa esimerkiksi Raspberry Pi avataan portti.

Yllä olevassa kuvassa meillä on ensimmäinen arkkitehtuuri, joka käyttää paikallista välittäjää pysyvästi, ja toinen arkkitehtuuri alla, joka kommunikoi vain välittäjän kanssa pilvessä.

Kuten kaaviosta näkyy, anturi lähettää sitten lämpötila- ja kosteustiedot IBM Watsonille. On tärkeää korostaa, että IBM Watson ei kirjoita tietoja tässä tapauksessa, koska ne näytetään vain kaavioina. Tämä johtuu siitä, että emme käsittele tietokantatoimintoja tämän päivän esimerkissä, vaan ilmoitamme vain pääsyn Pika -aloitussivulle (https://quickstart.internetofthings.ibmcloud.com/), joka näyttää päätepisteen tilan. Järjestelmä on yksinkertainen ja käyttää tiedonsiirtoon WiFi -yhteyttä.

Vaihe 6: Kirjastot

Siirry Arduino IDE: ssä Luonnos -valikkoon -> Sisällytä kirjasto -> Hallitse kirjastoja…

Kirjoita avautuvalla näytöllä hakuun "DHT" ja asenna lib "DHT -anturikirjasto"

Kirjoita sitten "PubSubClient" ja asenna "PubSubClient" lib.

Vaihe 7: Lämpötilan ja kosteuden lukukirjasto

Lämpötilan ja kosteuden lukukirjasto
Lämpötilan ja kosteuden lukukirjasto

Vaihe 8: MQTT -kirjasto

MQTT -kirjasto
MQTT -kirjasto

Vaihe 9: MQTT.ino

Aloitamme lähdekoodin tarkistamalla, mitä ESP: tä käytetään, ja tuomalla vastaava kirjasto ja WiFi. Mukana on edelleen MQTT Libs sekä lämpötila- ja kosteusanturi.

// Verifica quality ESP está sendo utilizado // e importa a lib e wifirespondente #if define (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de Temperature e umidade #include

Seuraavaksi määritämme seuraavat: tietojen lähettämisen välinen aika, käytettävä MQTT -palvelin, kaavion tulostustiedot ja tunnus. Huomasimme myös, kuinka merkkijonon QUICK_START pitäisi olla.

// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define SALASANA "87654321" // Palvelimen MQTT que iremos utlizar #define MQTT_SERVER ".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:";

Tässä vaiheessa määritämme yksilöllisen tunnuksen. Tässä esimerkissä käytämme käyttämämme laitteen MAC -osoitetta. Tämä toimii tunnisteena QuickStart -sivustossa. Yhdistämme tässä myös pikakäynnistystunnuksen laitteemme tunnukseen.

// No DEVICE_ID você deve mudar para um id único // Aqui nesse examplelo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como identifaçã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;

Sitten määritämme MQTT: n ja WiFi: n sekä lämpötilan ja kosteuden arvoihin liittyvät objektit ja muuttujat.

// Asiakas WiFi -que tai MQTT, jota käytetään Wi -FiClient wifiClient -yhteydessä; // Client MQTT, passamos a url do server, a porta // e tai asiakas 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 kosteus = 0;

MQTT.ino - asennus

Asetuksissa alustamme DHT: n ja muodostamme yhteyden WiFi -verkkoon ja MQTT -palvelimeen.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos Wi -Fi -asetukset Wi -Fi (); // Conectamos -palvelin MQTT connectMQTTServer (); }

MQTT.ino - silmukka

Keräämme silmukkaan anturitietoja luodaksemme Jsonin, joka julkaistaan aiheessa, jonka IBM Watson odottaa tuottavan kaavion.

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 ("Julkaise viesti:"); // Criamos o json que enviaremos para server server mqtt String msg = createJsonString (); Sarja.println (msg); // Publicamos no tópico onde o servidor espera para receber // // gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Tässä meillä on toiminto, joka vastaa yhteyden muodostamisesta WiFi -verkkoon.

// Hauskat vastaukset WiFivoid setupWiFi () {Serial.println (); Serial.print ("Yhdistäminen"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, SALASANA); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Katso chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi -yhteys"); }

MQTT.ino - connectMQTTServer

Tässä vaiheessa käytämme toimintoa, joka vastaa yhteyden muodostamisesta MQTT -palvelimeen.

// Toiminnallinen vastaus palvelimen MQTTvoid connectMQTTServer () {Serial.println ("Yhdistäminen MQTT -palvelimeen…"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connected"); } else {// Katso ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Lämpötila- ja kosteustietojen lukeminen määritetään tässä toiminnossa.

// Funktionaalinen vastaus portaalin toteutumiseen // lämpötila ja 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 = arvo; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade kosteus = arvo; }}

MQTT.ino - createJsonString

Tässä meillä on toiminto, joka vastaa Jsonin luomisesta luetuilla tiedoilla.

// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" lämpötila / ":"; data+= merkkijono (lämpötila); data+= ","; data+= "\" kosteus / ":"; data+= merkkijono (kosteus); data+= "}"; data+= "}"; palauttaa tiedot; }

Vaihe 10: Graafinen

Graafinen
Graafinen
Graafinen
Graafinen

Voit tarkastella anturikaaviota siirtymällä

osoitteeseen

Kirjoita Laitetunnus -kenttään DEVICE_ID, jonka määritit koodissa.

- On tärkeää vaihtaa tämä laitetunnus yksilölliseksi tunnukseksi, jota käytetään vain välttääkseen ristiriidan toisen henkilön lähettämien tietojen kanssa.

Hyväksy lopuksi ehdot ja napsauta Siirry.

Tässä projektissa testasimme päätepistettämme IBM Watson -palvelimella. Tämä varmistaa, että Arduino -ohjelmamme kommunikoi oikein alustan kanssa ja että lähettämämme tiedot vastaanotetaan sujuvasti pilvipalvelun kautta, jos luomme tilin.

Sarjan tulevassa videossa näytän, kuinka kirjaudun IBM Watsoniin, ja kirjoitan muun muassa tämän tai toisen pilvipalvelun, kuten Googlen, Amazonin, tietopankkiin.

Vaihe 11: Tiedostot

Lataa tiedostot:

PDF

INO

Suositeltava: