IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة
IBM Watson مع ESP32 كنقطة نهاية: 11 خطوة
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: الملفات

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

بي دي إف

انا لا

موصى به: