لاگ گرفتن و یا به عبارتی ساخت دیتالاگر در پروژه های اینترنت اشیا مهم و کاربردی است. دیتاهای دریافتی از سنسور در هر لحظه ممکن است به دلایل مختلف مانند شرایط جوی، شرایط محیطی و یا نویز پذیری دچار تغییر گردد. حال بایستی زمان، ساعت و تاریخ تغییرات در هر لحظه برای ما ثبت گردد تا امکان تحلیل داده ها و عملکرد سنسور مشخص شود. در این آموزش از سنسور دما DS18B20 استفاده شده است. دمای محیط توسط سنسور خوانده شده و سپس در محیط UI نرم افزار Node-RED قابل مشاهده است. هدف این پروژه ساخت دیتالاگر جهت لاگ گرفتن دیتا و ذخیره آن در رزبری پای است که به آن میپردازیم. در ادامه با مرجع تخصصی رزبری پای به زیان فارسی، دیجی اسپارک همراه باشید.
سنسور دما DS18B20
سنسور ضد آب DS18B20 به دلیل نوع ساخت آن در بین کاربران پرطرفدار است. سنسور DS18B20 به شما این امکان را میدهد تا دما را در یک محیط مرطوب به صورت تک سیمه اندازه گیری کنید. این سنسور دمای خوانده شده ۹ تا ۱۲ بیت را با ارتباط تک سیم به پردازنده ارسال میکند. سنسورهایی که دارای ارتباط تک سیم هستند باید در مدار به صورت موازی قرار گیرند از این رو از یک مقاومت ۴٫۷ کیلو اهم جهت اتصال پایه ها به یکدیگر استفاده میکنیم. مقاومت استفاده شده در این ارتباط به صورت Pullup قرار میگیرد تا دیتا ثابت و بدون نویز ارسال گردد.
اتصال سنسور DS18B20 به رزبری پای
سنسور DS18B20 از سه پایه Signal, Gnd, Vcc تشکیل شده است. جهت اتصال به رزبری پای از پایه های GPIO4 ( پین ۷ ) , GND و ۵V رزبری پای استفاده خواهیم کرد. همانند تصویر زیر اتصالات را انجام دهید.
ساخت دیتالاگر در Node-RED
ابزار برنامه نویسی نود رد Node-RED به واسطه محیط گرافیکی خاصی که برای آن طراحی شده، امکان کنترل پروژه در لحظه را فراهم کرده است. تصور کنید در صفحه وب مرورگر لپتاپ و یا مویابل شخصی مدیریت پروژه خود را در دست بگیرید. در این آموزش با کلیک بر روی یک گزینه که خودتان طراحی کرده اید، دیتای دریافتی از سنسور در یک فایل در مسیر از قبل تعریف شده ذخیره میگردد. همچنین توسط یک چارت نمودار افزایش و کاهش دما در هر لحظه قابل رویت است. در ادامه به معرفی نودهای مورد نیاز و اجرای پروژه خواهیم پرداخت. به این روش دیتالاگر در برد رزبری پای خواهیم ساخت.
نود Button
زیر شاخه های نود UI هر کدام دسترسی های منحصر به فردی را در اختیار ما قرار میدهد. توسط نود button یک کلید میتوانید طراحی کنید و ابعاد آن را جهت نمایش تنظیم نمایید. این نود از شاخه ui قابل دسترس است. نود را وارد صفحه Flow کنید.
نود DS18B20
با سرچ کلید واژه DS18b20 در منیج پلت Manage Palette نرم افزار Node-RED نودهایی مختلفی برای این سنسور توسعه یافته است که با نصب هر یک از آن ها میتوانید امکاناتی که در اخیتارتان قرار میدهد را بررسی کنید. نود را وارد صفحه Flow کنید.
نود rpi gpio out
به سادگی پایه مورد نظر جهت اتصال از برد رزبری پای به سنسور دما DS18B20 را در تصویر گرافیکی زیر مشخص میکنیم. جهت اتصال سنسور DS18B20 از پایه سیگنال به یکی از پایه های GPIO رزبری پای اتصال میدهیم. در این آموزش از پایه GPIO4 جهت اتصال سنسور به رزبری پای استفاده شده است.
نود gauge
از نود gauge جهت نمایش دمای اندازه گیری شده استفاده میشود. همانند تصویر تنظیمات را انجام دهید.
نود chart
از نود chart جهت ساخت نمودار و نمایش دمای اندازه گیری شده استفاده میشود. همانند تصویر تنظیمات را انجام دهید.
نود Switch
از نود Switch جهت طراحی یک کلید با حالت ۰ و ۱ استفاده میشود. همانند تصویر تنظیمات را انجام دهید.
نود debug
توسط نود debug اطلاعات دقیق سنسور از جمله آی دی ID و تاپیک آن مشخص میگردد. همانند تصویر تنظیمات را انجام دهید.
نود Function
از نود Function برای کدنویسی جاوا استفاده میکنیم. در این آموزش ازjavascript برای ذخیره دیتا به همراه اطلاعات دقیق زمان استفاده میشود. کد را کپی و در نود فانکشن کپی کنید.
var d= new Date(); payload={"Day":d,"payload":msg.payload,"topic":msg.topic}; msg.payload=payload; return msg;
نود file
توسط نود file دیتای دریافتی از سنسور در مسیر گفته شده در نود ذخیره میگردد. همانند تصویر زیر تنظیمات نود را انجام دهید.
ساخت دیتالاگر در نرم افزار NodeRed
برای ساخت دیتالاگر اتصال نودها در نرم افزار Node-RED بسیار مهم است. در صورتیکه اتصالات صحیح نباشد، نودها بدون هیچ اروری فعال میگردد ولی در خروجی دیتا ارسال و دریافت نمیشود. در تصویر زیر اتصالات نودها به ترتیب انجام شده است.
ذخیره دیتا Data Logging
با فشردن کلید Button در محیط UI دیتا از سنسور دریافت شده و سپس با سوییچ شدن نود Switch شروع به لاگ کردن دیتا خواهد کرد. با ورود به پوشه logs در رزبین فایل ساخته شده توسط خودتان به همراه اطلاعات کامل سنسور نمایش داده میشود.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
وسایل مورد نیاز
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
sسلام من متوجه نشدم که پوشه جمع اوری دیتا در کدام محل قرار گرفته شده است.
با سلام
توسط نود file دیتای دریافتی از سنسور در مسیر گفته شده در نود ذخیره میگردد.
باسلام و تشکر از آموزش بسیار خوب و دقیق
سوالی داشتم: برای ساخت دیتالاگر اگر تعداد سنسورهای ما بیشتر باشد و جدا از هم باشند،
آیا بهترین راه این است که مثلا از ماژول های nodemcu (یا حتی اردیئو مجهز به esp) برای هر سنسور (یا دسته سنسور کنار هم) استفاده کرد و بعد یک رزبری پای داشت که اطلاعات را با node-red در ان پردازش کنیم؟
با سلام
سپاس از شما
در این خصوص امکان اتصال چندین سنسور هم به پایه های GPIO فراهم است و تداخلی در روند اجرای برنامه وجود ندارد. در صورت استفاده از بردهای nodemcu بایستی توسط پروتکل های ارتباطی مانند MQTT دیتا را به رزبری پای و در نهایت نود رد منتقل کنید. در نرم افزار نود رد برای سنسور DS18b20 امکان تشخیص کد I2C و اتصال چندین سنسور به صورت همزمان وجود دارد.
سلام
اگر در دیتالاگر ساخته شده بیش از یک سنسور داشته باشیم و بخواهیم هر کاربر صرفا حق دیدن دادگان برخی از سنسورها را داشته باشد، باید چه کرد؟ (مثلا کاربر ۱ بتواند نتایج dashboard مختص به خود را فقط ببنید که حاوی نتایج سنسورهای مربوط به اتاق خود است، کاربر مادر بتواند اطلاعات کل خانه را داشته باشد و …. و کاربر۱ حتی با داشتن لینک اطلاعات خانه نتواند آن را ببیند)
آیا در این صورت مجبور به استفاده از بیش از یک رزبری پای هستیم؟
با سلام
ابن مورد توسط بنده تست نشده است و به زودی انجام خواهم داد. در خصوص دشبورد میتوانید از تب های جداگانه استفاده کنید.
سلام
در نرم افزار node-red چطور میشود، privacy ایجاد کرد. منظورم این است که فرض کنید که بخواهیم، هر کاربر قادر به مشاهده نتایج همه سنسورهای متصل به رزبری پای از طریق داشبود را نداشته باشند؟
مثلا کاربر۱ فقط بتواند نتایج مربوط به سنسورds18b20 را ببیند. و کابر۲ فقط بتواند داده های سنسور DHT را ببیند.
ولی الان تا جایی که دانش من هست، وقتی لینک (آدرس محلی یا global) رزبری پایی که node-red روی آن است را به یه نفر بدهیم عملا به کل داشبورد دسترسی وجود دارد و قابلیت شخصی سازی نیست که کابر۱ بتواند برخی نتایج را ببنید و کاربر۲ صرفا برخی نتایج دیگر را.
(البته امکان گذاشتن پسورد روی node-red وجود دارد ولی خب این بحث مربوط به دسترسی های مختلف به نتایج سنسورها در داشبورد برای کاربرهای مختلف را حل نمی کند، اگر پسورد را کاربر داشته باشد به کل دشبورد دسترسی دارد.)
ممنون میشم راهنمایی بفرمایید
با سلام
در حال حاضر این مورد توسط بنده تست نشده است. بررسی خواهم کرد و نیتجه را در قالب پست ارائه خواهم داد.
سلام.میشه راهنمایی کنید که بجای این سنسور بخوام سنسور mpu6050 رو استفاده کنم و زاوایا رو با هر بار فشار کلید در فایل ذخیره کنم چه تغییراتی باید ایجاد بشه ؟
با سلام
توسط این آموزش امکان پذیر نیست.