آردوینوالکترونیکپروژه آردوینو

کنترل نور محیط به کمک آردوینو و ماژول BH1750

مقدمه

کنترل نور محیط با آردوینو: اگر بخواهیم نور خانه را خودکار کنیم! و یا اگر بخواهیم تفاوت شب و روز را به آردوینو بفهمانیم! بایستی از ابزاری استفاده کنیم که بتواند این کار را انجام دهد. اگر بخواهیم سیستمی طراحی کنیم که فوق العاده کم مصرف باشد و بتواند نور محیط را کنترل کند، دقت بسیار بالایی داشته باشد و به صورت دیجیتال (نویز نزدیک به صفر) اطلاعات بفرستد نیاز به ابزار های اندازه گیری دقیق و گرانی داریم که شاید برای این کار منطقی نباشد. 

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


برای خرید ماژول BH1750 کلیک کنید


ماژولی که به راحتی با آردوینو راه اندازی می شود، مصرف توان آن کمتر از 1mW می باشد،  دیتایی ۱۶ بیتی به میکروکنترلر می دهد، ولتاژ کاری آن بین ۳ – ۵ ولت می باشد، وزن آن ۲ گرم و با پروتکل i2c تبادل اطلاعات می کند. 

نمایی از ماژول BH1750
نمایی از ماژول BH1750

قطعات مورد نیاز برای راه اندازی پروژه کنترل نور محیط با آردوینو یونو

برد آردوینو UNO 

سیم هدر برای اتصالات 

ماژول BH1750 

یکم خلاقیت! 

اتصالات مدار کنترل نور محیط با آردوینو به شکل زیر است

نمایی از اتصالات مدار کنترل نور محیط
نمایی از اتصالات مدار کنترل نور محیط

VCC: اتصال به ۵v 

GND:  اتصال به زمین آردوینو 

SCL: پایه کلاک در پروتکل i2c 

SDA: پایه دیتا در پروتکل i2c 

ADDR:  پایه انتخاب آدرس در پروتکل i2c در صورت راه اندازی چند ماژول یا دستگاه فقط با یک i2c 

کد برنامه

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

اضافه کردن کتابخانه های مورد نیاز 

BH1750 lightMeter(0x23); 

تعریف تابع (object) برای ماژول و آدرس دهی به آن در صورت استفاده از بیش از یک ماژول 

void setup(){ 
  Serial.begin(9600); 

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

Wire.begin(); 

راه اندازی اولیه پروتکل i2c 

  if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE) == 1) { 
    Serial.println(F("BH1750 Advanced begin")); 
  } 
  else if(lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE) == 0) { 
    Serial.println(F("Error initialising BH1750")); 
  } 

تابع begin() خروجی صفر یا یک می دهد برای بررسی اینکه آیا پیکربندی اولیه  به درستی انجام گرفته است یا نه 


void loop() { 
  float lux = lightMeter.readLightLevel(); 

دریافت مقدار نور توسط دستور readLightLevel(); 

  Serial.print("Light: "); 
  Serial.print(lux); 
  Serial.println(" lx"); 

چاپ مقدار نور در سریال مانیتور 

  delay(500); 
 500ms  

تاخیر به مدت

در کد فوق توجه داشته باشید که مقادیر نور در سریال مانیتور نمایش داده می شوند که برای دسترسی به آن بایستی کلید ترکیبی Ctrl+Shift+M را بفشارید. 

شما هم اکنون می توانید دیتاشیت ماژول BH1750 را از اینجا دانلود کنید. 

سخن پایانی

امیدوارم از این آموزش لذت برده باشید. 

در صورت وجود هرگونه سوال خوشحال می شویم که در بخش نظرات بیان کنید. 

نمایش بیشتر

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا