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

من زينو نهار اليوم ØµØ Ø¹ÙŠØ¯ÙƒÙ… انشر الفيديو Øتى يراه كل الØ

من زينو نهار اليوم ØµØ Ø¹ÙŠØ¯ÙƒÙ… انشر الفيديو Øتى يراه كل الØ

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

Anonim

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

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

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

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

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

اللوازم:

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

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

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

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

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

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

للبدء ، قم بنسخ المخطط أدناه لإرفاق مستشعر الموجات فوق الصوتية بجهاز الكمبيوتر الريشة 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 nameconst char * SSID_PASS = "xxxxxxxx"؛ // ضع هنا كلمة مرور كلمة المرور الخاصة بك * TOKEN = "Assig_your_ubidots_token"؛ // ضع هنا TOKENconst char * DEVICE_LABEL = "التحكم في الحركة" ؛ // labelconst char * VARIABLE_LABEL = "distance"؛ // your labelconst char * USER_AGENT = "ESP8266"؛ const char * VERSION = "1.0"؛ const char * HTTPSERVER = "industrial.api.ubidots.com"؛ // Ubidots Business users // const char * HTTPSERVER = " things.ubidots.com ". // Ubidots educational usersint HTTPPORT = 80؛ / * Ultrasonic Sensor * / const int pwPin1 = 5؛ // دبوس PWM حيث يتم توصيل المستشعروحدة عميل العميل Ubi ؛ / ******************************** وظائف مساعدة *** **************************** // ** الحصول على طول الجسم @ تغيير متغير نص النوع char @ الرجوع للبيانات Len طول المتغير * / int dataLen (char * variable) {uint8_t dataLen = 0؛ لـ (int i = 0 ؛ i <= 250 ؛ i ++) {if (variable i! = ' 0') {dataLen ++؛ } آخر }} إرجاع dataLen؛} / ******************************** الوظائف الرئيسية ********* ********************** / void setup () {Serial.begin (115200)؛ / * يتصل بـ AP * / WiFi.begin (SSID_NAME ، SSID_PASS) ؛ بينما (WiFi.status ()! = WL_CONNECTED) {delay (500) ؛ Serial.print ( ".")؛ } pinMode (pwPin1، INPUT)؛ WiFi.setAutoReconnect (صحيح)؛ Serial.println (F ("WiFi wifi")) ؛ Serial.println (F ("IP address:"))؛ Serial.println (WiFi.localIP ())؛} void loop () {/ * يتم إرجاع قراءة المستشعر بالمليمترات ، إذا كنت ترغب في تحويل * فإنه إلى بوصة فقط قم بإنشاء متغير يشير إلى -> المسافة / 25.4 * / المسافة العائمة = pulseIn (pwPin1 ، عالية) ؛ sendToUbidots (DEVICE_LABEL ، VARIABLE_LABEL ، المسافة) ؛ delay (1000)؛} void sendToUbidots (const char * device_label، const char * variable_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 هو الدقة ؛ يتم نسخ قيمة float على str_val * / dtostrf (sensor_value ، 4 ، 2 ، str_val) ؛ / * إنشاء النص المراد إرساله إلى الطلب * / sprintf (body، "{"٪ s ":٪ s}"، variable_label، str_val)؛ / * ينشئ طلب HTTP ليكون POST * / sprintf (البيانات ، "POST /api/v1.6/devices/٪s" ، device_label) ؛ sprintf (البيانات ، "٪ s HTTP / 1.1 r n" ، البيانات) ؛ sprintf (البيانات ، "٪ sHost: things.ubidots.com r n" ، البيانات) ؛ sprintf (البيانات ، "٪ sUser-Agent:٪ s /٪ s r n" ، البيانات ، USER_AGENT ، الإصدار) ؛ sprintf (البيانات ، "٪ sX-Auth-Token:٪ s r n" ، البيانات ، الرمز المميز) ؛ sprintf (البيانات ، "٪ sConnection: close 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 (البيانات) ؛ } / * بينما يتوفر العميل ، اقرأ استجابة الخادم * / بينما (clientUbi.available ()) {char c = clientUbi.read ()؛ Serial.write (ج)؛ } / * ذاكرة مجانية * / free (بيانات) ؛ مجانا (الجسم). / * إيقاف العميل * / clientUbi.stop () ؛}

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

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

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

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

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

تكوين حدث Ubidots

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

  1. داخل الجهاز الحالي "التحكم في الحركة" ، قم بإنشاء متغير افتراضي جديد يسمى "المربعات" ، والذي سيحصل على 1 في كل مرة يتم فيها حساب وحدة جديدة.
  2. اذهب إلى إدارة الجهاز -> الأحداث، وانقر على أيقونة الجمع الأزرق في الزاوية العلوية اليمنى من الصفحة لإضافة حدث جديد.
  3. قم بتكوين الحدث الخاص بك بدءًا من "If مشغلات":

  • حدد متغير: "مسافه: بعد"
  • القيمة: القيمة (الافتراضية)
  • أقل من أو تساوي الحد الأقصى للمسافة المتوقعة} بين المستشعر والمربعات التي يمر بها * يستدعي تطبيقنا 500 مم
  • إلى عن على 0 دقيقة
  • حفظ

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

5. حدد "تعيين المتغير" كعمل.

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

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

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

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

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

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

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

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

احسب: مجموع

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

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

الخطوة 6: تكوينات لوحة المعلومات

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

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

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

كيف تريد أن ترى بياناتك ؟: خريطة

اختر نوع القطعة: خط الرسم البياني

أضف أداة: للسيطرة على الحركة

إضافة متغير: صناديق / ساعة

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

الخطوة 7: