فهرست مطالب:

نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو: 7 مرحله
نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو: 7 مرحله

تصویری: نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو: 7 مرحله

تصویری: نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو: 7 مرحله
تصویری: پروژه آردوینو - هشدار تشخیص آتش به کمک آردوینو 2024, نوامبر
Anonim
نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو
نحوه ایجاد یک سیستم تشخیص حرکت با آردوینو

با استفاده از Feather HUZZAH برنامه ریزی شده با آردوینو و قدرتمند Ubidots ، یک شمارنده تولید حرکت و حضور بسازید.

حرکت فیزیکی م andثر و تشخیص حضور در خانه های هوشمند و تولید هوشمند می تواند در برنامه های کاربردی اعم از راه حل های مسن محیطی (AAL) یا سیستم شمارش تولید که از MES بزرگتر تغذیه می کند بسیار مفید باشد. سایر برنامه های کاربردی برای تشخیص حرکت و حضور عبارتند از:

  1. اتوماسیون در و دروازه
  2. سنسورهای پارک برای تعیین نقاط رایگان
  3. نظارت بر سطح مخزن از راه دور
  4. خانه ها و امکانات هوشمند برای روشنایی و امنیت
  5. تشخیص و شمارش واحدها در خطوط نقاله
  6. علامت گذاری تشخیص روی مواد چاپ شده
  7. تشخیص مایعات در داخل مقوا ، پلاستیک و کاغذ
  8. تشخیص فاصله
  9. مردم مقابله می کنند

در حالی که کاربردهای زیادی برای حضور و حرکت وجود دارد ، به همان اندازه سنسورهای زیادی برای جمع آوری داده ها مانند سنسورهای خازنی ، القایی ، فوتوالکتریک و اولتراسونیک وجود دارد. بسته به هزینه ها ، شرایط محیطی و الزامات دقت ، باید بهترین سخت افزار مناسب برای محیط و الزامات برنامه را انتخاب کرد.

برای این آموزش ، ما روی ساخت یک پیشخوان تولید در زمان واقعی تمرکز می کنیم. برنامه هر واحد عبور از روی یک تسمه نقاله را شمارش می کند. ما از Arduino IDE برای برنامه ریزی Feather HUZZAH ESP8266 ، سنسور اولتراسونیک و Ubidots برای توسعه برنامه و نمایش داشبورد اینترنت اشیا استفاده خواهیم کرد.

مرحله 1: الزامات

  1. پر HUZZAH با ESP8266MB7389-100
  2. سنسور اولتراسونیک
  3. Arduino IDE 1.8.2 یا بالاتر
  4. حساب Ubidots یا مجوز STEM

مرحله 2: راه اندازی

  • I Hardware Setup
  • II راه اندازی سیستم عامل
  • سوم توسعه برنامه Ubidots (رویدادها ، متغیرها و داشبورد)

مرحله 3: راه اندازی سخت افزار

راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار

سنسور التراسونیک MB7389-100 یک گزینه کم هزینه برای برنامه های صنعتی با نیازهای وسیع و کم مصرف در شرایط آب و هوایی چالش برانگیز است که به دلیل دارا بودن رتبه IPv67 است.

برای شروع ، نمودار زیر را آینه کنید تا سنسور اولتراسونیک را به Feather HUZZAH ESP8266 وصل کنید.

توجه: قرائت سنسور می تواند به عنوان خوانش آنالوگ یا PWM در نظر گرفته شود. در زیر ما قصد داریم تنظیمات مربوط به خواندن PWM را توضیح دهیم ، برای اطلاعات بیشتر لطفاً مثالهای نشان داده شده در بالا را ببینید.

[اختیاری] میکروکنترلر و سنسورها را در داخل قاب IP67 قرار دهید تا از گرد و غبار ، آب و سایر عوامل محیطی تهدید کننده محافظت شود. قاب استاندارد شبیه به موردی است که در عکسهای بالا نشان داده شده است.

مرحله 4: راه اندازی سیستم عامل

راه اندازی سیستم عامل
راه اندازی سیستم عامل
راه اندازی سیستم عامل
راه اندازی سیستم عامل

ابتدا باید Feather Huzzah را در Arduino IDE نصب کرده و کد را کامپایل کنید. به یاد داشته باشید که این تنظیم را با انجام یک آزمایش پلک زدن ساده تأیید کنید. برای اطلاعات بیشتر در مورد اتصال دستگاه Feather خود ، این راهنمای راه اندازی سخت افزار مفید را بررسی کنید.

برای ارسال داده های حسگر به بستر توسعه Ubidots IoT ، کد زیر را در IDE Arduino کپی و جایگذاری کنید. به یاد داشته باشید که نام و رمز شبکه Wi-Fi و رمز Ubidots خود را در جایی که در کد مشخص شده است اختصاص دهید.

/****************************** کتابخانه ها شامل *************** ****************/#عبارتند از /****************************** ** ثابت ها و اشیاء **************************** //*Ubidots*/const char*SSID_NAME = "xxxxxxxx" ؛ // اینجا نام SSID خود را char char* SSID_PASS = "xxxxxxxx"؛ // گذرواژه خود را char* TOKEN = "Assig_your_ubidots_token" در اینجا قرار دهید؛ // TOKENconst char* DEVICE_LABEL = "motion-control" را در اینجا قرار دهید؛ // دستگاه شما labelconst char* VARIABLE_LABEL = "فاصله" ؛ // متغیر شما labelconst char* USER_AGENT = "ESP8266"؛ const char* VERSION = "1.0"؛ const char* HTTPSERVER = "industrial.api.ubidots.com"؛ // کاربران Ubidots Business // const char* HTTPSERVER = " things.ubidots.com "؛ // Ubidots Educational usersint HTTPPORT = 80؛/ * Ultrasonic Sensor */const int pwPin1 = 5؛ // پین PWM که سنسور در آن وصل شده است ************************** ** ** طول بدنهarg را بدست می آورد بدنه نوع charreturn data طول متغیر*/int dataLen (متغیر char*) {uint8_t dataLen = 0؛ برای (int i = 0 ؛ i distance / 25.4* / distance float = pulseIn (pwPin1 ، HIGH) ؛ sendToUbidots (DEVICE_LABEL ، VARIABLE_LABEL ، فاصله) ؛ تأخیر (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 دقت است ؛ مقدار شناور در str_val* / dtostrf کپی می شود (sensor_value ، 4 ، 2 ، str_val) ؛ /* بدنه را برای ارسال به درخواست* /sprintf (بدن ، "{"٪ s / ":٪ s}" ، variable_label ، str_val) می سازد ؛ /* HTTP را می سازد درخواست POST */sprintf (داده ها ، "POST /api/v1.6/devices/٪s" ، device_label) ؛ sprintf (data ، "٪ s HTTP/1.1 / r / n" ، data) ؛ sprintf (data ، "٪ sHost: things.ubidots.com / r / n" ، داده) ؛ sprintf (داده ، "٪ sUser-Agent:٪ s/٪ s / r / n" ، داده ، USER_AGENT ، VERSION) ؛ sprintf (data ، "٪ sX-Auth-Token:٪ s / r / n" ، داده ، TOKEN) ؛ دوی سرعت f (داده ، "٪ sConnection: close / r / n" ، داده)؛ sprintf (data، "٪ sContent-Type: application/json / r / n"، data)؛ sprintf (data، "٪ sContent-Length:٪ d / r / n / r / n"، data، dataLen (بدنه))؛ sprintf (داده ، "٪ s٪ s / r / n / r / n" ، داده ، بدنه) ؛ / * اتصال اولیه */ clientUbi.connect (HTTPSERVER ، HTTPPORT) ؛ / * اتصال مشتری را تأیید کنید */ if (clientUbi.connect (HTTPSERVER، HTTPPORT)) {Serial.println (F ("ارسال متغیرهای شما:")) ؛ Serial.println (داده) ؛ / * ارسال درخواست HTTP */ clientUbi.print (داده) ؛ } / * در حالی که سرویس گیرنده در دسترس است پاسخ سرور را بخوانید * / در حالی که (clientUbi.available ()) {char c = clientUbi.read ()؛ Serial.write (c)؛ } / * حافظه رایگان * / رایگان (داده) ؛ رایگان (بدن) ؛ / * کلاینت را متوقف کنید */ clientUbi.stop ()؛}

نکته: می توانید با باز کردن مانیتور سریال در Arduino IDE ، صحت اتصال دستگاه خود را بررسی کنید.

با مشاهده دستگاه در حساب مدیریت خود -> دستگاه ها - می توانید تأیید کنید که دستگاه در پشتیبان Ubidots شما ایجاد شده است.

با کلیک روی دستگاه خود ، متغیری به نام "فاصله" را پیدا می کنید که قرائت سنسور در آن ذخیره می شود. این نام در کدی که به تازگی در Arduino IDE چسبانده اید تعیین شده است. اگر می خواهید متغیرهای خودکار خود را تنظیم کنید ، لطفاً این کار را با ویرایش کارت دستگاه یا چشمک زدن یک کد به روز شده با نامگذاری متغیر مناسب برای برنامه خود انجام دهید.

با اتصال Feather HUZZAH ESP8266 و گزارش داده ها به Ubidots ، اکنون زمان ساخت برنامه با استفاده از Ubidots با دقت پیکربندی برنامه بدون کد است.

مرحله 5: توسعه برنامه Ubidots

توسعه برنامه Ubidots
توسعه برنامه Ubidots
توسعه برنامه Ubidots
توسعه برنامه Ubidots
توسعه برنامه Ubidots
توسعه برنامه Ubidots

پیکربندی رویداد Ubidots

قرائت فعلی که ما به Ubidots ارسال می کنیم ورودی های فاصله است. برای ترجمه این قرائت ها به خروجی دلخواه که می خواهیم - واحد های محاسبه شده - باید یک رویداد را به شرح زیر ایجاد کنیم:

  1. در داخل دستگاه کنونی "کنترل حرکت" یک متغیر پیش فرض جدید به نام "جعبه" ایجاد کنید که هر بار که یک واحد جدید شمارش می شود 1 دریافت می کند.
  2. به بخش مدیریت دستگاه -> رویدادها بروید و روی نماد آبی plus در گوشه سمت راست بالای صفحه کلیک کنید تا یک رویداد جدید اضافه کنید.
  3. شروع رویداد خود با "If triggers":
  • یک متغیر را انتخاب کنید: "فاصله"
  • مقدار: مقدار (پیش فرض)
  • کمتر یا مساوی [حداکثر فاصله مورد انتظار} بین سنسور و جعبه های عبوری*برنامه ما 500 میلی متر است
  • به مدت 0 دقیقه
  • صرفه جویی

4. هنگامی که محرک ها به مشخصات برنامه شما پیکربندی شدند ، روی نماد نارنجی "plus" در گوشه بالا سمت راست کلیک کنید تا یک اقدام مشروط اضافه شود.

5. "Set Variable" را به عنوان عمل انتخاب کنید.

6. سپس ، متغیر پیش فرض ایجاد شده "box" و مقدار "1" را انتخاب کنید.

7. تغییرات را ذخیره کنید. اگر رویداد به درستی تنظیم شده باشد ، هر بار که فاصله بین سنسور و واحد از آستانه مشخص شده بیشتر باشد ، "1" ارسال می کند ، که نشان می دهد هیچ جسمی در این نزدیکی وجود ندارد - و باید یک واحد جدید را که به تازگی از آن عبور کرده است ، شمارش کند. به

در کارت Feather specific Device ، متوجه خواهید شد که متغیر "box" که در آن "1" ارسال می شود هر زمان که حضور واحد احساس شود.

مخصوصاً برای تسمه نقاله های صنعتی و شمارش واحدهای این نمونه اولیه می توان آن را به گونه ای سفارشی کرد که در محیط های مختلف یا سخت افزار به سادگی در برنامه نویسی یا برنامه های کاربردی شما مناسب باشد.

8. تعداد واحدهای حس شده (یا زمان هایی که یک شی تشخیص داده شد) را تجسم کنید. حال ، با استفاده از متغیر "box" ، ما قصد داریم یک متغیر پنجره نورد جدید ایجاد کنیم تا مجموع خوانش های دریافت شده از متغیر "box" را در هرزنامه تعریف شده (دقیقه ، ساعت ، روز ، هفته و غیره). برای اجرای این توسعه ، مراحل ساده زیر را دنبال کنید:

اعتبارهای زیر را به متغیر پنجره نورد جدید خود اختصاص دهید

انتخاب دستگاه: حرکت کنترل (یا نام دستگاهی که داده های خود را ارسال می کنید)

یک متغیر: جعبه ها را انتخاب کنید

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

هر: "1" ساعت (یا طبق درخواست برنامه شما)

اکنون یک نام به متغیر جدید اختصاص دهید که تعداد جعبه ها (یا حرکات) شمارش شده در یک ساعت را نشان دهد ، درست مانند "جعبه/ساعت" یا "واحد/ساعت".

مرحله 6: تنظیمات داشبورد

تنظیمات داشبورد
تنظیمات داشبورد

در نهایت ، یک داشبورد برای نمایش تعداد واحدهای حس شده ایجاد کنید.

به مدیریت دستگاه -> داشبوردها بروید و یک ویجت جدید اضافه کنید. این ویجت تعداد جعبه های شمارش شده امروز را بر اساس ساعت نمایش می دهد.

اعتبارهای زیر را به ویجت جدید خود اختصاص دهید تا تعداد خود را تجسم کنید.

چگونه می خواهید داده های خود را ببینید؟: نمودار

یک نوع ویجت: نمودار خطی را انتخاب کنید

یک دستگاه اضافه کنید: کنترل حرکت

یک متغیر اضافه کنید: جعبه/ساعت

تمام کنید. و با این توسعه داشبورد نهایی - برنامه شما کامل شده است و اکنون یک سیستم تشخیص حرکت و حضور کارآمد و م haveثر دارید. در اینجا آخرین نگاه به نتایج ما است.

توصیه شده: