HaaS EDU场景式应用学习 - 光照信息屏
實驗整體介紹
背景
光照傳感器用于檢測光照強(qiáng)度,其工作原理是將檢測光照強(qiáng)度值并將其轉(zhuǎn)化為電壓值,目前在智能家居,智慧城市,智慧農(nóng)業(yè),智慧工廠等物聯(lián)網(wǎng)領(lǐng)域被大量使用。
本實驗的主要結(jié)果是通過I2C總線控制光強(qiáng)度傳感器AP3216C對環(huán)境光強(qiáng)度及物體接近情況進(jìn)行測量并獲取環(huán)境光強(qiáng)度及是否有物體靠近,然后通過OLED顯示屏將讀取到的光強(qiáng)度、接近程度、紅外信息顯示在HaaS EDU K1的屏幕上。
HaaS EDU K1搭載了豐富實用的傳感器,開發(fā)者可以使用這些傳感器針對實際場景需求開發(fā)自己的應(yīng)用。
涉及的知識點
- AP3216C光照與接近傳感器原理
- OLED繪圖
開發(fā)環(huán)境準(zhǔn)備
硬件
開發(fā)用電腦一臺 HAAS EDU K1 開發(fā)板一塊 USB2TypeC 數(shù)據(jù)線一根軟件
AliOS Things開發(fā)環(huán)境搭建
開發(fā)環(huán)境的搭建請參考 @ref HaaS_EDU_K1_Quick_Start (搭建開發(fā)環(huán)境章節(jié)),其中詳細(xì)的介紹了AliOS Things 3.3的IDE集成開發(fā)環(huán)境的搭建流程。HaaS EDU K1 DEMO 代碼下載
HaaS EDU K1 DEMO 的代碼下載請參考 @ref HaaS_EDU_K1_Quick_Start (創(chuàng)建工程章節(jié)),其中, 選擇解決方案: 基于教育開發(fā)板的示例 選擇開發(fā)板: haaseduk1 board configure代碼編譯、燒錄
參考 @ref HaaS_EDU_K1_Quick_Start (3.1 編譯工程章節(jié)),點擊 ? 即可完成編譯固件。 參考 @ref HaaS_EDU_K1_Quick_Start (3.2 燒錄鏡像章節(jié)),點擊 "??" 即可完成燒錄固件。上手把玩
實驗運(yùn)行結(jié)果如下:
實際應(yīng)用場景(產(chǎn)品)介紹
目前光強(qiáng)度傳感器及接近傳感器在以下日常生活、工業(yè)生產(chǎn)等環(huán)境中都有非常廣泛的應(yīng)用。
- 家庭智能燈系統(tǒng)
- 檢測到光強(qiáng)度低于一定亮度之后,觸發(fā)信號控制客廳自動開燈
- 檢測到光強(qiáng)度低于一定亮度之后,有人體靠近則自動打開夜燈/燈帶
- 智能路燈
- 智慧路燈安裝光強(qiáng)度傳感器后可以自動的感知環(huán)境強(qiáng)度,從而做到智能開關(guān),保證交通安全的同時節(jié)省了系統(tǒng)能源
- 智能手機(jī)/平板/電視等
- 智能手機(jī)、平板、電視等消費(fèi)類電子需要感知環(huán)境光溫度并根據(jù)環(huán)境光溫度自動調(diào)節(jié)屏幕亮度,給使用者最佳的視覺體驗的同時也降低了系統(tǒng)的功耗
- 智能手機(jī)上都存在的距離傳感器還可以在通話過程中檢測到聽筒靠近頭部的時候自動熄滅屏幕,防止誤觸碰
- 智能手機(jī)還會用距離傳感器與其它感應(yīng)器實現(xiàn)反轉(zhuǎn)手機(jī)靜音及解鎖/鎖屏等操作
這些是我們?nèi)粘I钪凶畛R姷膸讉€應(yīng)用場景。
光強(qiáng)度傳感器是一種光電傳感器,光電傳感器擁有更廣泛的應(yīng)用范圍,比如煙霧報警系統(tǒng)、工廠煙塵檢測系統(tǒng)、條形碼掃描儀、產(chǎn)品計數(shù)器、轉(zhuǎn)速檢測系統(tǒng)等等。
硬件介紹
電路原理圖
AP3216芯片位于屏幕上方,是通過OLED擴(kuò)展接口和HaaS EDU K1主板連接,最終連接到HaaS1000的I2C1通道。
AP3216C傳感器
AP3216C外觀
AP3216C芯片特性
- 7-bit地址模式,地址:0x1E
- 支持I2C接口Fast Mode (400kbps)
- 支持多種連續(xù)測量/單次測量及光強(qiáng)度、接近指標(biāo)單獨(dú)測試及組合測試
- 內(nèi)置溫度補(bǔ)償電路
- 工作溫度范圍:-30°C到+80°C
- 光強(qiáng)度傳感器
16-bit有效線性輸出
4種動態(tài)可選范圍 - 接近傳感器
10-bit有效線性輸出
AP3216C內(nèi)部框圖
AP3216C主要包含如下幾部分。
AP3216C工作模式
根據(jù)AP3216C的datasheet說明,在正常工作時,它共有3種工作模式:
在這種模式下,AP3216C只對光強(qiáng)度進(jìn)行量測
在這種模式下,AP3216C只對接近程度進(jìn)行量測
在這種模式下,AP3216C會同時對光強(qiáng)度及接近程度進(jìn)行量測
三種模式均支持單次量測也支持循環(huán)量測,其量測穩(wěn)定時間如下:
AP3216C中斷模式
AP3216C提供中斷檢測功能,MCU可以設(shè)定ALS及PS中斷觸發(fā)門限及持續(xù)時間閾值。在環(huán)境亮度及接近程度到達(dá)門限值后持續(xù)時間超出持續(xù)時間閾值之后,會向INT管腳發(fā)送中斷通知MCU進(jìn)行處理。
本案例中未使用中斷模式。
AP3216C工作流程
AP3216C的典型工作流程如下:
對AP3226C進(jìn)行復(fù)位之后,設(shè)定工作模式(連續(xù)/單次測量,ALS/PS/IR組合設(shè)定),之后等待硬件測量穩(wěn)定時間,再發(fā)起讀取測量值的過程。
其中,復(fù)位及模式設(shè)定是對AP3216C的System Configuration寄存器進(jìn)行操作,datasheet中對System Configuration寄存器定義及描述如下:
-
復(fù)位操作
參考datasheet的描述,是通過I2C 向地址為0x00的寄存器寫入0x4 (對應(yīng)二進(jìn)制的100)。 -
模式設(shè)定
ALS only連續(xù)測量模式:是通過I2C 向地址為0x00的寄存器寫入0x4 (對應(yīng)二進(jìn)制的100)。
PS/IR only連續(xù)測量模式:是通過I2C 向地址為0x00的寄存器寫入0x1 (對應(yīng)二進(jìn)制的001)。
ALS+PS/IR連續(xù)測量模式:是通過I2C 向地址為0x00的寄存器寫入0x2 (對應(yīng)二進(jìn)制的010)。
ALS only單次測量模式:是通過I2C 向地址為0x00的寄存器寫入0x5 (對應(yīng)二進(jìn)制的101)。
PS/IR only單次測量模式:是通過I2C 向地址為0x00的寄存器寫入0x6 (對應(yīng)二進(jìn)制的110)。
ALS+PS/IR單次測量模式:是通過I2C 向地址為0x00的寄存器寫入0x7 (對應(yīng)二進(jìn)制的111)。 -
讀取測量結(jié)果
ALS、PS、IR值可以通過如下寄存器的值來獲取。寄存器地址及所讀取數(shù)值詳細(xì)解析方法請參考下表:
ALS光強(qiáng)度解析
通過讀取ALS數(shù)據(jù)寄存器(0x0C和0x0D)得到16bit的ADC count數(shù)據(jù)之后,需要根據(jù)ALS Configuration寄存器的ALS Gain欄位將ADC count數(shù)據(jù)根據(jù)芯片手冊的說明轉(zhuǎn)換成以lux為單位的亮度值。如下圖所示:
PS/IR數(shù)據(jù)解析
PS Data寄存器詳細(xì)定義如下:
- PS 有效位數(shù)為10bit。
- OBJ bit在有物體靠近的時候被設(shè)置成1,否則設(shè)置為0。
- IR_OF bit被設(shè)置成1代表PS值無效(高強(qiáng)度紅外光的情況下會出現(xiàn))
IR數(shù)據(jù)有效位數(shù)同樣為10bit,也有一個IR_OF來標(biāo)識IR/PS數(shù)據(jù)是否有效。
AP3216C判斷物體靠近和遠(yuǎn)離的動作是通過兩組PS 高低閾值寄存器和PS Data寄存器進(jìn)行比對,PS Data高于PS High Threshold之后,則判定為物體遠(yuǎn)離;PS Data低于PS Low Threshold之后,則視為物體靠近。
- PS Low Threshold計算方法:Value(Reg_0x2B) * 4 + Value(Reg_0x2A)
- PS High Threshold計算方法:Value(Reg_0x2D) * 4 + Value(Reg_0x2C)
PS中斷模式說明
在開啟了AP3216C的中斷模式,為了避免靠近物體抖動帶來頻繁觸發(fā)中斷的情況,在PS Data高于PS High Threashold或低于PS Low Threshold之后,需要等待一個PS persist時間,如果PS persist時間之內(nèi),PS Data狀態(tài)沒有發(fā)生變化,則觸發(fā)中斷。
PS Persist的時間可以通過配置PS Configuration寄存器的bit 0:1。
I2C總線技術(shù)
HaaS EDU K1上AP3216C和HaaS1000通過I2C1接口進(jìn)行通信。
I2C總線是飛利浦公司在80年代為了讓CPU可以連接低速周邊設(shè)備而設(shè)計的。外接傳感器是I2C總線最典型的應(yīng)用場景。目前I2C Spec已經(jīng)發(fā)展到了6.0版本。可以通過https://www.nxp.com.cn/docs/en/user-guide/UM10204.pdf 進(jìn)行下載
I2C采用多主從結(jié)構(gòu),I2C主設(shè)備基于地址對I2C從設(shè)備進(jìn)行尋址,采用8-bit數(shù)據(jù)傳輸模式,支持7-bit/10-bit地址模式。I2C總線對I2C傳輸開始/結(jié)束/數(shù)據(jù)傳輸/ACK機(jī)制/時鐘同步/沖突仲裁等進(jìn)行了詳細(xì)的定義。這里就不再贅述。
軟件介紹
HaaS EDU K1的edk_demo 應(yīng)用程序中包含多個應(yīng)用案例,所有的案例軟件設(shè)計都遵循HaaS EDK應(yīng)用架構(gòu)的設(shè)計思想。其設(shè)計思想可以參考“HaaS EDK主系統(tǒng)框架”中的“添加新應(yīng)用”小節(jié)的說明。
簡單來說,所有的子應(yīng)用頁面都需要實現(xiàn)MENU_TYP結(jié)構(gòu)體。
光照信息屏應(yīng)用代碼位于:solutions/eduk1_demo/k1_apps/lightmeter/lightmeter.c中。
在HaaS EDU K1上電之后,按K1或K2鍵左右切換應(yīng)用的時候,如果切換到光照信息屏頁面再到退出該頁面的過程中,lightmeter下面的API會依此被呼叫:
軟件流程
軟件流程圖如下所示。
在進(jìn)入光照信息屏頁面后,啟動名為lightmeter_task的task,周期性的讀取ALS/PS/IR數(shù)據(jù)并判斷物體靠近標(biāo)志之后將相關(guān)數(shù)據(jù)按照一定的規(guī)則打印到OLED屏幕上。
代碼實現(xiàn)
光照信息屏頁面
代碼位置:solutions/eduk1_demo/k1_apps/lightmeter/lightmeter.c
詳細(xì)代碼及注釋如下:
AP3216C驅(qū)動
代碼位置:components/peripherals/sensor/drv/drv_als_ps_ir_liteon_ap3216c.c
以ap3216C初始化和讀取ALS數(shù)值為例,詳細(xì)代碼及注釋如下:
這里的hal_i2c_mem_read的實現(xiàn)和AP3216C datasheet上面讀取寄存器的描述相匹配。
- MCU I2C 主設(shè)備先將寄存器地址通過I2C寫操作發(fā)給AP3216C從設(shè)備
- MCUI2C 主設(shè)備發(fā)起讀操作從AP3216C從設(shè)備讀取寄存器的值
AP3216C寄存器讀取的整個I2C傳輸過程中,詳細(xì)數(shù)據(jù)傳輸過程如下圖所示:
讀取AP3216C的PS和IR寄存器的過程和讀取ALS的過程中I2C的傳輸過程完全一致,這里就不再贅述。
開發(fā)者支持
HaaS官方:https://haas.iot.aliyun.com/
HaaS技術(shù)社區(qū):https://blog.csdn.net/HaaSTech
開發(fā)者釘釘群和公眾號見下圖,開發(fā)者釘釘群每天都有技術(shù)支持同學(xué)值班。
總結(jié)
以上是生活随笔為你收集整理的HaaS EDU场景式应用学习 - 光照信息屏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSPF配置命令及外部选路
- 下一篇: MS SQL Server对表的设计修改