Բովանդակություն:

IBM Watson ESP32- ով որպես վերջնակետ ՝ 11 քայլ
IBM Watson ESP32- ով որպես վերջնակետ ՝ 11 քայլ

Video: IBM Watson ESP32- ով որպես վերջնակետ ՝ 11 քայլ

Video: IBM Watson ESP32- ով որպես վերջնակետ ՝ 11 քայլ
Video: IoT Project - Sending Sensor Readings from ESP32 to IBM Cloud/Watson 2024, Նոյեմբեր
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Այսօր այստեղ տեղադրում եմ շարքի առաջին տեսահոլովակը, թե ինչպես կարելի է վերջնական սարքը միացնել ESP32- ով, այնուհետև այն ուղարկել ամպային ծառայության: Այս կոնկրետ դրվագում ես ձեզ ցույց կտամ, թե ինչպես ուղարկել տեղեկատվություն DHT22 սենսորից ՝ օգտագործելով IQM Watson- ի MQTT արձանագրությունը:

Նախ մենք կներկայացնենք MQTT- ը, որը մեքենա-մեքենա արձանագրություն է, որն օգտագործվում է IoT- ում (Իրերի ինտերնետ): Մենք նաև ջերմաստիճանի և խոնավության տվիչից տվյալներ կուղարկենք այս արձանագրության միջոցով, այնուհետև կստուգենք այս տվյալների հետ գրաֆիկը վեբ էջում:

Քայլ 1: ESP32 Pinout

Ես այստեղ տեղադրեցի ESP32- ի Pinout- ը, որը մենք օգտագործում ենք մեր օրինակում: Այնուամենայնիվ, ես ուզում եմ հստակեցնել, որ նախագիծը նույնպես աշխատում է ESP8266- ի և նույնիսկ նույն աղբյուրի կոդի հետ:

Քայլ 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Քայլ 3: MQTT

MQTT
MQTT

MQTT- ը մեքենա-մեքենա արձանագրություն է, որն օգտագործվում է IoT- ում: Այն նախագծված էր թեթև և արագ: Այն օգտագործում է բաժանորդագրման/հրապարակման համակարգը, որտեղ սարքը «բաժանորդագրվում» է թեմային ՝ ձեզ հետաքրքրող կոնկրետ տեղեկատվությամբ, այնուհետև ստանում է տեղեկատվությունը, երբ սարքը հրապարակում է տվյալ թեմայի վերաբերյալ տվյալներ:

Սերվերային ծրագրի նման, MQTT- ին անհրաժեշտ է ծրագրային ապահովում: Սա կոչվում է միջնորդ: Այս կոնկրետ դեպքում մենք կօգտագործենք IBM- ի Bluemix IoT ծառայությունը: Այս ծառայությունը անվճար է վերջնական կետի փորձարկման համար:

Հաջորդը, մենք պետք է ունենանք բջջային հեռախոս կամ պլանշետ ՝ Դիմումի կողմով, այսինքն ՝ որպես MQTT հաճախորդ: Մենք ունենք նաև Սարքի կողմը, որը ESP կողմն է `ջերմաչափով: Սա ջերմաստիճանի և խոնավության տվյալները ուղարկում է Bluemix, որն այնուհետև ուղարկում է այս տեղեկությունները Դիմումի Կողքին:

Քայլ 4: Հավաքում

Ժողով
Ժողով

Մեր սխեման բաղկացած է 3.7 վ -ի և տվյալների քորոցի միջև 4.7k Ohms դիմադրիչից, ինչպես նաև DHT22- ից, որը միացված է ESP32- ի կամ NodeMCU- ի GPIO4- ին: Այսպիսով, սա մեր վերջնակետն է:

Քայլ 5: Դիագրամ

Դիագրամ
Դիագրամ
Դիագրամ
Դիագրամ

Ես այստեղ ցույց եմ տալիս MQTT Local Broker- ի հետ աշխատելու մի քանի եղանակներ: Ես տեղադրեցի դիագրամների երկու մոդել: Տեսահոլովակում ես խոսում եմ մի իրավիճակի մասին, որն օգտագործում է Raspberry Pi- ն, օրինակ, դարպաս բացելու համար:

Վերևի պատկերում մենք ունենք առաջին ճարտարապետությունը, որը համառությամբ օգտագործում է տեղական միջնորդին, և ներքևում գտնվող երկրորդ ճարտարապետությունը միայն շփվում է միջնորդի հետ ամպի մեջ:

Ինչպես ցույց է տրված դիագրամում, մեր տվիչը ջերմաստիճանի և խոնավության տվյալները ուղարկում է IBM Watson- ին: Կարևոր է ընդգծել, որ IBM Watson- ը տվյալ դեպքում տվյալներ չի գրում, քանի որ դրանք ցուցադրվում են միայն գծապատկերներում: Դա պայմանավորված է նրանով, որ այսօրվա օրինակում մենք չենք անդրադառնա տվյալների բազայի որևէ գործողության, այլ միայն մատնանշում ենք մուտքը Quickstart էջ (https://quickstart.internetofthings.ibmcloud.com/), որը կցուցադրի վերջնակետի կարգավիճակը: Սխեման պարզ է և օգտագործում է WiFi ՝ տվյալներ ուղարկելու համար:

Քայլ 6: Գրադարաններ

Arduino IDE- ում գնացեք «Էսքիզ» ընտրացանկ -> ներառել գրադարան -> կառավարել գրադարանները …

Բացվող էկրանին մուտքագրեք «DHT» որոնման մեջ և տեղադրեք lib «DHT տվիչների գրադարան»

Այնուհետև մուտքագրեք «PubSubClient» և տեղադրեք «PubSubClient» lib- ը:

Քայլ 7. peratերմաստիճանի և խոնավության ընթերցման գրադարան

Temերմաստիճանի եւ խոնավության ընթերցման գրադարան
Temերմաստիճանի եւ խոնավության ընթերցման գրադարան

Քայլ 8: MQTT գրադարան

MQTT գրադարան
MQTT գրադարան

Քայլ 9: MQTT.ino

Մենք սկսում ենք աղբյուրի կոդը ՝ ստուգելով, թե որն է օգտագործվում ESP- ը և ներմուծելով համապատասխան գրադարանը և WiFi- ը: Մենք դեռ ներառում ենք MQTT Libs- ը և ջերմաստիճանի և խոնավության ցուցիչը:

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

Հաջորդը, մենք սահմանում ենք հետևյալը `տվյալների ներկայացման, MQTT սերվերի միջև օգտագործվող միջակայքը, գծապատկերում տպված տեղեկատվությունը և ID- ն: Մենք նաև մատնանշեցինք, թե ինչպիսին պետք է լինի QUICK_START տողը:

// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID- ը կօգնի #սահմանել SSID «TesteESP» // Փոխարինել այն, ինչպես նաև օգտագործել #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_SER.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 մշտական / u200b / u200b ընթացակարգ ՝ որպես լարային QUICK_START = "d: quickstart: arduino:";

Այս քայլում մենք սահմանում ենք եզակի ID: Այս օրինակում մենք օգտագործում ենք մեր օգտագործած սարքի MAC հասցեն: Սա կծառայի որպես նույնականացում QuickStart կայքում: Այստեղ մենք նաև միացնում ենք Quickstart ID- ն մեր սարքի ID- ին:

// Չկա DEVICE_ID ձայնային փոխանցում ՝ ի id id único // Aqui nesse exemplo utilisamos o MAC Address // do dispitivo que estamos useizando // Servirá como identificaçoo no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do quickstart com o id do nosso // dispositivo const Լար CLIENT_ID = QUICK_START + DEVICE_ID;

Այնուհետև մենք կարգավորում ենք MQTT և WiFi, ինչպես նաև ջերմաստիճանի և խոնավության արժեքների հետ կապված օբյեկտներն ու փոփոխականները:

// Հաճախորդի WiFi, որը կամ MQTT- ն օգտագործում է conectarWiFiClient wifiClient- ը; // Cliente MQTT, passamos a url do server, porta // e կամ cliente 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 խոնավություն = 0;

MQTT.ino - կարգավորում

Setup- ում մենք նախաստորագրելու ենք DHT- ն և միանալու ենք WiFi ցանցին և MQTT սերվերին:

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos de rede WiFi setupWiFi (); // Conectamos ao սերվեր MQTT connectMQTTServer (); }

MQTT.ino - հանգույց

Loop- ում մենք հավաքում ենք տվիչների տվյալները ՝ ստեղծելու Json- ը, որը կհրապարակվի այն թեմայում, որը IBM Watson- ն ակնկալում է գրաֆիկի ստեղծումից:

void loop () {// Tempos agora em milisegundos երկար հիմա = 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 ("Հրապարակել հաղորդագրությունը."); // Criamos o json que enviaremos կամ 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

Այստեղ մենք ունենք WiFi ցանցին միանալու համար պատասխանատու գործառույթ:

// Funchão responsável for conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print («Միացում»); 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) {հետաձգում (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println («WiFi միացված է»); }

MQTT.ino - միացրեք MQTTS սերվեր

Այս քայլում մենք օգտագործում ենք MQTT սերվերին միանալու համար պատասխանատու գործառույթը:

// Ֆունկցիոնալ պատասխան ՝ կոնտակտային կամ սերվերի MQTTvoid connectMQTTServer () {Serial.println ("Միացում MQTT սերվերին …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println («կապված»); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Այս գործառույթում սահմանվում է ջերմաստիճանի և խոնավության տվյալների ընթերցումը:

// 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 (արժեքը)) {// Armazena o novo valor da temperatura temperature = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (արժեք)) {// Armazena o novo valor da umidade խոնավություն = արժեք; }}

MQTT.ino - ստեղծելJsonString

Այստեղ մենք ունենք գործառույթ, որը պատասխանատու է ընթերցված տվյալներով Json ստեղծելու համար:

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; տվյալներ+= "\" d / ": {"; տվյալներ+= "\" ջերմաստիճան / ":"; տվյալներ+= լարային (ջերմաստիճան); տվյալներ+= ","; տվյալներ+= "\" խոնավություն / ":"; տվյալներ+= Լար (խոնավություն); տվյալներ+= "}"; տվյալներ+= "}"; վերադարձնել տվյալները; }

Քայլ 10: Գրաֆիկական պատկեր

Գրաֆիկական
Գրաֆիկական
Գրաֆիկական
Գրաֆիկական

Սենսորների գրաֆիկը դիտելու համար գնացեք

դեպի

Սարքի ID դաշտում մուտքագրեք DEVICE_ID- ը, որը սահմանել եք ծածկագրում:

- Կարևոր է փոխել այս Սարքի ID- ն եզակի ID- ի, որն օգտագործվում է միայն այլ անձի ուղարկած տվյալների հետ կոնֆլիկտից խուսափելու համար:

Վերջապես, ընդունեք պայմանները և կտտացրեք Գնալ:

Այս նախագծում մենք փորձարկեցինք մեր Endpoint- ը IBM Watson սերվերի վրա: Սա երաշխավորում է, որ մեր Arduino ծրագիրը պատշաճ կերպով շփվում է հարթակի հետ, և որ մեր ուղարկած տվյալները սահուն կստանան ամպային ծառայության կողմից, եթե հաշիվ ստեղծենք:

Այս շարքի առաջիկա տեսահոլովակում ես ձեզ ցույց կտամ, թե ինչպես մուտք գործել IBM Watson, ինչպես նաև գրել այս կամ այլ ամպային ծառայության տվյալների բազայում, ինչպիսիք են Google- ը, Amazon- ը և այլն:

Քայլ 11: Ֆայլեր

Ներբեռնեք ֆայլերը.

PDF

ԻՆՈ

Խորհուրդ ենք տալիս: