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

كيفية بناء نظام كشف الحركة باستخدام Arduino: 7 خطوات
كيفية بناء نظام كشف الحركة باستخدام Arduino: 7 خطوات

فيديو: كيفية بناء نظام كشف الحركة باستخدام Arduino: 7 خطوات

فيديو: كيفية بناء نظام كشف الحركة باستخدام Arduino: 7 خطوات
فيديو: Ultimate Fire Safety Hack: Make Your Own Arduino Fire Detection and Extinguishing Device 2024, يوليو
Anonim
كيفية بناء نظام كشف الحركة باستخدام Arduino
كيفية بناء نظام كشف الحركة باستخدام Arduino

قم ببناء عداد إنتاج للحركة والوجود باستخدام Feather HUZZAH المبرمج مع Arduino والمدعوم من Ubidots.

يمكن أن يكون الكشف الفعال عن الحركة المادية والوجود في المنازل الذكية والتصنيع الذكي مفيدًا جدًا في التطبيقات التي تتراوح بين حلول الحياة بمساعدة البيئة المسنة (AAL) أو نظام عد الإنتاج الذي يغذي MES أكبر. تشمل التطبيقات الأخرى لكشف الحركة والتواجد على سبيل المثال لا الحصر:

  1. أتمتة الأبواب والبوابات
  2. أجهزة استشعار وقوف السيارات لتحديد الأماكن الخالية
  3. مراقبة مستوى الخزان عن بعد
  4. منازل ذكية ومرافق للإضاءة والأمن
  5. كشف الوحدات وعدها في خطوط النقل
  6. كشف العلامات على المواد المطبوعة
  7. الكشف عن السوائل داخل إمالة الكرتون والبلاستيك والورق
  8. كشف المسافة
  9. عدادات الناس

في حين أن هناك العديد من التطبيقات للوجود والحركة ، هناك عدد متساوٍ من المستشعرات لجمع البيانات ، مثل أجهزة الاستشعار السعوية ، والاستقرائية ، والكهروضوئية ، والموجات فوق الصوتية. اعتمادًا على التكاليف والظروف البيئية ومتطلبات الدقة ، يجب على المرء اختيار أفضل الأجهزة المناسبة للبيئة ومتطلبات التطبيق.

في هذا البرنامج التعليمي ، سنركز على بناء عداد إنتاج في الوقت الفعلي ؛ سيحسب التطبيق كل وحدة تمر على حزام ناقل. سنستخدم Arduino IDE لبرمجة Feather HUZZAH ESP8266 ، مستشعر بالموجات فوق الصوتية ، و Ubidots لتطوير تطبيقنا وعرض لوحة معلومات IoT الخاصة بنا.

الخطوة 1: المتطلبات

  1. ريشة هزة مع ESP8266MB7389-100
  2. أجهزة الاستشعار بالموجات فوق الصوتية
  3. Arduino IDE 1.8.2 أو أعلى
  4. حساب Ubidots - أو ترخيص STEM

الخطوة 2: الإعداد

  • أنا إعداد الأجهزة
  • II. إعداد البرامج الثابتة
  • ثالثا. تطوير تطبيقات Ubidots (الأحداث والمتغيرات ولوحات المعلومات)

الخطوة 3: إعداد الجهاز

إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة

يعد مستشعر الموجات فوق الصوتية MB7389-100 خيارًا منخفض التكلفة للتطبيقات الصناعية ذات متطلبات استهلاك طاقة واسعة النطاق ومنخفضة في ظروف الطقس الصعبة بفضل تصنيف IPv67 الخاص به.

للبدء ، قم بعكس المخطط أدناه لتوصيل المستشعر بالموجات فوق الصوتية بجهاز Feather HUZZAH ESP8266.

ملاحظة: يمكن أن تأخذ قراءة المستشعر قراءات تمثيلية أو PWM ؛ أدناه سنشرح الإعداد لقراءة PWM ، للحصول على معلومات إضافية ، يرجى الاطلاع على الأمثلة الموضحة أعلاه.

[اختياريًا] ضع وحدة التحكم الدقيقة وأجهزة الاستشعار داخل علبة de IP67 لحمايتها من الغبار والماء والعوامل البيئية الأخرى المهددة. تبدو الحالة القياسية مماثلة لتلك الموضحة في الصور أعلاه.

الخطوة 4: إعداد البرنامج الثابت

إعداد البرامج الثابتة
إعداد البرامج الثابتة
إعداد البرامج الثابتة
إعداد البرامج الثابتة

أولاً ، يجب عليك تثبيت Feather Huzzah في Arduino IDE وتجميع الكود. تذكر التحقق من هذا الإعداد عن طريق إجراء اختبار وامض بسيط. لمزيد من المعلومات حول توصيل جهاز Feather الخاص بك ، راجع دليل إعداد الأجهزة المفيد هذا.

لإرسال بيانات المستشعر إلى Ubidots IoT Development Platform ، انسخ والصق الكود أدناه في Arduino IDE. تذكر تعيين اسم شبكة Wi-Fi وكلمة المرور ورمز حساب Ubidots الخاص بك حيث يشار إليه في الرمز.

/ ******************************** تضم المكتبات *************** ****************/#يشمل /****************************** ** الثوابت والكائنات ********************************* // * Ubidots * / const char * SSID_NAME = "xxxxxxxx" ؛ // ضع هنا اسم SSID الخاص بك char * SSID_PASS = "xxxxxxxx" ؛ // ضع هنا كلمة المرور الخاصة بكconst char * TOKEN = "Assig_your_ubidots_token" ؛ // ضع هنا TOKENconst char * DEVICE_LABEL = "التحكم في الحركة" ؛ // تسمية جهازكconst char * VARIABLE_LABEL = "المسافة" ؛ // التسمية المتغيرة الخاصة بك حرف * USER_AGENT = "ESP8266" ؛ const char * VERSION = "1.0" ؛ const char * HTTPSERVER = "industrial.api.ubidots.com" ؛ // مستخدمي Ubidots Business // const char * HTTPSERVER = " Things.ubidots.com "؛ // Ubidots التعليمية للمستخدمين في HTTPPORT = 80 ؛ / * مستشعر الموجات فوق الصوتية * / const int pwPin1 = 5 ؛ // دبوس PWM حيث يتم توصيل المستشعر بعميل WiFiClientUbi ؛ / ********************************** وظائف مألوفة *** ****************************** // ** يحصل على طول الجسمarg متغير الجسم من النوع charreturn dataLen the طول المتغير * / int dataLen (char * variable) {uint8_t dataLen = 0 ؛ لـ (int i = 0 ؛ i مسافة / 25.4 * / مسافة تعويم = pulseIn (pwPin1 ، HIGH) ؛ sendToUbidots (DEVICE_LABEL ، VARIABLE_LABEL ، مسافة) ؛ تأخير (1000) ؛} إرسال باطل إلى Ubidots (حرف ثابت * device_label ، حرف ثابت * متغير ، float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150)؛ char * data = (char *) malloc (sizeof (char) * 300)؛ / * مساحة لتخزين القيم المراد إرسالها * / char str_val [10]؛ / * ---- يحول قيم المستشعرات إلى نوع char ----- * / / * 4 هو عرض أدنى ، 2 دقة ؛ يتم نسخ قيمة الطفو إلى str_val * / dtostrf (sensor_value، 4، 2، str_val)؛ / * يبني الجسم ليتم إرساله إلى الطلب * / sprintf (body، "{"٪ s / ":٪ s}"، variable_label، str_val)؛ / * يبني HTTP طلب أن يكون POST * / sprintf (data، "POST /api/v1.6/devices/٪s"، device_label) ؛ sprintf (بيانات ، "٪ s HTTP / 1.1 / r / n" ، بيانات) ؛ sprintf (بيانات ، "٪ sHost: things.ubidots.com / r / n"، data)؛ sprintf (بيانات، "٪ sUser-Agent:٪ s /٪ s / r / n"، data، USER_AGENT، VERSION)؛ sprintf (بيانات ، "٪ sX-Auth-Token:٪ s / r / n"، data، TOKEN)؛ العدو السريع f (البيانات ، "٪ s الاتصال: إغلاق / r / n" ، البيانات) ؛ sprintf (data، "٪ sContent-Type: application / json / r / n"، data)؛ sprintf (data، "٪ sContent-Length:٪ d / r / n / r / n"، data، dataLen (body))؛ sprintf (البيانات ، "٪ s٪ s / r / n / r / n" ، البيانات ، الجسم) ؛ / * الاتصال الأولي * / clientUbi.connect (HTTPSERVER ، HTTPPORT) ؛ / * تحقق من اتصال العميل * / if (clientUbi.connect (HTTPSERVER، HTTPPORT)) {Serial.println (F ("Posting your variables:"))؛ Serial.println (بيانات) ؛ / * إرسال طلب HTTP * / clientUbi.print (بيانات) ؛ } / * أثناء توفر العميل ، اقرأ استجابة الخادم * / while (clientUbi.available ()) {char c = clientUbi.read () ؛ Serial.write (ج) ؛ } / * ذاكرة خالية * / خالية (بيانات) ؛ حر (جسم) ؛ / * أوقف العميل * / clientUbi.stop () ؛}

ProTip: يمكنك التحقق مما إذا كان جهازك متصلاً بشكل صحيح عن طريق فتح الشاشة التسلسلية في Arduino IDE.

يمكنك التحقق من إنشاء جهاز في الواجهة الخلفية لـ Ubidots من خلال مشاهدته في حسابك إدارة الأجهزة -> الأجهزة.

بالنقر على جهازك ، ستجد متغيرًا يسمى "مسافة" حيث يتم تخزين قراءات المستشعر. تم تعيين هذا الاسم في الكود الذي لصقته للتو في Arduino IDE. إذا كنت ترغب في تعديل المتغيرات التلقائية الخاصة بك ، فيرجى القيام بذلك عن طريق تحرير بطاقة الجهاز أو عن طريق وميض رمز محدث باستخدام التسمية المتغيرة الصحيحة للتطبيق الخاص بك.

مع توصيل Feather HUZZAH ESP8266 وإبلاغ البيانات إلى Ubidots ، حان الوقت الآن لإنشاء التطبيق باستخدام تكوين تطبيق خالٍ من الرموز مصمم بعناية من Ubidots.

الخطوة 5: تطوير تطبيقات Ubidots

تطوير تطبيقات Ubidots
تطوير تطبيقات Ubidots
تطوير تطبيقات Ubidots
تطوير تطبيقات Ubidots
تطوير تطبيقات Ubidots
تطوير تطبيقات Ubidots

تكوين حدث Ubidots

القراءات الحالية التي نرسلها إلى Ubidots هي مدخلات عن بعد. لترجمة هذه القراءات إلى المخرجات المرغوبة التي نريدها - الوحدات المحسوبة - يجب أن ننشئ حدثًا باتباع الخطوات التالية:

  1. داخل جهاز "التحكم في الحركة" الحالي ، أنشئ متغيرًا افتراضيًا جديدًا يسمى "مربعات" ، والذي سيحصل على 1 في كل مرة يتم فيها حساب وحدة جديدة.
  2. انتقل إلى إدارة الأجهزة -> الأحداث ، وانقر فوق رمز علامة الجمع الأزرق في الزاوية العلوية اليمنى من الصفحة لإضافة حدث جديد.
  3. هيئ الحدث بدءًا من "If triggers":
  • حدد متغيرًا: "مسافة"
  • القيمة: القيمة (الافتراضية)
  • أقل من أو تساوي [الحد الأقصى للمسافة المتوقعة} بين المستشعر والصناديق التي تمر بها * يستدعي تطبيقنا 500 مم
  • لمدة 0 دقيقة
  • يحفظ

4. بمجرد تهيئة المشغلات وفقًا لمواصفات التطبيق الخاص بك ، انقر فوق رمز "زائد" البرتقالي في الزاوية العلوية اليمنى لإضافة إجراء شرطي.

5. حدد "تعيين متغير" كإجراء.

6. بعد ذلك ، اختر "مربعات" المتغير الافتراضي الذي تم إنشاؤه مسبقًا والقيمة "1".

7. حفظ التغييرات. إذا تم إعداد الحدث بشكل صحيح ، فسيتم إرسال "1" في كل مرة تكون المسافة بين المستشعر والوحدة أطول من الحد المشار إليه ، مما يشير إلى عدم وجود كائن بالقرب - ويجب حساب وحدة جديدة مرت للتو.

في بطاقة الجهاز الخاصة بالريشة ، ستجد أن "المربعات" المتغيرة حيث يتم إرسال "1" في أي وقت يتم استشعار وجود الوحدة فيه.

مفيدة بشكل خاص لأحزمة النقل الصناعية والوحدة التي تعد هذا النموذج الأولي يمكن تخصيصها لتناسب بيئات أو أجهزة مختلفة ببساطة في الترميز أو تطوير التطبيقات الخاصة بك.

8. تصور عدد الوحدات التي تم استشعارها (أو مرات اكتشاف كائن ما) الآن ، باستخدام متغير "المربعات" ، سنقوم بإنشاء متغير جديد للنافذة المتداول لتلخيص إجمالي كمية القراءات الواردة من "المربعات" المتغيرة في بريد عشوائي محدد (دقائق ، ساعات ، أيام ، أسابيع ، إلخ). لتنفيذ هذا التطوير ، اتبع هذه الخطوات البسيطة:

قم بتعيين بيانات الاعتماد التالية لمتغير النافذة المتداول الجديد

حدد جهازًا: التحكم في الحركة (أو اسم الجهاز الذي ترسل بياناتك)

حدد متغيرًا: مربعات

احسب: المجموع

كل: "1" ساعة (أو حسب طلباتك)

الآن قم بتعيين اسم للمتغير الجديد يشير إلى عدد المربعات (أو الحركات) المحسوبة في ساعة ، تمامًا مثل "مربعات / ساعة" أو "وحدات / ساعة.

الخطوة 6: تكوينات لوحة القيادة

تكوينات لوحة القيادة
تكوينات لوحة القيادة

أخيرًا ، قم بإنشاء لوحة معلومات لعرض عدد الوحدات المحسوسة.

انتقل إلى إدارة الأجهزة -> لوحات المعلومات وأضف عنصر واجهة مستخدم جديد. ستعرض هذه الأداة عدد المربعات التي تم عدها اليوم مقسمة حسب الساعة.

قم بتعيين بيانات الاعتماد التالية إلى عنصر واجهة المستخدم الجديد الخاص بك لتصور العدد الخاص بك.

كيف تريد أن ترى بياناتك ؟: الرسم البياني

حدد نوع عنصر واجهة المستخدم: مخطط خطي

إضافة جهاز: التحكم في الحركة

أضف متغير: مربعات / ساعة

ينهي. ومع هذا التطوير النهائي للوحة القيادة - اكتمل تطبيقك ولديك الآن نظام فعال وفعال للكشف عن الحركة والوجود. إليك نظرة أخيرة على نتائجنا.

موصى به: