آردوینو آموزش آردوینو

آموزش راه اندازی سنسور BH1750 شدت نور بر واحد Lux

getting-started-with-bh1750-light-sensor-with-arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

سنجش پارامترهای محیطی نیازمند سنسورهای مختلفی است. یکی از سنسورها پرکاربرد تشخیص شدت نور محیط است. این پارامتر در موارد مختلفی تاثیرگذار است. از جمله سلامت محیط کار، که وابسته به نوع کار و نوع محیط است. همچنین سلامت و پایش وضعیت گیاهان در گلخانه‌ها به کمک سنسورهای نوری انجام می‌شود. سنسور نوری Light جهت اندازه گیری شدت نور محیط طراحی و در مدل‌های مختلف عرضه شده است. سنسور سطح نور یا Light Level Sensor در سطح‌های مختلف مقادیر نور محیط را اندازه‌گیری کرده و به صورت پارامتر Lux ارسال می‌کند. در ادامه به معرفی سنسور و کد آردوینو Arduino خواهیم پرداخت. در این آموزش با سنسور BH1750 شدت نور محیط را بر اساس لوکس به کمک آردوینو محاسبه می‌کنیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور BH1750 شدت نور


سنسور BH1750 از خانواده سنسورهای فتو رزیستوری است. این سنسور شدت نور محیط را سنجیده و بر اساس پارامتر Lux به عنوان دیتا تبدیل می‌کند. مقادیر لوکس از ۰ تا ۶۵۵۳۵ واحد لوکس است. با سنسور BH1750 این مقادیر قابل اندازه گیری است. سنسور دارای ۴ پایه VCC, GND, SCL, SDA است. به تصویر زیر دقت کنید.

معرفی پایه‌های سنسور BH1750

  • پایه VCC تغذیه سنسور است که بین ۲٫۴ تا ۳٫۶ ولت است.
  • پایه GND زمین است و به زمینGND میکروکنترلر متصل می‌شود.
  • پایه SCL پایه Serial Clock است و پالس کلاک را برای ارتباط I2C فراهم می‌کند.
  • پایه SDA پایه Serial Data است و جهت ارسال دیتا در رابط I2C استفاده می‌شود.
  • پایه ADDR پین آدرس است و برای زمانیکه بیش از دو ماژول متصل است جهت آدرس دهی استفاده می‌شود.

 


ویژگی سنسور شدت نور BH1750


  • تعذیه: ۲٫۴ – ۳٫۶ ولت
  • مصرف جریان در کمترین حالت: ۰٫۱۲ میلی آمپر
  • رنج اندازه گیری: ۱ – ۶۵۵۳۵lx
  • رابط: I2C BUS
  • دقت اندازه گیری: +/-۲۰%
  • مبدل A/D برای تبدیل مقادیر آنالوگ به دیجیتال
  • تاثیر پذیری کم تابش IR

سنسور BH1750 در ساخت موبایل، چراغ‌های جلوی اتومبیل استفاده می‌شود. در مبحث اینترنت اشیا هم بسیار کاربردی است. خصوصا اینکه سنجش پارامتر نور محیط یکی از عوامل بسیار مهم برای پیاده سازی پروژه‌های اینترنت اشیا است. این سنسور از پروتکل I2C استفاده می‌کند تا استفاده از سنسور برای میکروکنترلرها ساده‌تر شود. پایه‌های SDA و SCL مختص پروتکل I2C است. شدت نور با میزان تابش نور به سنسور اندازه گیری می‌شود.

 


راه اندازی BH1750 با انواع میکروکنترلر


سنسور شدت نور BH1750 در مدل های مختلف وجود دارد. این سنسور با انواع میکروها از جمله آردوینو Arduino, Nodemcu, Wemos D1 mini قابل تست و راه اندازی است.

با توجه به نوع برد مورد استفاده اتصالات سنسور را انجام دهید. سنسور BH1750 با نرم افزار آردوینو Arduino قابل راه اندازی است. برای استفاده از آن در ابتدا به نصب کتابخانه نیاز داریم.

 


نصب کتابخانه BH1750


برای شروع برنامه نویسی سنسور به کتابخانه سنسور با تراشه BH1750 نیاز داریم. از منو Arduino/Tools/ Manage Libraries عبارت BH1750 را فیلتر و کتابخانه زیر که در تصویر مشخص شده است را نصب کنید.

جهت نصب بر روی install کلیک کرده و آخرین ورژن معرفی شده برای کتابخانه را نصب کنید.

 


کد آردوینو Arduino UNO , Mega2560


برای راه اندازی سنسور BH1750 با برد آردوینو از پایه های I2C استفاده می‌کنیم. پایه های I2C در برد آردوینو در اتصالات ضمیمه شده است. در این بخش کد آردوینو مربوط سری بردهای آردوینو ضمیمه شده است:

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;


void setup(){

  Serial.begin(9600);

  Wire.begin();
 
  lightMeter.begin();

  Serial.println(F("BH1750 Test"));

}


void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

}

 

 


کد بردهای Nodemcu و Wemos


برای راه اندازی سنسور BH1750 با سری بردهای ESP8266 از پایه های I2C استفاده می‌کنیم. پایه های I2C در برد آردوینو در اتصالات ضمیمه شده است. در این بخش کد آردوینو مربوط سری بردهای ESP8266 ضمیمه شده است:

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;


void setup(){

  Serial.begin(9600);

  Wire.begin(D2, D1);
 
  lightMeter.begin();

  Serial.println(F("BH1750 Test"));

}


void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

}

 

 


تحلیل کد آردوینو Arduino


دیتای دریافتی از سنسور BH1750 به صورت عدد است که ما میتوانیم عدد اعشاری را انتخاب کرده و دیتا را بر حسب پارامتر لوکس Lux دریافت و مشاهده کنیم.

فراخوانی کتابخانه‌ها

در این کدها از دو کتابخانه BH1750, Wire استفاده شده است.

#include <Wire.h>
#include <BH1750.h>

 

معرفی متغیر برای سنسور

یک اسم مشخص برای معرفی متغیر تعریف می‌کنیم.

BH1750 lightMeter;

دقت کنید که عبارت BH1750 بایستی با حروف بزرگ نوشته شود و به رنگ قرمز نشان داده شود.

 

تعریف Void Setup

جهت معرفی پایه های مورد استفاده و بادریت از Voidsetup استفاده میکنیم:

void setup(){

  Serial.begin(9600);

  Wire.begin(D2, D1);

()OR   Wire.begin
 
  lightMeter.begin();

  Serial.println(F("BH1750 Test"));

}

 

تعریف حلقه Loop

جهت نمایش و دریافت دیتا از دستوات حلقه استفاده می‌کنیم:

 float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

 

 


وسایل مورد نیاز


سنسور نور BH1750

برد آردوینو UNO

برد وای فای ویموس

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۵ دیدگاه