جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:54
أنشر هنا اليوم أول فيديو لسلسلة حول كيفية تركيب جهاز نقطة النهاية باستخدام ESP32 ، ثم إرساله إلى خدمة سحابية. في هذه الحلقة المحددة ، سأوضح لك كيفية إرسال المعلومات من مستشعر DHT22 باستخدام بروتوكول MQTT لـ IBM Watson.
سنقدم أولاً بروتوكول MQTT ، وهو بروتوكول من آلة إلى آلة يُستخدم في إنترنت الأشياء (إنترنت الأشياء). سنرسل أيضًا بيانات من مستشعر درجة الحرارة والرطوبة باستخدام هذا البروتوكول ، ثم نتحقق من الرسم البياني بهذه البيانات على صفحة الويب.
الخطوة 1: ESP32 Pinout
لقد وضعت هنا Pinout الخاص بـ ESP32 ، والذي نستخدمه في مثالنا. ومع ذلك ، أريد أن أوضح أن المشروع يعمل أيضًا مع ESP8266 ، وحتى مع نفس كود المصدر.
الخطوة 2: NodeMCU Pinout
الخطوة 3: 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
الخطوة 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: الملفات
قم بتنزيل الملفات:
بي دي إف
انا لا
موصى به:
مشروع ممتع لعطلة نهاية الأسبوع ، FishCam !: 4 خطوات
مشروع ممتع لعطلة نهاية الأسبوع ، FishCam !: لقد تحطمت طائرتى بدون طيار قبل شهرين والشيء المعقول الوحيد الذي يمكنني فعله هو تفكيكها. اتضح أن لدي مجموعة من أفكار المشاريع مع ما يمكنني فعله. لم أحصل على أي شيء ولكن عندما ذهبنا إلى مزرعتنا كانت لدي فكرة. الكاميرا لديها W
طاولة نهاية مكعب إنفينيتي تفاعلية للصوت LED: 6 خطوات (مع صور)
طاولة نهاية مكعب إنفينيتي تفاعلية للصوت LED: واو! قف! يا له من تأثير رائع! - هذه بعض الأشياء التي ستسمعها عند إكمال الدليل. مكعب لا متناهي جميل ومنوم ومثير للانحناء تمامًا للصوت ومتفاعل للصوت. هذا مشروع لحام متواضع ومتقدم ، استغرق مني حوالي 12 رجلًا
مستجيب الانحناء: مستجيب نهاية الروبوت لألواح الانحناء: 6 خطوات
مستجيب الانحناء: مستجيب نهاية الروبوت لألواح الانحناء: الهدف: تشكيل وتثبيت العناصر النشطة ذات الانحناء العالي على عنصر / إطار هيكلي أساسي / ثانوي. أعضاء المجموعة: باباسولا توماس ، نيلوفار إيماني ، بلانت سونجخرو
IoT Hydroponics - استخدام Watson الخاص بشركة IBM لقياسات PH و EC: 7 خطوات (بالصور)
IoT Hydroponics - استخدام Watson من IBM لقياسات PH و EC: سيوضح هذا التوجيه كيفية مراقبة EC ، ودرجة الحموضة ، ودرجة حرارة إعداد الزراعة المائية وتحميل البيانات إلى خدمة Watson من IBM. Watson مجاني للبدء به. هناك خطط مدفوعة ، لكن الخطة المجانية أكثر من كافية لهذا المشروع
بادئ نهاية العالم: 8 خطوات
نهاية العالم البادئ: أربعة مفاتيح عندما يتم إلقاؤها في التسلسل الصحيح تسبب صوت صفارة. الضوضاء المزعجة المستمرة الناتجة تجعل الناس يتمنون أن ينتهي العالم. ويحصلون على ما يتمناه الناس. بعض الأحيان