Talaan ng mga Nilalaman:

IBM Watson Sa ESP32 Bilang Endpoint: 11 Mga Hakbang
IBM Watson Sa ESP32 Bilang Endpoint: 11 Mga Hakbang

Video: IBM Watson Sa ESP32 Bilang Endpoint: 11 Mga Hakbang

Video: IBM Watson Sa ESP32 Bilang Endpoint: 11 Mga Hakbang
Video: How to connect ESP32 with IBM Watson Cloud Platform 2024, Nobyembre
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Nai-post ko ngayon ngayon ang unang video ng isang serye sa kung paano i-mount ang isang Endpoint device gamit ang ESP32, at pagkatapos ay ipadala ito sa isang cloud service. Sa tukoy na episode na ito, ipapakita ko sa iyo kung paano magpadala ng impormasyon mula sa isang sensor ng DHT22 gamit ang MQTT protocol para sa IBM Watson.

Una naming ipakilala ang MQTT, na isang machine-to-machine na protokol na ginamit sa IoT (Internet of Things). Magpapadala din kami ng data mula sa sensor ng temperatura at halumigmig gamit ang protokol na ito, at pagkatapos ay suriin ang grap sa data na ito sa isang web page.

Hakbang 1: ESP32 Pinout

Inilagay ko dito ang Pinout ng ESP32, na ginagamit namin sa aming halimbawa. Gayunpaman, nais kong linawin na ang proyekto ay gumagana rin sa ESP8266, at kahit na may parehong source code.

Hakbang 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Hakbang 3: MQTT

MQTT
MQTT

Ang MQTT ay isang machine-to-machine na protokol na ginamit sa IoT. Dinisenyo ito upang maging magaan at mabilis. Gumagamit ito ng isang mag-subscribe / mag-publish ng system, kung saan ang isang aparato ay "nag-subscribe" sa isang paksa na may tukoy na impormasyon na iyong interes, at pagkatapos ay tumatanggap ng impormasyon tuwing ang isang aparato ay naglathala ng data tungkol sa paksang ito.

Tulad ng isang programa ng server, kailangan ng MQTT ng software. Ito ay tinatawag na isang Broker. Sa partikular na kaso na ito, gagamitin namin ang Serbisyo ng Bluxus IoT ng IBM. Ang serbisyong ito ay libre para sa pagsubok ng endpoint.

Susunod, kailangan nating magkaroon ng isang cell phone o tablet na may panig ng Application, iyon ay, bilang isang client ng MQTT. Mayroon din kaming panig sa Device, na kung saan ay ang panig ng ESP na may isang termometro. Ipinapadala nito ang data ng temperatura at kahalumigmigan sa Bluemix, na pagkatapos ay ipinapadala ang impormasyong ito sa Application Side.

Hakbang 4: Assembly

Assembly
Assembly

Ang aming circuit ay binubuo ng isang 4.7k Ohms risistor sa pagitan ng 3.3v at ang data pin, kasama ang isang DHT22 na konektado sa GPIO4 ng isang ESP32 o NodeMCU. Sa gayon, ito ang ating Endpoint.

Hakbang 5: Diagram

Diagram
Diagram
Diagram
Diagram

Ipinapakita ko rito ang maraming paraan upang magtrabaho kasama ang MQTT Local Broker. Naglagay ako ng dalawang mga modelo ng diagram. Sa video, pinag-uusapan ko ang isang sitwasyon gamit ang isang Raspberry Pi upang buksan ang isang gate, halimbawa.

Sa imahe sa itaas, mayroon kaming unang arkitektura na gumagamit ng isang lokal na Broker na may pagtitiyaga, at isang pangalawang arkitektura sa ibaba na nakikipag-usap lamang sa broker sa ulap.

Tulad ng ipinakita sa diagram, ang aming sensor pagkatapos ay nagpapadala ng data ng temperatura at halumigmig sa IBM Watson. Mahalagang bigyang-diin na ang IBM Watson ay hindi nagsusulat ng data sa kasong ito, dahil ipinapakita lamang ito sa mga graph. Ito ay dahil hindi namin tutugunan ang anumang pagpapatakbo ng database sa halimbawa ngayon, ngunit ipinapahiwatig lamang ang pag-access sa pahina ng Quickstart (https://quickstart.internetofthings.ibmcloud.com/), na magpapakita ng katayuan ng Endpoint. Ang pamamaraan ay simple at gumagamit ng WiFi upang magpadala ng data.

Hakbang 6: Mga Aklatan

Sa Arduino IDE, pumunta sa menu ng Sketch -> Isama ang Library -> Pamahalaan ang Mga Aklatan…

Sa bubukas na screen, ipasok sa paghahanap na "DHT" at i-install ang lib "DHT sensor library"

Pagkatapos, i-type ang "PubSubClient" at i-install ang "PubSubClient" lib.

Hakbang 7: Temperatura at Kalabasa ng Pagbasa ng Library

Temperatura at Humidity Reading Library
Temperatura at Humidity Reading Library

Hakbang 8: MQTT Library

MQTT Library
MQTT Library

Hakbang 9: MQTT.ino

Sinisimula namin ang source code sa pamamagitan ng pag-check kung aling ESP ang ginagamit at pag-import ng kaukulang library at WiFi. Isinasama pa rin namin ang MQTT Libs at ang Temperature at Humidity Sensor.

// Verifica Qual ESP está sendo utilizado // e importa a lib e wifi correspondente #if tinukoy (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Susunod, tinukoy namin ang sumusunod: ang agwat sa pagitan ng mga pagsumite ng data, ang MQTT server na gagamitin, ang impormasyon sa pag-print sa tsart, at ang ID. Itinuro din namin kung paano dapat ang string na QUICK_START.

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

Sa hakbang na ito, tumutukoy kami ng isang natatanging ID. Sa halimbawang ito, ginagamit namin ang MAC Address ng aparato na ginagamit namin. Magsisilbi itong pagkakakilanlan sa site ng QuickStart. Dito, ikinonekta din namin ang Quickstart ID sa ID ng aming aparato.

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

Pagkatapos ay mai-configure namin ang MQTT at WiFi, pati na rin ang mga bagay at variable na kasangkot sa mga halaga ng temperatura at halumigmig.

// Cliente WiFi que o MQTT ay magagamit para sa isang koneksyonWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, isang porta // e o cliente ng 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 temperatura = 0; // Variável para guardarmos o valor da umidade float halumigmig = 0;

MQTT.ino - pag-set up

Sa Pag-setup, isasimula namin ang DHT, at kumokonekta sa WiFi network at MQTT server.

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

MQTT.ino - loop

Sa Loop, kinokolekta namin ang data ng sensor upang likhain ang Json na mailathala sa paksang inaasahan ng IBM Watson na makabuo ng grap.

void loop () {// Tempos agora em milisegundos matagal na ngayon = 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 ("I-publish ang mensahe:"); // Criamos o json que enviaremos para sa 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

Dito, mayroon kaming tungkulin na responsable para sa pagkonekta sa WiFi network.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Kumokonekta sa"); 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 establelecida habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("Konektado sa WiFi"); }

MQTT.ino - kumonektaMQTTServer

Sa hakbang na ito, ginagamit namin ang function na responsable para sa pagkonekta sa MQTT server.

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

MQTT.ino - readSensor

Ang pagbabasa ng data ng temperatura at kahalumigmigan ay tinukoy sa pagpapaandar na ito.

// Função responsável por realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (halaga)) {// Armazena o novo valor da temperatura temperatura = halaga; } // Faz a leitura da umidade halaga = dht.readHumidity (); // Se o valor for válido if (! Isnan (halaga)) {// Armazena o novo valor da umidade halumigmig = halaga; }}

MQTT.ino - createJsonString

Dito, mayroon kaming tungkulin na responsable para sa paglikha ng isang Json sa nabasang data.

// Função responsável por criar // um Json com os maging lidos String createJsonString () {String data = "{"; data + = "\" d / ": {"; data + = "\" temperatura / ":"; data + = String (temperatura); data + = ","; data + = "\" halumigmig / ":"; data + = String (halumigmig); data + = "}"; data + = "}"; ibalik ang data; }

Hakbang 10: Grapiko

Grapiko
Grapiko
Grapiko
Grapiko

Upang matingnan ang sensor graph, pumunta

sa

Sa patlang ng Device ID, ipasok ang DEVICE_ID na iyong tinukoy sa code.

- Mahalagang palitan ang Device ID na ito sa isang natatanging ID, ginamit lamang upang maiwasan ang salungatan sa data na ipinadala ng ibang tao.

Panghuli, tanggapin ang mga tuntunin at i-click ang Pumunta.

Sa proyektong ito, sinubukan namin ang aming Endpoint sa server ng IBM Watson. Tinitiyak nito na ang aming programa ng Arduino ay maayos na nakikipag-usap sa platform, at ang data na ipinapadala namin ay matatanggap nang maayos ng isang cloud service kung lumikha kami ng isang account.

Sa isang paparating na video sa seryeng ito, ipapakita ko sa iyo kung paano mag-log in sa IBM Watson, pati na rin magsulat sa databank ng ito o ibang serbisyo sa cloud, tulad ng Google, Amazon, bukod sa iba pa.

Hakbang 11: Mga File

I-download ang mga file:

PDF

INO

Inirerekumendang: