جدول المحتويات:

IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة
IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة

فيديو: IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة

فيديو: IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة
فيديو: How to connect ESP32 with IBM Watson Cloud Platform 2024, يوليو
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

أنشر هنا اليوم أول فيديو لسلسلة حول كيفية تركيب جهاز نقطة النهاية باستخدام ESP32 ، ثم إرساله إلى خدمة سحابية. في هذه الحلقة المحددة ، سأوضح لك كيفية إرسال المعلومات من مستشعر DHT22 باستخدام بروتوكول MQTT لـ IBM Watson.

سنقدم أولاً بروتوكول MQTT ، وهو بروتوكول من آلة إلى آلة يُستخدم في إنترنت الأشياء (إنترنت الأشياء). سنرسل أيضًا بيانات من مستشعر درجة الحرارة والرطوبة باستخدام هذا البروتوكول ، ثم نتحقق من الرسم البياني بهذه البيانات على صفحة الويب.

الخطوة 1: ESP32 Pinout

لقد وضعت هنا Pinout الخاص بـ ESP32 ، والذي نستخدمه في مثالنا. ومع ذلك ، أريد أن أوضح أن المشروع يعمل أيضًا مع ESP8266 ، وحتى مع نفس كود المصدر.

الخطوة 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

الخطوة 3: MQTT

MQTT
MQTT

MQTT هو بروتوكول من آلة إلى آلة يستخدم في إنترنت الأشياء. تم تصميمه ليكون خفيف الوزن وسريع. يستخدم نظام الاشتراك / النشر ، حيث "يشترك" الجهاز في موضوع بالمعلومات المحددة التي تهمك ، ثم يتلقى المعلومات كلما قام الجهاز بنشر البيانات المتعلقة بهذا الموضوع.

مثل برنامج الخادم ، يحتاج MQTT إلى برنامج. يسمى هذا الوسيط. في هذه الحالة المحددة ، سوف نستخدم خدمة Bluemix IoT الخاصة بشركة IBM. هذه الخدمة مجانية لاختبار نقطة النهاية.

بعد ذلك ، نحتاج إلى هاتف خلوي أو جهاز لوحي مع جانب التطبيق ، أي كعميل MQTT. لدينا أيضًا جانب الجهاز ، وهو جانب المرساب الكهروستاتيكي المزود بميزان حرارة. يرسل هذا بيانات درجة الحرارة والرطوبة إلى Bluemix ، الذي يرسل بعد ذلك هذه المعلومات إلى جانب التطبيق.

الخطوة 4: التجميع

المجسم
المجسم

تتكون دائرتنا من مقاوم 4.7 كيلو أوم بين 3.3 فولت ودبوس البيانات ، بالإضافة إلى DHT22 متصل بـ GPIO4 من ESP32 أو NodeMCU. وبالتالي ، هذه هي نقطة النهاية لدينا.

الخطوة 5: الرسم التخطيطي

رسم بياني
رسم بياني
رسم بياني
رسم بياني

أعرض هنا عدة طرق للعمل مع وسيط MQTT المحلي. لقد وضعت نموذجين للرسم البياني. في الفيديو ، أتحدث عن موقف باستخدام Raspberry Pi لفتح بوابة ، على سبيل المثال.

في الصورة أعلاه ، لدينا الهيكل الأول الذي يستخدم وسيطًا محليًا مع استمرار ، وبنية ثانية أدناه تتواصل فقط مع الوسيط في السحابة.

كما هو موضح في الرسم التخطيطي ، يرسل جهاز الاستشعار الخاص بنا بيانات درجة الحرارة والرطوبة إلى IBM Watson. من المهم التأكيد على أن IBM Watson لا يكتب البيانات في هذه الحالة ، حيث يتم عرضها في الرسوم البيانية فقط. هذا لأننا لن نعالج أي عمليات قاعدة بيانات في مثال اليوم ، ولكننا نشير فقط إلى الوصول إلى صفحة Quickstart (https://quickstart.internetofthings.ibmcloud.com/) ، والتي ستعرض حالة نقطة النهاية. المخطط بسيط ويستخدم WiFi لإرسال البيانات.

الخطوة 6: المكتبات

في Arduino IDE ، انتقل إلى قائمة Sketch -> Include Library -> Manage Libraries…

على الشاشة التي تفتح ، أدخل البحث "DHT" وقم بتثبيت lib "مكتبة مستشعر DHT"

ثم اكتب "PubSubClient" وقم بتثبيت مكتبة "PubSubClient".

الخطوة 7: مكتبة قراءة درجة الحرارة والرطوبة

مكتبة قراءة درجة الحرارة والرطوبة
مكتبة قراءة درجة الحرارة والرطوبة

الخطوة 8: مكتبة MQTT

مكتبة MQTT
مكتبة MQTT

الخطوة 9: MQTT.ino

نبدأ الكود المصدري عن طريق التحقق من ESP الذي يتم استخدامه واستيراد المكتبة المقابلة و WiFi. ما زلنا نقوم بتضمين MQTT Libs ومستشعر درجة الحرارة والرطوبة.

// Verifica qual ESP está sendo utilizado // e importa a lib e wifi مراسلة #if محددة (ESP8266) #include # else # include #endif // Lib de MQTT #include // Lib do sensor de Temperatura e umidade #include

بعد ذلك ، نحدد ما يلي: الفاصل الزمني بين عمليات إرسال البيانات ، وخادم MQTT الذي سيتم استخدامه ، ومعلومات الطباعة على الرسم البياني ، والمعرف. أوضحنا أيضًا كيف يجب أن تكون السلسلة QUICK_START.

// Intervalo entre os envios # حدد 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_.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 Permanentecer como está const String QUICK_START = "d: quickstart: arduino:"؛

في هذه الخطوة ، نحدد معرفًا فريدًا. في هذا المثال ، نستخدم عنوان MAC للجهاز الذي نستخدمه. سيكون هذا بمثابة تعريف على موقع QuickStart. هنا ، نقوم أيضًا بتوصيل معرف Quickstart بمعرف الجهاز الخاص بنا.

// لا يوجد DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utilizamos o MAC Address // doحول 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 //positivo const String CLIENT_ID = QUICK_START + DEVICE_ID؛

ثم نقوم بتكوين MQTT و WiFi ، وكذلك الكائنات والمتغيرات المرتبطة بقيم درجة الحرارة والرطوبة.

// Cliente WiFi que o MQTT irá utilizar para se conectarWiFiClient wifiClient ؛ // Cliente MQTT ، passamos ، url do server ، a porta // e o client WiFi PubSubClient client (MQTT_SERVER ، 1883 ، wifiClient) ؛ // Tempo em que o último envio foi feito long lastPublishTime = 0 ؛ // Objeto que realiza a leitura da tematura e da umidade DHT dht (4، DHT22) ؛ // Variável para guardarmos o valor da temperatura درجة حرارة الطفو = 0 ؛ // Variável para guardarmos o valor da umidade float humidity = 0 ؛

MQTT.ino - الإعداد

في الإعداد ، سنقوم بتهيئة DHT ، والاتصال في شبكة WiFi وخادم MQTT.

إعداد باطل () {Serial.begin (115200) ؛ // Incializamos o dht dht.begin () ؛ // Conectamos à rede WiFi setupWiFi () ؛ // Conectamos ao server MQTT connectMQTTServer () ؛ }

MQTT.ino - حلقة

في الحلقة ، نجمع بيانات المستشعر لإنشاء Json التي سيتم نشرها في الموضوع الذي يتوقع IBM Watson إنشاء الرسم البياني.

حلقة فارغة () {// Tempos agora em milisegundos long now = millis () ؛ // Se o tempo desde o último envio for maior que o interalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now؛ // Fazemos a leitura da tematura e umidade readSensor () ؛ Serial.print ("نشر الرسالة:") ؛ // Criamos o json que enviaremos para o 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.

// Função responsável por 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 - connectMQTTServer

في هذه الخطوة ، نستخدم الوظيفة المسؤولة عن الاتصال بخادم MQTT.

// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Connecting to MQTT Server …")؛ // 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 (value)) {// Armazena o novo valor da temperatura temperature = value؛ } // قيمة Faz a leitura da umidade = dht.readHumidity () ؛ // Se o valor for válido if (! isnan (value)) {// Armazena o novo valor da umidade humidity = value؛ }}

MQTT.ino - createJsonString

هنا ، لدينا الوظيفة المسؤولة عن إنشاء Json مع قراءة البيانات.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"؛ البيانات + = "\" d / ": {" ؛ البيانات + = "\" درجة الحرارة / ":" ؛ البيانات + = سلسلة (درجة الحرارة) ؛ البيانات + = "،" ؛ البيانات + = "\" الرطوبة / ":"؛ البيانات + = الخيط (الرطوبة) ؛ البيانات + = "}" ؛ البيانات + = "}" ؛ عودة البيانات }

الخطوة 10: الرسم

الرسم
الرسم
الرسم
الرسم

لعرض الرسم البياني لجهاز الاستشعار ، انتقل

إلى

في حقل معرف الجهاز ، أدخل DEVICE_ID الذي حددته في الرمز.

- من المهم تغيير معرف الجهاز هذا إلى معرف فريد ، يُستخدم فقط لتجنب التعارض مع البيانات التي يرسلها شخص آخر.

أخيرًا ، اقبل الشروط وانقر فوق انتقال.

في هذا المشروع ، اختبرنا نقطة النهاية الخاصة بنا على خادم IBM Watson. هذا يضمن أن برنامج Arduino الخاص بنا يتواصل بشكل صحيح مع النظام الأساسي ، وأن البيانات التي نرسلها سيتم تلقيها بسلاسة من خلال خدمة سحابية إذا أنشأنا حسابًا.

في مقطع فيديو قادم في هذه السلسلة ، سأوضح لك كيفية تسجيل الدخول إلى IBM Watson ، وكذلك الكتابة في قاعدة بيانات هذه الخدمة السحابية أو خدمة سحابية أخرى ، مثل Google و Amazon وغيرهما.

الخطوة 11: الملفات

قم بتنزيل الملفات:

بي دي إف

انا لا

موصى به: