اندازه گیری پارامتر نور و شدت نور توسط سنسورهای نور Light قابل سنجش است. سنسورهای Light مانند GY-30 جهت اندازه گیری شدت نور دریافتی از محیط استفاده میشود. در این آموزش توسط برد رزبری پای Raspberry Pi و سنسور شدت نور GY-30 به کمک نرم افزار Node-Red مقادیر سنسور را دریافت و مشاهده میکنیم. در ادامه با مرجع تخصصی رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور شدت نور BH1750
سنسور BH1750 GY-30 با خروجی دیجیتال Digital حساس به نور است. رنج قابل تشخیص سنسور بین ۰ تا ۶۵۵۳۵ بر واحد لوکس LUX است. سنسور بر پایه مبدل ۱۶ بیتی AD طراحی شده و از پروتکل I2C پشتیبانی میکند. ولتاژ کاری سنسور بین ۳٫۳ تا ۵ ولت و تراشه اصلی آن BH1750FVI است. با قرار گرفتن سنسور در محیط تاریک مقدار لوکس LUX کاهش یافته و به صفر نزدیک میشود و به همین صورت با قرارگیری سنسور در محیط روشن مقدار لوکس افزایش یافته و به عدد ۶۵۵۳۵ نزدیک میشود. بسته به نوع سنسور انتخابی دارای ۴ تا ۵ پایه است که پایه های I2C به ترتیب SDA و SCL است.
رزبری پای Raspberry Pi
برد رزبری پای ۳ مدل A+ در ظاهر برد کمی کوچکتر و فقط یک پورت USB دارد. پورت اترنت هم حذف شده است. تراشه A 1.4GHz 64-bit quad-core ARM Cortex-A53 CPU در کنار ۵۱۲ مگابایت رم LPDDR2 کل پردازش برد را انجام میدهند. تراشه بلوتوث و وای فای هم همانند رزبری پای B+ بوده از نوع Dual-band 802.11ac wireless LAN and Bluetooth 4.2/BLE میباشد. انتخاب نوع برد رزبری پای کاملا آزادانه است.
اتصالات سنسور شدت نور
برای اتصال سنسور به رزبری پای همانند زیر اجرا کنید:
- پایه SDA سنسور نور را به پایه GPIO2 رزبری پای اتصال دهید.
- پایه SCL سنسور نور را به پایه GPIO3 رزبری پای اتصال دهید.
- پایه VCC سنسور نور را به پایه ۵ ولت رزبری پای اتصال دهید.
- پایه GND سنسور نور را به پایه GND رزبری پای اتصال دهید.
اجرا در نرم افزار Node-RED
در این آموزش به کمک نرم افزار گرافیکی Node-RED که بر پایه Nodejs است، مقادیر LUX را خوانده و در داشبورد نمایش میدهیم. برای این کار از رزبری پای Raspberry Pi استفاده شده است. رزبری پای به دلیل پشتیبانی از پروتکل های I2C و SPI ارتباط با سنسورها را برای ما فراهم کرده است. سنسور BH1750 از پروتکل I2C استفاده کرده و جهت ارتباط با بردهای امبدد به واسطه پروتکل ارتباطی قابل راه اندازی و دریافت دیتا است. در این آموزش از نرم افزار Node-RED در سیستم عامل رزبین Raspbian استفاده میکنیم. با نصب رزبین نود رد Node-RED به صورت اتوماتیک بر روی رزبین اجرا میشود. جهت دسترسی به محیط نود رد Node-RED ارتباط به صورت لوکال است و با آی پی آدرس IP ADDRESS که هنگام ران RUN نمایش داده میشود از طریق مرورگر به محیط نود رد دسترسی پیدا میکنیم. از اینرو در محیط رزبین محیط گرافیکی Node-RED را بررسی خواهیم کرد. در منو رزبین Raspbian در قسمت Programming، ابزار Node-RED قرار گرفته شده است. با کلیک بر روی آن پنچره زیر باز میگردد. در خط اول یک آدرس URL جهت دسترسی به Node-RED برای شما نمایش داده میشود. پورت URL برابر با ۱۸۸۰ میباشد که جهت اجرای برنامه بر روی مرورگر بایستی URL را وارد نمایید.
۱۹۲٫۱۶۸٫۹۱٫۱۵۶:۱۸۸۰
با فعال شدن Node-RED محیط گرافیکی نمایش داده شده و آماده اجرا خواهد بود.
برای شروع از منو سه خط Node-RED بر روی Manage palette کلیک کنید. سپس در User Setting بر روی install کلیک کرده و عبارت I2C را سرچ کنید. سپس پکیج I2C را که به صورت زیر است، نصب کنید:
node-red-contrib-i2c
منتظر باشید تا نود نصب شده و پیام اضافه شدن به پالت های نود رد نمایش داده شود. برای اجرای برنامه و ارتباط با سنسور یک Flow ایجاد میکنیم.
ایجاد FLOW سنسور شدت نور
برای ساخت یک فلو Flow جدید از منو Node-RED بر روی FLOWS کلیک کرده و سپس ADD را انتخاب کنید. یک اسم برای آن به دلخواه انتخاب کنید. برای شروع و ارسال فرمان از نود ورودی inject استفاده میکنیم که اولین نود در پالت میباشد. حالت پیشفرض را بر روی Timestamp قرار دهید.
از نوار سمت چپ در کادر فیلتر عبارت I2C را سرچ کنید. نود I2C را وارد صفحه کرده و همانند زیر تنظیمات نود را انجام دهید:
برای یافتن آدرس I2C نود I2C SCAN را انتخاب کرده و به دیباگ متصل کنید.
برای مشاده دیباگ و کد I2C برنامه را Deploy کنید. سپس در نوار سمت راست دیتا نماش داده میشود.
تبدیل اطلاعات سنسور به JSON
برای دریافت دیتا از سنسور و خواندم مقادیر Lux به از JSONata استفاده میکنیم. در واقع از فرمت json برای ذخیره و انتقال دیتا از سرور به وب پیچ استفاده میکنیم. در انتقال دیتا بین وب پیچ و سرور داده ها فقط به صورت متن Text میتوانند رد و بدل شوند. به عنوان مثال اگر دیتایی در جاوا اسکریپت ذخیره داشته باشید، میتوانید به فرمت json تبدیل کنید. در json ما به جزییات میپردازیم و دیتای خروجی بر اساس جزییات اولیه به دست میآید. در این آموزش مقادیر لوکس به jsonata تبدیل شده و در خروجی دیتا را نمایش میدهد. نود change را از نوار سمت چپ انتخاب کرده و سپس کامند زیر را وارد کنید.
$round((payload."1" + (265 * payload."0"))/1.2,2)
ساخت دشبورد در UI
امکان ساخت محیط گرافیکی و یک دشبورد در مرورگر توسط نودهای Dashboard وجود دارد. جهت دسترسی به نودهای UI Dashboard کافیست در manage palette عبارت Dashboard را سرچ کرده و پالت زیر را نصب کنید:
node-red-dashboard
نود Gauge را از شاخه UI انتخاب و وارد صفحه کنید. سپس مانند زیر تنظیمات را انجام دهید:
اتصال نهایی نودها
تمامی نودها وارد صفحه و تنظیم شده است. همانند تصویر زیر اتصالات را انجام داده و کامپایل کنید.
طراحی محیط UI در رزبری پای
جهت ورود به محیط ui بایستی URL نرم افزار Node-RED را همراه با پورت ۱۸۸۰ و /ui وارد نمایید.
url:1880/ui
به عنوان مثال URL نود رد من در این مثال برابر با http://192.168.1.156:1880/ui میباشد. گوگل کرده و سپس وارد Dashboard خواهید شد
جمع بندی لیدی پای
هدف از نوشتن این آموزش یادگیری جیسون دیتا Jsondata و دریافت دیتا از سنسور و تبدیل به دیتای قابل فهم است. سنسور استفاده شده در این آموزش از پروتکل ارتباطی I2C پیروی کرده و به همین دلیل ارتباط سنسور با دنیای اینترنت اشیا را برای ما فراهم کرده است. برای برقراری ارتباط از سخت افزار سبکی مانند رزبری پای استفاده کردیم که با استفاده از دو پایه SDA و SCL سنسور به رزبری پای متصل شده است. به کمک نرم افزار Node-RED محیط گرافیکی ساخته شده و دیتا به jsonata تبدیل و مقادیر LUX از سنسور خوانده و نمایش داده شده است. از کاربردهای این مورد میتوان به طراحی گلخانه هوشمند، مدیریت مصرف انرژی و … اشاره کرد. با انجام اتصالات، با قرار گرفتن سنسور در محیط تاریک مقدار Lux کاهش یافته و با تابش نور مقدار لوکس Lux افزایش مییابد.
وسایل مورد نیاز
ماژول سنجش شدت نور GY-30 با سنسور BH1750FVI
پک ۳ عددی کابل فلت ۲۰ سانتی متری رنگی Jumper color kit
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.