国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

外設移植 Ai-WB2+BH1750 光照強度傳感器

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2024-12-05 14:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下作品由安信可社區用戶

WangChong制作

外設介紹

BH1750是一種基于光電二極管的數字光強傳感器,能夠測量環境中的光照強度,并將其轉換為數字信號。它采用 I2C 接口進行通信,適合用于光強度檢測的各種應用,如自動調節顯示屏亮度、光線感應開關等。

外設規格參數

工作電壓: 2.4V 至 3.6V

測量范圍: 1 至 65535 lux

分辨率:

高分辨率模式(1 lx)

低分辨率模式(4 lx)

通信接口: I2C

I2C 地址: 0x23(默認),0x5C(可選) 根據 Address 是否接拉低或者拉高進行選擇

測量時間:

高分辨率模式: 120ms - 180ms

低分辨率模式: 16ms - 24 ms

待機模式: 0.1 μA(典型值)

功耗:

測量模式: 0.12 mA(典型值)

移植過程

BH1750 數據手冊:https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf

根據數據手冊得知, BH1750 是使用的 I2C 通信,同時我們使用的是 WB2,因此我們需要根據原理圖確認 WB2 的 I2C 接口 PIN。

由于使用的是 WB2-12F 的開發板,所以可以在安信可社區 WB2 專題下找到對應的原理圖,同時根據博流官方 GPIO 的功能復用,可以找到哪些 PIN 支持 I2C。

https://dev.bouffalolab.com/media/doc/602/open/datasheet/zh/html/content/Pindefinition.html

wKgZO2dRSOqAWL65AAF-ZTZTzb4783.jpg

SDK 下的 application/iot-solution/demo_bh1750 下已經提供了一個完整的實現。我們來嘗試將 I2C 配置中的 PIN3(SDA)改成 PIN17 (SDA)。同時將 WB2-12F devkit 的 12 號 PIN 和 17 號 PIN 分別接到 BH1750 的 SCL 和 SDA 上進行燒錄測試。

wKgZPGdRSOuARWNGAAA69lPR2_o232.jpg

wKgZO2dRSOuARkuWAAOMYyhTQak293.jpg

燒錄驗證

wKgZPGdRSOyAZmADAADeLIlPSJQ900.jpg

此時可以通過串口助手已經可以正確的查看到 WB2-12F 正確的讀取了 BH1750 的光照強度。

代碼解讀

#include
#include
#include
#include
#include
#include
// BH1750 的默認 I2C 地址
#define BH1750_DEFAULT_ADDR BH1750_ADDR_L
#define BH1750_ADDR_H 0x5c // BH1750 高地址
#define BH1750_ADDR_L 0x23 // BH1750 低地址
// BH1750 的各種操作命令
#define BH1750_POWER_DOWN 0x00 // 斷電命令
#define BH1750_POWER_ON 0x01 // 開機命令
#define BH1750_RESET 0x07 // 重置命令
#define BH1750_CONTINUOUS_H_MODE 0x10 // 高分辨率模式,持續測量
#define BH1750_CONTINUOUS_H_MODE2 0x11 // 高分辨率模式2,持續測量
#define BH1750_CONTINUOUS_L_MODE 0x13 // 低分辨率模式,持續測量
#define BH1750_ONETIME_H_MODE 0x20 // 高分辨率模式,一次性測量
#define BH1750_ONETIME_H_MODE2 0x21 // 高分辨率模式2,一次性測量
#define BH1750_ONETIME_L_MODE 0x23 // 低分辨率模式,一次性測量
int main(void)
{
// 定義并初始化 I2C 設備 i2c0
static hosal_i2c_dev_t i2c0 = {
.config = {
.address_width = HOSAL_I2C_ADDRESS_WIDTH_7BIT, // 7位地址模式
.freq = 100000, // I2C 通信頻率為 100kHz
.mode = HOSAL_I2C_MODE_MASTER, // I2C 主機模式
.scl = 12, // 時鐘引腳 GPIO 12
.sda = 17, // 數據引腳 GPIO 17
},
.port = 0, // I2C 端口
};
// 初始化 I2C 接口
hosal_i2c_init(&i2c0);
for (;;) {
uint8_t buffer[2]; // 用于接收光照強度數據的緩沖區
uint8_t cmd = BH1750_ONETIME_H_MODE; // 設置 BH1750 的測量模式為高分辨率一次性測量
hosal_i2c_master_send(&i2c0, BH1750_DEFAULT_ADDR, &cmd, 1, HOSAL_WAIT_FOREVER); // 發送測量命令到 BH1750

// 接收來自 BH1750 的測量結果(2字節)
int ret = hosal_i2c_master_recv(&i2c0, BH1750_DEFAULT_ADDR, buffer, 2, 100);

if (ret) {
// 如果接收超時,重新發送上電命令并記錄錯誤日志
cmd = BH1750_POWER_ON;
hosal_i2c_master_send(&i2c0, BH1750_DEFAULT_ADDR, &cmd, 1, 100);
blog_error("i2c timeoutrn");
} else {
// 將接收到的兩個字節數據合并為一個16位整數
uint16_t result = buffer[0];
result <<= 8; // 左移8位,放置高8位
result |= buffer[1]; // 組合低8位
// 將測量值轉換為光照強度(lux)
float luxlevel = result;
result /= 1.2f;
// 輸出光照強度日志
blog_info("lux level: %.02frn", luxlevel);
}
// 任務延時 1000 毫秒,即每隔 1 秒執行一次測量
vTaskDelay(portTICK_RATE_MS * 1000);
}
return 0;
}

庫函數

讓我們簡單的對上面的庫函數進行一下整理

bh1750.c

#include "bh1750.h"
#include
#include
#include
static hosal_i2c_dev_t i2c0 = {
.config = {
.address_width = HOSAL_I2C_ADDRESS_WIDTH_7BIT,
.freq = 100000,
.mode = HOSAL_I2C_MODE_MASTER,
.scl = 12,
.sda = 17,
},
.port = 0,
};
void bh1750_init()
{
blog_info("Initializing I2C...n");
hosal_i2c_init(&i2c0);
}
void read_bh1750(void *args)
{
for (;;)
{
uint8_t buffer[2];
uint8_t cmd = BH1750_ONETIME_H_MODE;
int ret;
blog_info("Sending command to BH1750...n");
ret = hosal_i2c_master_send(&i2c0, BH1750_DEFAULT_ADDR, &cmd, 1, HOSAL_WAIT_FOREVER);
if (ret != 0)
{
blog_error("I2C send failed with error: %dn", ret);
continue;
}
blog_info("Receiving data from BH1750...n");
ret = hosal_i2c_master_recv(&i2c0, BH1750_DEFAULT_ADDR, buffer, 2, 100);
if (ret != 0)
{
cmd = BH1750_POWER_ON;
hosal_i2c_master_send(&i2c0, BH1750_DEFAULT_ADDR, &cmd, 1, 100);
blog_error("I2C receive failed with error: %dn", ret);
}
else
{
uint16_t result = (buffer[0] << 8) | buffer[1];
float luxlevel = result / 1.2f;
blog_info("Lux level: %.02fn", luxlevel);
}
vTaskDelay(pdMS_TO_TICKS(1000)); // 使用宏將毫秒轉換為FreeRTOS時間單位
}
}

bh1750.h

#ifndef BH1750_H
#define BH1750_H
#include
// BH1750 的默認 I2C 地址
#define BH1750_DEFAULT_ADDR BH1750_ADDR_L
#define BH1750_ADDR_H 0x5c // BH1750 高地址
#define BH1750_ADDR_L 0x23 // BH1750 低地址
// BH1750 的各種操作命令
#define BH1750_POWER_DOWN 0x00 // 斷電命令
#define BH1750_POWER_ON 0x01 // 開機命令
#define BH1750_RESET 0x07 // 重置命令
#define BH1750_CONTINUOUS_H_MODE 0x10 // 高分辨率模式,持續測量
#define BH1750_CONTINUOUS_H_MODE2 0x11 // 高分辨率模式2,持續測量
#define BH1750_CONTINUOUS_L_MODE 0x13 // 低分辨率模式,持續測量
#define BH1750_ONETIME_H_MODE 0x20 // 高分辨率模式,一次性測量
#define BH1750_ONETIME_H_MODE2 0x21 // 高分辨率模式2,一次性測量
#define BH1750_ONETIME_L_MODE 0x23 // 低分辨率模式,一次性測量
// 函數聲明
void bh1750_init();
void read_bh1750(void *args);
#endif // BH1750_H
main.c
#include
#include
#include
#include
#include
#include
#include "bh1750.h"
int main(void)
{
bh1750_init();
xTaskCreate(read_bh1750, "BH1750 Task", 4096, NULL, 10, NULL);
return 0;
}

注意事項

切記,不要在主函數中開啟任務的調度器,主函數在其他地方使用 extern 引用了,相當于一個中轉的中間方法,可以用于初始化 task。

附上后續的驗證過程:

驗證過程

1. 編譯代碼

上述帖子中已經貼出來了完整的工程代碼。直接將其拷貝到 sdk 目錄,為了與 sdk 中的代碼沖突,將驗證工程目錄改名為 demo_bh17501。

進入到目錄中進行編譯:

wKgZO2dRSOyAabDlAABNAA_Dqss280.jpg

很快就可以看到編譯成功。

wKgZPGdRSOyAHHaiAAExS5bd2VM780.jpg

2. 代碼燒錄

wKgZO2dRSO2AbiPWAADehpAZljQ924.jpg

燒錄完成:

wKgZPGdRSO2ABHzPAAGYocshE7c784.jpg

3. 測試驗證

wKgZO2dRSO2AEKJOAAEVjuHyh1U133.jpg

打開串口工具:

可以看到傳感器的數據有輸出了。實際測試用不同強度的光線照射得到的 lux 是和預期相符的。

wKgZO2dRSO6AC3tHAAF7yuSYC5k476.jpg

至此,驗證通過。


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2576

    文章

    55041

    瀏覽量

    791345
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    OPT4003-Q1:高性能數字環境光傳感器的深度解析

    OPT4003-Q1:高性能數字環境光傳感器的深度解析 在電子設備的設計中,環境光傳感器扮演著至關重要的角色,它能感知周圍環境的光照強度,為設備提供智能化的光照調節功能。今天我們要深入
    的頭像 發表于 02-11 10:35 ?172次閱讀

    ElfBoard技術貼|借助AI編程,輕松搞定ELF-RK3506開發板上光照傳感器的數據讀取

    ,完全依賴TRAE工具生成直接控制硬件外設的代碼,具體以光照傳感器為例。書寫任務需求首先創建一個“功能需求.md”文件。文件內容如下:硬件配置:1.ELF-RK3506開發板2.GY-
    的頭像 發表于 01-29 16:55 ?1378次閱讀
    ElfBoard技術貼|借助<b class='flag-5'>AI</b>編程,輕松搞定ELF-RK3506開發板上<b class='flag-5'>光照</b><b class='flag-5'>傳感器</b>的數據讀取

    借助Arm SME2釋放神經相機降噪技術潛能

    手機攝影愛好者都有過這樣的體驗:白天拍的畫面清晰銳利,一到暗光環境就畫質崩塌。這是因為傳感器捕捉到的光子數量減少時,信噪比 (SNR) 會急劇下降。在 1000 勒克斯的光照條件下,信號占據主導
    的頭像 發表于 01-09 15:33 ?424次閱讀
    借助Arm SME<b class='flag-5'>2</b>釋放神經相機降噪技術潛能

    【瑞薩RA6E2地奇星開發板試用】驅動 TEMT6000 環境光傳感器

    【瑞薩RA6E2地奇星開發板試用】驅動 TEMT6000 環境光傳感器 本文介紹了 RA6E2 地奇星開發板通過 ADC 讀取 TEMT6000 傳感器數據,實現串口打印環境
    發表于 12-07 17:32

    智能制造中,如何為物理AI挑選傳感器

    當與 AI(視覺 AI、聲學 AI 或物理 AI)相結合時,工業傳感器讓物理系統具備了自學習能力,進而助推制造效率、安全性的提升,并促進數字
    的頭像 發表于 10-20 14:07 ?4516次閱讀
    智能制造中,如何為物理<b class='flag-5'>AI</b>挑選<b class='flag-5'>傳感器</b>?

    [RA4M2-SENSOR]使用OLED顯示光照傳感器信號數據

    基于 FreeRTOS 構建,能夠與其他實 時操作系統(RTOS)和中間件兼容,并且可以通過豐富的外設接口(如 I2C、SPI、ADC 等)與各種傳感器模塊(如溫濕度、氣體、光傳感器
    發表于 09-13 20:30

    海綿拉伸撕裂強度試驗機中傳感器的電子信號處理技術

    在海綿拉伸撕裂強度試驗機中,傳感器電子信號處理技術至關重要。 在海綿拉伸撕裂強度試驗機的檢測系統中,傳感器是捕捉力學信號的“前端感知”,電
    的頭像 發表于 09-05 09:40 ?572次閱讀

    超強感光,即時檢測!高精度光照傳感器賦能納祥科技迷你照度計方案

    覆蓋,采樣率達2次/秒,無需復雜調試即可瞬時檢測,很好地平衡性能與能耗。方案概述本方案通過高精度光電傳感器捕捉環境光照強度,經單片機實時校準處理,驅動LED屏直觀
    的頭像 發表于 09-02 15:41 ?551次閱讀
    超強感光,即時檢測!高精度<b class='flag-5'>光照</b><b class='flag-5'>傳感器</b>賦能納祥科技迷你照度計方案

    【RA-Eco-RA6M4開發板評測】用I2C實現光照強度的檢測和顯示

    這個項目我們利用瑞薩的RA6M4的I2C控制功能實現光照傳感器BH1750光照測試,并進行屏幕顯示。 為了方便進行
    發表于 08-26 22:05

    凱米斯溫濕度照度一體傳感器:環境監測的智能哨兵

    在氣象觀測、農業種植、工業自動化及環境監控領域,精準的環境參數采集是保障安全與效率的關鍵。凱米斯科技推出的溫濕度照度一體傳感器,以全數字化檢測技術為核心,集成了溫度、濕度和光照強度的高精度測量功能
    的頭像 發表于 08-11 09:02 ?683次閱讀
    凱米斯溫濕度照度一體<b class='flag-5'>傳感器</b>:環境監測的智能哨兵

    數字16位串行輸出型環境光傳感器IC BH1750FVI數據手冊

    BH1750FVI數據手冊
    發表于 08-09 16:04 ?0次下載

    二氧化碳溫濕度光照傳感器:四合一,在線監測氣體

    二氧化碳溫濕度光照傳感器是一種多功能環境監測設備,集成了測量二氧化碳濃度(CO?)、空氣溫度及光照強度(照度)四種關鍵環境參數的功能于一體。通過內置的多類型傳感器元件,實現對環境條件
    的頭像 發表于 07-15 17:21 ?769次閱讀

    【沁恒CH585開發板免費試用體驗】+光照傳感器及其檢測

    光照傳感器在對環境的光線情況的檢測中起著重要的作用,這里所采用的是數字式光照傳感器BH1750,它具有集成度高和檢測精度高的特點。 該
    發表于 07-06 00:08

    **【技術干貨】Nordic nRF54系列芯片:傳感器數據采集與AI機器學習的完美結合**

    和更多外設接口。無論是運行還是休眠狀態,功耗表現都非常出色! 3. 在傳感器數據采集與AI機器學習中的優勢? 答:主頻高、功耗低,內置專用核處理數據采集,還配備AI加速
    發表于 04-01 00:00

    智能光照傳感器:精準測量,優化光照環境

    在當今科技日新月異的時代,智能設備已經滲透到我們生活的方方面面,從智能家居到工業自動化,再到現代農業,它們都在發揮著不可或缺的作用。而在這一系列的智能設備中,智能光照傳感器以其獨特的功能和廣泛
    的頭像 發表于 03-10 08:39 ?784次閱讀