- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
در این مطلب آموزشی، شما نحوه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو را خواهید آموخت. این حسگر دارای یک میکروکنترلر است و با پروتکل I2C دادهها ارتباط را برقرار میکند.
شما در این پروژه یاد میگیرید که چگونه BH1750 را به آردوینو، کتابخانه مربوطه را نصب و کدهای لازم را وارد کنید و خروجیها را در سریال مانیتور ببینید.
فهرست مطالب
لوازم مورد نیاز برای پروژه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
آشنایی با BH1750 قبل از شروع پروژه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
BH1750 یا BH1750FVI یک آیسی حسگر دیجیتال کالیبره شده است که شدت نور محیط را اندازهگیری کرده و آن را در قالب دادههای دیجیتالی 16 بیتی ارسال میکند. این ماژول مستقیماً خروجیهای دیجیتالی ارائه میدهد.
خروجی این سنسور را میتوان از طریق پروتکل I2C دریافت نمود. BH1750 نور محیط را بر مبنای واحد لوکس (Lux) اندازهگیری میکند. خوشبختانه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو کار بسیار سادهای است.
آشنایی با پینهای BH1750 قبل از آغاز پروژه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
این ماژول 5 پین دارد که عبارتند از:
- VCC: تأمینکننده انرژی 5 ولت ماژول
- GND: اتصال به زمین
- SCL: کلاک I2C
- SDA: داده I2C
- ADDR: آدرس دستگاه I2C
شما میتوانید پینهای این ماژول را در تصویر زیر ببینید.
سیمکشی پروژه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
طبق جدول و تصویر زیر، میتوانید پینهای سنسور و آردوینو را به هم وصل کنید:
آردوینو Uno |
سنسور شدت نور BH1750 |
پین VCC |
پین 5 ولت |
پین GND |
پین GND |
پین A5 |
پین SCL |
پین A4 |
پین SDA (داده) |
وصل نشود! |
پین ADD |
نصب کتابخانه پروژه راه اندازی سنسور تشخیص شدت نور BH1750 با آردوینو
پس از آنکه کتابخانه داده شده را در نرمافزار Arduino IDE نصب کردید، کدهای زیر را در آن آپلود کنید.
/*
Advanced BH1750 library usage example
This example has some comments about advanced usage features.
Connection:
VCC -> 3V3 or 5V
GND -> GND
SCL -> SCL (A5 on Arduino Uno, Leonardo, etc or 21 on Mega and Due, on esp8266 free selectable)
SDA -> SDA (A4 on Arduino Uno, Leonardo, etc or 20 on Mega and Due, on esp8266 free selectable)
ADD -> (not connected) or GND
ADD pin is used to set sensor I2C address. If it has voltage greater or equal to
0.7VCC voltage (e.g. you've connected it to VCC) the sensor address will be
0x5C. In other case (if ADD voltage less than 0.7 * VCC) the sensor address will
be 0x23 (by default).
*/
#include
#include
/*
BH1750 can be physically configured to use two I2C addresses:
- 0x23 (most common) (if ADD pin had < 0.7VCC voltage)
- 0x5C (if ADD pin had > 0.7VCC voltage)
Library uses 0x23 address as default, but you can define any other address.
If you had troubles with default value - try to change it to 0x5C.
*/
BH1750 lightMeter(0x23);
void setup(){
Serial.begin(9600);
// Initialize the I2C bus (BH1750 library doesn't do this automatically)
Wire.begin();
// On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);
/*
BH1750 has six different measurement modes. They are divided in two groups;
continuous and one-time measurements. In continuous mode, sensor continuously
measures lightness value. In one-time mode the sensor makes only one
measurement and then goes into Power Down mode.
Each mode, has three different precisions:
- Low Resolution Mode - (4 lx precision, 16ms measurement time)
- High Resolution Mode - (1 lx precision, 120ms measurement time)
- High Resolution Mode 2 - (0.5 lx precision, 120ms measurement time)
By default, the library uses Continuous High Resolution Mode, but you can
set any other mode, by passing it to BH1750.begin() or BH1750.configure()
functions.
[!] Remember, if you use One-Time mode, your sensor will go to Power Down
mode each time, when it completes a measurement and you've read it.
Full mode list:
BH1750_CONTINUOUS_LOW_RES_MODE
BH1750_CONTINUOUS_HIGH_RES_MODE (default)
BH1750_CONTINUOUS_HIGH_RES_MODE_2
BH1750_ONE_TIME_LOW_RES_MODE
BH1750_ONE_TIME_HIGH_RES_MODE
BH1750_ONE_TIME_HIGH_RES_MODE_2
*/
// begin returns a boolean that can be used to detect setup problems.
if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println(F("BH1750 Advanced begin"));
}
else {
Serial.println(F("Error initialising BH1750"));
}
}
void loop() {
float lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
}