Სარჩევი:

IBM Watson ერთად ESP32 როგორც საბოლოო წერტილი: 11 ნაბიჯი
IBM Watson ერთად ESP32 როგორც საბოლოო წერტილი: 11 ნაბიჯი

ვიდეო: IBM Watson ერთად ESP32 როგორც საბოლოო წერტილი: 11 ნაბიჯი

ვიდეო: IBM Watson ერთად ESP32 როგორც საბოლოო წერტილი: 11 ნაბიჯი
ვიდეო: IBM Watson | Full Q&A | Oxford Union 2024, ივლისი
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

მე დღეს აქ გამოვაქვეყნებ სერიის პირველ ვიდეოს, თუ როგორ უნდა დაამონტაჟოთ Endpoint მოწყობილობა ESP32– ით და შემდეგ გავაგზავნოთ ღრუბლოვან სერვისზე. ამ კონკრეტულ ეპიზოდში მე გაჩვენებთ თუ როგორ უნდა გაგზავნოთ ინფორმაცია DHT22 სენსორიდან MQTT პროტოკოლის გამოყენებით IBM Watson– ისთვის.

ჩვენ პირველ რიგში წარმოგიდგენთ 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: შეკრება

შეკრება
შეკრება

ჩვენი წრე შედგება 4.7k Ohms რეზისტორისგან 3.3v და მონაცემთა pin შორის, ასევე DHT22, რომელიც დაკავშირებულია ESP32 ან NodeMCU– ის GPIO4– თან. ამრიგად, ეს არის ჩვენი საბოლოო წერტილი.

ნაბიჯი 5: დიაგრამა

დიაგრამა
დიაგრამა
დიაგრამა
დიაგრამა

მე აქ ვაჩვენებ MQTT ადგილობრივ ბროკერთან მუშაობის რამდენიმე გზას. დავდე დიაგრამის ორი მოდელი. ვიდეოში მე ვსაუბრობ სიტუაციაზე, როგორიცაა Raspberry Pi, მაგალითად, კარიბჭის გასახსნელად.

ზემოთ მოცემულ სურათზე ჩვენ გვაქვს პირველი არქიტექტურა, რომელიც იყენებს ადგილობრივ ბროკერს დაჟინებით, ხოლო მეორე არქიტექტურა, რომელიც მხოლოდ ღრუბელში არსებულ ბროკერთან ურთიერთობს.

როგორც დიაგრამაზეა ნაჩვენები, ჩვენი სენსორი შემდეგ აგზავნის ტემპერატურისა და ტენიანობის მონაცემებს IBM Watson– ს. მნიშვნელოვანია აღინიშნოს, რომ IBM Watson არ წერს მონაცემებს ამ შემთხვევაში, რადგან ის მხოლოდ გრაფიკებშია ნაჩვენები. ეს იმიტომ ხდება, რომ ჩვენ არ განვიხილავთ მონაცემთა ბაზის ნებისმიერ ოპერაციას დღევანდელ მაგალითში, არამედ მხოლოდ მიუთითებთ წვდომას Quickstart გვერდზე (https://quickstart.internetofthings.ibmcloud.com/), რომელიც აჩვენებს საბოლოო წერტილის სტატუსს. სქემა მარტივია და იყენებს WiFi მონაცემების გასაგზავნად.

ნაბიჯი 6: ბიბლიოთეკები

Arduino IDE– ში გადადით ესკიზის მენიუში -> ბიბლიოთეკის ჩართვა -> ბიბლიოთეკების მართვა…

ეკრანზე, რომელიც იხსნება, ჩაწერეთ ძიებაში "DHT" და დააინსტალირეთ lib "DHT სენსორების ბიბლიოთეკა"

შემდეგ ჩაწერეთ "PubSubClient" და დააინსტალირეთ "PubSubClient" lib.

ნაბიჯი 7: ტემპერატურისა და ტენიანობის საკითხავი ბიბლიოთეკა

ტემპერატურისა და ტენიანობის საკითხავი ბიბლიოთეკა
ტემპერატურისა და ტენიანობის საკითხავი ბიბლიოთეკა

ნაბიჯი 8: MQTT ბიბლიოთეკა

MQTT ბიბლიოთეკა
MQTT ბიბლიოთეკა

ნაბიჯი 9: MQTT.ino

ჩვენ ვიწყებთ წყაროს კოდის შემოწმებას, რომელი ESP გამოიყენება და შესაბამისი ბიბლიოთეკისა და WiFi- ის იმპორტირება. ჩვენ ჯერ კიდევ მოიცავს MQTT Libs და ტემპერატურის და ტენიანობის სენსორი.

// Verifica qual ESP está sendo utilizado // e import 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.

// ინტერვალი შესვლისთვის #განსაზღვრეთ INTERVAL 1000 // შეცვალეთ SSID– ით, რომ შეცვალოთ #განსაზღვრეთ SSID "TesteESP" // შეიცვალეთ ის, როგორც გამოაქვეყნეთ #განსაზღვრეთ PASSWORD "87654321" // სერვერი MQTT რაც შეიძლება მალე გამოიყენოთ #განსაზღვრეთ MQTT_S.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 მუდმივი დამხმარე პროგრამა არის სიმებიანი QUICK_START = "d: quickstart: arduino:";

ამ ეტაპზე ჩვენ განვსაზღვრავთ უნიკალურ პირადობის მოწმობას. ამ მაგალითში ჩვენ ვიყენებთ იმ მოწყობილობის MAC მისამართს, რომელსაც ჩვენ ვიყენებთ. ეს იქნება იდენტიფიკაცია QuickStart საიტზე. აქ ჩვენ ასევე ვუკავშირდებით Quickstart ID– ს ჩვენი მოწყობილობის ID– სთან.

// არ არის DEVICE_ID ხმის მიცემა id único // არ გამოვიყენო MAC მისამართი // გამოვიყენო ისარგებლეთ // გამოვიყენო ინფორმაცია // არ გამოვიყენო საიტები //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;

შემდეგ ჩვენ ვაკონფიგურირებთ MQTT და WiFi- ს, ასევე ობიექტებსა და ცვლადებს, რომლებიც ჩართულია ტემპერატურისა და ტენიანობის მნიშვნელობებში.

// კლიენტის WiFi, რომელიც არის MQTT და იყენებს conectarWiFiClient wifiClient; // კლიენტის MQTT, passamos url do სერვერი, პორტა // ე ან კლიენტი WiFi PubSubClient კლიენტი (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 - კონფიგურაცია

კონფიგურაციაში, ჩვენ ვიწყებთ DHT– ს და დავუკავშირდებით WiFi ქსელსა და MQTT სერვერს.

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

MQTT.ino - მარყუჟი

მარყუჟში, ჩვენ ვაგროვებთ სენსორის მონაცემებს 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 ან სერვერის mqtt სიმებიანი 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 ქსელთან დაკავშირებაზე.

// გაეცით პასუხი 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) {delay (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

ამ ფუნქციაში განისაზღვრება ტემპერატურისა და ტენიანობის მონაცემების კითხვა.

// Funchã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 ტემპერატურა = მნიშვნელობა; } // Faz a leitura da umidade მნიშვნელობა = dht.readHumidity (); // Se o valor for válido if (! Isnan (მნიშვნელობა)) {// Armazena o novo valor da umidade ტენიანობა = მნიშვნელობა; }}

MQTT.ino - createJsonString

აქ, ჩვენ გვაქვს ფუნქცია პასუხისმგებელი Json– ის წაკითხული მონაცემებით.

// Funchão responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; მონაცემები+= "\" d / ": {"; მონაცემები+= "\" ტემპერატურა / ":"; მონაცემები+= სიმებიანი (ტემპერატურა); მონაცემები+= ","; მონაცემები+= "\" ტენიანობა / ":"; მონაცემები+= სიმებიანი (ტენიანობა); მონაცემები+= "}"; მონაცემები+= "}"; მონაცემების დაბრუნება; }

ნაბიჯი 10: გრაფიკა

გრაფიკული
გრაფიკული
გრაფიკული
გრაფიკული

სენსორის გრაფიკის სანახავად, წადით

quickstart.internetofthings.ibmcloud.com

მოწყობილობის ID ველში შეიყვანეთ DEVICE_ID, რომელიც თქვენ განსაზღვრეთ კოდში.

- მნიშვნელოვანია ამ მოწყობილობის ID- ს შეცვლა უნიკალურ პირადობის მოწმობით, რომელიც გამოიყენება მხოლოდ სხვა პირის მიერ გაგზავნილ მონაცემებთან კონფლიქტის თავიდან ასაცილებლად.

დაბოლოს, მიიღეთ პირობები და დააწკაპუნეთ გადასვლაზე.

ამ პროექტში ჩვენ შევამოწმეთ ჩვენი Endpoint IBM Watson სერვერზე. ეს უზრუნველყოფს, რომ ჩვენი Arduino პროგრამა სათანადოდ დაუკავშირდეს პლატფორმას და რომ ჩვენ მიერ გაგზავნილ მონაცემებს შეუფერხებლად მიიღებს ღრუბლოვანი სერვისი, თუ შევქმნით ანგარიშს.

ამ სერიის უახლოეს ვიდეოში მე გაჩვენებთ როგორ შეხვიდეთ IBM Watson– ში, ასევე ჩაწეროთ ამა თუ იმ ღრუბლოვანი სერვისის მონაცემთა ბანკში, როგორიცაა Google, Amazon და სხვა.

ნაბიჯი 11: ფაილები

ჩამოტვირთეთ ფაილები:

PDF

ინო

გირჩევთ: