0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣在Arduino上使用BH1750環(huán)境光傳感器

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-05 17:07 ? 次閱讀

何時(shí)您將手機(jī)放在陽(yáng)光下或強(qiáng)光下,然后會(huì)根據(jù)照明條件自動(dòng)調(diào)節(jié)亮度。如今,無(wú)論是電視還是移動(dòng)電話,如今大多數(shù)顯示設(shè)備都內(nèi)置有環(huán)境光傳感器,可以自動(dòng)調(diào)節(jié)亮度。今天,在本教程中,我們將使用一個(gè)這樣的傳感器 BH1750光傳感器模塊并將其與Arduino 連接,并在16x2 LCD上顯示Lux值。

BH1750數(shù)字光傳感器模塊的介紹

BH1750 是數(shù)字環(huán)境光傳感器或光強(qiáng)度傳感器,可用于根據(jù)室外照明條件自動(dòng)調(diào)整手機(jī),LCD顯示屏的亮度,或打開/關(guān)閉汽車前燈。

該傳感器使用I 2 C串行通信協(xié)議,這使得它更易于與微控制器一起使用。對(duì)于I2C通信,它具有SDISDA引腳。 BH1750環(huán)境光傳感器的引腳排列如下所示:

怎樣在Arduino上使用BH1750環(huán)境光傳感器

此傳感器的輸出位于 LUX (lx)中,因此不需要任何進(jìn)一步的計(jì)算。勒克斯是測(cè)量光強(qiáng)度的單位。它根據(jù)照射到特定區(qū)域的光量來(lái)測(cè)量強(qiáng)度。 1 lux等于每平方米1流明。

傳感器的工作電壓范圍為 2.4V至3.6V (通常為3.0V),消耗的電流為 0.12mA 。該傳感器具有寬范圍和高分辨率(1-65535lx),此外,測(cè)量偏差也很小(約+/- 20%)。它也可以獨(dú)立工作,而無(wú)需任何外部組件。

盡管LDR傳感器也可以用于基于照明條件來(lái)控制設(shè)備,但其準(zhǔn)確性不高。我們已經(jīng)使用LDR傳感器構(gòu)建了許多光控應(yīng)用程序:

使用LDR的Arduino光傳感器電路

使用LDR和555定時(shí)器IC的黑暗檢測(cè)

簡(jiǎn)單的LDR電路使用RGB LED和LDR來(lái)檢測(cè)光

Arduino混色燈

Arduino BH1750環(huán)境光傳感器電路圖

將BH1750光傳感器與Arduino連接的電路圖如下所示。

BH1750的I2C通信引腳SDA和SCL分別連接到Arduino引腳A4和A5,用于I 2 C通信。我們知道傳感器的工作電壓為3.3v,因此BH1750的VCC和GND連接到Arduino的3.3V和GND。對(duì)于LCD,數(shù)據(jù)引腳(D4-D7)連接到Arduino的數(shù)字引腳D2-D5,RS和EN引腳連接到Arduino的D6和D7。 LCD的V0連接到電位器,并使用一個(gè)10k電位器來(lái)控制LCD的亮度。

編程Arduino以連接BH1750光傳感器

使用此 LUX傳感器與Arduino 的編程部分非常簡(jiǎn)單。盡管此傳感器有一個(gè)庫(kù),但我們也可以不使用它。

首先,我們包含用于LCD和I 2 C協(xié)議。

#include

#include

在設(shè)置功能中,我們已經(jīng)初始化了LCD和傳感器,并在屏幕上打印了打開消息LCD。

void setup()

{

Wire.begin();

lcd.begin(16,2);

lcd.print(“ BH1750 Light ”);

lcd.setCursor(0,1);

lcd.print(“Intensity Sensor”);

delay(2000);

}

此處 BH1750_Read 和 BH1750_Init 功能用于分別讀取和寫入Lux值。 Wire.beginTransmission()函數(shù)用于開始傳輸,而 Wire.requestFrom(address,2)函數(shù)用于讀取寄存器,其中2表示寄存器數(shù)。

進(jìn)一步的 Wire.endTransmission()用于結(jié)束傳輸,并且 Wire.write()函數(shù)用于通過(guò)輸入以下內(nèi)容轉(zhuǎn)到所需的寄存器

int BH1750_Read(int address)

{

int i=0;

Wire.beginTransmission(address);

Wire.requestFrom(address, 2);

while(Wire.available())

{

buff[i] = Wire.read();

i++;

}

Wire.endTransmission();

return i;

}

void BH1750_Init(int address)

{

Wire.beginTransmission(address);

Wire.write(0x10);

Wire.endTransmission();

}

在 loop 函數(shù)中,我們是通過(guò)LCD打印實(shí)時(shí)照度值。首先將 BH1750_Read 函數(shù)的返回值與2進(jìn)行比較,然后如果等于2,則開始打印Lux值。此處將這些值與2進(jìn)行比較,因?yàn)?BH1750_Read 函數(shù)返回寄存器計(jì)數(shù)的值,我們只讀取2個(gè)寄存器。因此,當(dāng)達(dá)到2時(shí),程序開始打印光強(qiáng)度的LUX值。

然后使用公式從兩個(gè)寄存器獲取值并將它們除以1.2

void loop()

{

int i;

uint16_t value=0;

BH1750_Init(BH1750address);

delay(200);

if(2==BH1750_Read(BH1750address))

{

value=((buff[0]《《8)|buff[1])/1.2;

lcd.clear();

lcd.print(“Intensity in LUX”);

lcd.setCursor(6,1);

lcd.print(value);

}

delay(150);

}

最后打開Arduino的電源,然后將程序上傳到Arduino。程序一旦上傳,LCD便開始以LUX單位顯示光強(qiáng)度。您還可以通過(guò)更改傳感器周圍的光強(qiáng)度來(lái)更改值,如下面的視頻所示。

代碼

#include

#include

int BH1750address = 0x23;

byte buff [2];

LiquidCrystal LCD(7,6,5,4,3,2);//RS,E,D4,D5,D6,D7

void setup()

{

Wire.begin();

//Serial.begin(9600);

lcd.begin(16,2);

lcd.print(“ BH1750 Light”);

lcd.setCursor(0,1);

lcd.print(“ Intensity Sensor”);

delay(2000);

}

void loop()

{

int i;

uint16_t value = 0;

BH1750_Init(BH1750address);

delay(200);

if(2 == BH1750_Read(BH1750address))

{

value =((buff [0] 《《8)| buff [1])/1.2;

lcd.clear();

lcd.print(“強(qiáng)度(LUX)”);

lcd.setCursor(6,1);

lcd.print(value);

//Serial.print(val);

//Serial.println(“[lux]“);

}

delay(150);

}

int BH1750_Read(int address)

{

int i = 0;

Wire.beginTransmission(地址);

Wire.requestFrom(地址,2);

while(Wire.available())

{

buff [i] = Wire.read();

i ++;

}

Wire.endTransmission();

返回i;

}

void BH1750_Init(int address)

{

Wire.beginTransmission(地址);

Wire.write(0x10);

Wire.endTransmission();

}

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50445

    瀏覽量

    751067
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6457

    瀏覽量

    186502
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    16位數(shù)字輸出型環(huán)境光強(qiáng)度傳感器集成電路bh1750FVI中文數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《16位數(shù)字輸出型環(huán)境光強(qiáng)度傳感器集成電路bh1750FVI中文數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 09-11 14:26 ?1次下載

    使用OPT4003-Q1環(huán)境傳感器進(jìn)行光源檢測(cè)

    電子發(fā)燒友網(wǎng)站提供《使用OPT4003-Q1環(huán)境傳感器進(jìn)行光源檢測(cè).pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:31 ?0次下載
    使用OPT4003-Q1<b class='flag-5'>環(huán)境</b><b class='flag-5'>光</b><b class='flag-5'>傳感器</b>進(jìn)行光源檢測(cè)

    四種常見(jiàn)環(huán)境傳感器及適用場(chǎng)景

    環(huán)境傳感器是一種感應(yīng)周圍環(huán)境光線強(qiáng)度的器件。從自動(dòng)調(diào)節(jié)顯示亮度以優(yōu)化視覺(jué)體驗(yàn),到智能節(jié)能,環(huán)境
    的頭像 發(fā)表于 07-18 10:23 ?955次閱讀

    基于小熊派的智慧家居系統(tǒng)

    基于小熊派的智慧家居系統(tǒng) 1)使用STM32CubeMX軟件進(jìn)行裸機(jī)驅(qū)動(dòng)文件的生成; 2)串口打印采集到的感值、溫度值和濕度值,其中 BH1750傳感器負(fù)責(zé)采集光強(qiáng)度值,SHT30傳感器
    發(fā)表于 05-31 18:26

    環(huán)境傳感器的選擇與設(shè)計(jì)技巧

    。電子閱讀裝置和電視,環(huán)境傳感器可用于調(diào)整屏幕色溫,以獲得更舒適的閱讀或觀看體驗(yàn)。 此外,
    的頭像 發(fā)表于 05-05 10:18 ?862次閱讀
    <b class='flag-5'>環(huán)境</b><b class='flag-5'>光</b><b class='flag-5'>傳感器</b>的選擇與設(shè)計(jì)技巧

    多個(gè)ST60同一環(huán)境中工作時(shí),它們之間是否會(huì)相互干擾?

    多個(gè)ST60同一環(huán)境中工作時(shí),它們之間是否會(huì)相互干擾?會(huì)不會(huì)有配對(duì)錯(cuò)誤的風(fēng)險(xiǎn)?
    發(fā)表于 03-29 07:10

    【外設(shè)移植】I2C 光照度傳感器BH1750)M61開發(fā)板驅(qū)動(dòng)

    本作品由安信可社區(qū)用戶 制作 IC光度傳感器模塊種類很多,我選擇一種比較常用的模塊(BH1750)做外設(shè)移植。BH1750的優(yōu)點(diǎn)如下: 1、支持標(biāo)準(zhǔn)快速模式的IIC通信 2、模塊IIC通信地址可以
    的頭像 發(fā)表于 03-21 11:24 ?876次閱讀
    【外設(shè)移植】I2C 光照度<b class='flag-5'>傳感器</b>(<b class='flag-5'>BH1750</b>)M61開發(fā)板驅(qū)動(dòng)

    I2C光照度傳感器BH1750)M61開發(fā)板驅(qū)動(dòng)步驟

    IC光度傳感器模塊種類很多,我選擇一種比較常用的模塊(BH1750)做外設(shè)移植。
    的頭像 發(fā)表于 03-17 16:00 ?2319次閱讀
    I2C光照度<b class='flag-5'>傳感器</b>(<b class='flag-5'>BH1750</b>)M61開發(fā)板驅(qū)動(dòng)步驟

    淺析高壓開關(guān)配電室SF6環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)

    化學(xué)SF6濃度傳感器,采用熱裂解-電化學(xué)復(fù)合檢測(cè)技術(shù)對(duì)高壓開關(guān)配電室環(huán)境中SF6濃度實(shí)時(shí)進(jìn)行監(jiān)測(cè),同時(shí)監(jiān)測(cè)氧氣含量、溫度、濕度等參數(shù),并且當(dāng)配電室環(huán)境中SF6濃度、氧氣含量超過(guò)標(biāo)準(zhǔn)時(shí),自動(dòng)啟動(dòng)現(xiàn)場(chǎng)排風(fēng)扇進(jìn)行排風(fēng),確保進(jìn)入現(xiàn)場(chǎng)的工
    的頭像 發(fā)表于 02-19 14:15 ?497次閱讀
    淺析高壓開關(guān)配電室SF6<b class='flag-5'>環(huán)境</b>監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)

    手機(jī)環(huán)境傳感器,泄露用戶隱私?

    來(lái)源:剎客網(wǎng)絡(luò)科技資訊,謝謝編輯:感知芯視界 Link 麻省理工學(xué)院計(jì)算機(jī)科學(xué)和人工智能實(shí)驗(yàn)室(CSAIL)的一項(xiàng)研究論文顯示,Android 和 iPhone 手機(jī)的環(huán)境傳感器可以變成攝像頭,讓
    的頭像 發(fā)表于 02-04 09:16 ?446次閱讀

    【飛騰派4G版免費(fèi)試用】飛騰派+4G+EMQX+eKuiper +Zigbee 傳感器搭建物聯(lián)網(wǎng)邊緣計(jì)算網(wǎng)關(guān)

    本文只介紹一個(gè)小的單元測(cè)試,系統(tǒng)集成后面再增加。飛騰開發(fā)板I2C接口連接了BH1750光照傳感器,模塊測(cè)試的具體內(nèi)容為讀取傳感器數(shù)據(jù),并以1次/S的頻率將光照傳感器強(qiáng)度數(shù)據(jù)通過(guò)MQT
    發(fā)表于 12-29 18:25

    【飛騰派4G版免費(fèi)試用】硬件編程、運(yùn)行、代碼編譯之I2C光照傳感器調(diào)試

    0.概述 本文主要介紹以I2C 接口的光照傳感器BH1750為例子,介紹硬件編程、運(yùn)行、C代碼編譯和運(yùn)行。 1.光照傳感器概述 BH1750 是一款數(shù)字化的光強(qiáng)度
    發(fā)表于 12-17 18:00

    【涂鴉T2-U開發(fā)板試用體驗(yàn)】2、添加bh1750

    前言 本章介紹如何在涂鴉T2-U開發(fā)板添加bh1750驅(qū)動(dòng)并實(shí)現(xiàn)定時(shí)讀取數(shù)據(jù)。 一、基礎(chǔ)介紹 BH1750( GY-302 )光照傳感器
    發(fā)表于 12-01 22:55

    VD6283TX環(huán)境傳感器驅(qū)動(dòng)開發(fā)(1)----獲取ID

    環(huán)境傳感器是一種光電探測(cè),能夠?qū)?b class='flag-5'>光轉(zhuǎn)換為電壓或者電流,使用多光譜環(huán)境
    的頭像 發(fā)表于 12-01 16:05 ?645次閱讀
    VD6283TX<b class='flag-5'>環(huán)境</b><b class='flag-5'>光</b><b class='flag-5'>傳感器</b>驅(qū)動(dòng)開發(fā)(1)----獲取ID

    傳感器環(huán)境監(jiān)測(cè)中的作用及優(yōu)勢(shì)

    、壓力傳感器、傳感器等。隨著人類活動(dòng)的不斷增加,環(huán)境污染問(wèn)題日益凸顯,為了實(shí)時(shí)、有效地監(jiān)控環(huán)境狀況,
    的頭像 發(fā)表于 11-21 17:49 ?2701次閱讀