اتصال سنسور BH1750 GY-30 به آردوینو (سنجش روشنایی)

محتویات
BH1750 یا همان GY-30 یک حسگر سنجش شدت نور است که از طریق پروتکل I2C با میکروکنترلر ارتباط برقرار می کند. این سنسور مستقیما مقدار روشنایی را بر حسب لاکس اندازه گیری میکند. روشنایی معیاری است که نشان می دهد نور تابشی چقدر سطح مشخصی را روشن می کند. این مقدار بر حسب لومن در متر مربع یا همان لاکس اندازه گیری میشود.
سنسور BH1750
BH1750 یک سنسور نور محیطی 16 بیتی است که از طریق پروتکل I2C ارتباط برقرار می کند. این سنسور اندازه گیری را بر حسب لوکس (واحد روشنایی برگرفته از SI) خروجی می دهد. سنسور BH1750 می تواند حداقل 1 لوکس و حداکثر 65535 لوکس را اندازه گیری کند.
این سنسور در ماژول های مختلف به کار گرفته شده است، در تصویر زیر هر دو از سنسور BH1750 استفاده میکنند.
ویژگی های BH1750
در اینجا لیستی از ویژگی های سنسور BH1750 را آماده کردیم. برای جزئیات بیشتر میتوانید دیتاشیت سنسور را بخوانید.
- ارتباط با پروتکل I2C
- مبدل روشنایی به مقدار دیجیتال
- محدوده: 1 – 65535 لوکس
- مصرف کم برق
- حذف نویز نور 50 هرتز / 60 هرتز
- امکان انتخاب 2 آدرس مختلف I2C
- تغییرات اندازه گیری کوچک (+/- 20%)
- تاثیر مادون قرمز روی سنسور بسیار کم است
- دو حالت اندازه گیری: پیوسته و تک شات
سنسور BH1750 میزان روشنایی را در دو حالت پیوسته و تک شات اندازه گیری میکند. در حالت پیوسته، سنسور بدون توقف شدت نور را اندازه گیری می کند. اما در حالت دوم، اندازه گیری انجام می شود و سپس سنسور خاموش می شود.
کاربر می تواند حساسیت هر دو حالت را مشخص کند. پیکربندی سنسور BH1750 در دقت پایین حداقل 4 لوکس را در 16 میلی ثانیه تشخیص می دهد. در دقت متوسط، یک سنسور BH1750 تا 1 لوکس را در 120 میلی ثانیه تشخیص می دهد. در دقت بالا، سنسور رتا 0.5 لوکس را در 120 میلی ثانیه اندازه گیری می کند.
دقت پایین | دقت: 4 لاکس | 16 میلی ثانیه |
دقت متوسط | دقت: 1 لاکس | 120 میلی ثانیه |
دقت بالا | دقت: 0.5 لاکس | 120 میلی ثانیه |
ماژول سنجش نور GY-30
یکی از محبوب ترین ماژول هایی که از سنسور BH1750 استفاده میکند، برد GY-30 است. این یک برد ارزان است که دسترسی به داده های این سنسور را بسیار ساده میکند.
GY-30 یک ماژول حسگر نور محیطی است که می توان از آن در پروژه های مختلف استفاده کرد. به عنوان مثال:
- برای تشخیص اینکه آیا روز است یا شب؛
- برای تنظیم یا روشن/خاموش کردن روشنایی LED متناسب با نور محیط؛
- برای تنظیم LCD و روشنایی صفحه نمایش؛
- برای تشخیص روشن بودن LED؛
- و…
اتصالات بین آردوینو و GY-30
اکنون که با سنسور BH1750 آشنا شدید، بیایید آن را آزمایش کنیم. در این بخش، ما یک پروژه ساده می سازیم که نور محیط را می خواند و آن را در سریال مانیتور آردوینو IDE نمایش می دهد.
قطعات مورد نیاز
برای تکمیل این آموزش به قطعه های زیر نیاز دارید:
- سنسور نور محیط BH1750
- آردوینو
- برد بورد
- سیم جامپر
سنسور BH1750 را به پین های Arduino I2C متصل کنید. می توانید از تصویر زیر کمک بگیرید.
همچنین می توانید جدول زیر را دنبال کنید:
BH1750 | Arduino |
VCC | 5V |
GND | GND |
SCL | A5 |
SDA (Data) | A4 |
ADD* | متصل نکنید |
با اتصال نکردن پین ADD، آدرس I2C 0x23 را انتخاب می کنیم. اگر آن را به 3.3 ولت وصل کنید به جای آن آدرس 0x5C تنظیم میشود.
کد سنجش نور محیط با BH1750
چندین کتابخانه برای استفاده از حسگر BH1750 وجود دارد. ما از کتابخانه BH1750 کریستوفر لاوز استفاده خواهیم کرد. این با ESP32، ESP8266 و Arduino سازگار است.
Arduino IDE خود را باز کنید و به Sketch > Include Library > Manage Libraries بروید. “BH1750” را در کادر جستجو جستجو کنید و کتابخانه BH1750 را توسط کریستوفر لاوز نصب کنید.
کد کامل در انتهای صفحه برای دانلود قرار داده شده است. در اینجا قسمت های مختلف کد را بررسی میکنیم.
کد را با گنجاندن کتابخانه های مورد نیاز شروع می کنیم. کتابخانه Wire.h برای استفاده از پروتکل ارتباطی I2C و کتابخانه BH1750.h برای خواندن اطلاعات خروجی سنسور استفاده میشود.
#include <Wire.h>
#include <BH1750.h>
سپس، یک آبجکت BH1750 به نام lightMeter ایجاد می کنیم.
BH1750 lightMeter;
در setup()، مانیتور سریال را با نرخ باود 9600 مقداردهی میکنیم.
Serial.begin(9600);
سپس ارتباطی I2C را راه اندازی میکنیم. این کد یک ارتباط I2C را روی پایه های I2C پیش فرض میکروکنترلر شروع می کند
Wire.begin();
سنسور را با استفاده از متد ()fill روی آبجکت BH1750 (lightMeter) راه اندازی کنید.
lightMeter.begin();
در loop()، متغیری به نام lux ایجاد می کنیم که مقادیر روشنایی را ذخیره می کند. برای بدست آوردن مقدار، شما به سادگی تابع readLightLevel() را در شیء BH1750 (lightMeter) فراخوانی کنید.
float lux = lightMeter.readLightLevel();
در نهایت، مقدار اندازه گیری شده را بر روی مانیتور سریال نمایش دهید.
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
بررسی عملکرد اندازه گیری نور با ماژول GY-30
اکنون می توانید کد را در برد خود آپلود کنید. ابتدا برد خود را به کامپیوتر وصل کنید. سپس به Tools > Board بروید و برد آردوینو مورد استفاده خود را انتخاب کنید. به Tools > Port بروید و پورت COM که بردتان به آن متصل است را انتخاب کنید. در نهایت بر روی دکمه آپلود کلیک کنید.
پس از آپلود موفق کد، مانیتور سریال را با نرخ باود 9600 باز کنید.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود