聚豐項目 > 書房環(huán)境顏色檢測報警系統(tǒng)
使用VEML6040對環(huán)境顏色檢測,實現(xiàn)對環(huán)境的自適應
anger0925
分享anger0925
團隊成員
anger 工程師
一,項目背景
通過前面學習,已經(jīng)熟悉了世平集團推出基于Vishay VEML4020的環(huán)境顏色檢測方案。不需要有專業(yè)的色彩捕捉知識,就可以實現(xiàn)環(huán)境顏色的采集。還配備了NXP LPC824處理器,可以把環(huán)境顏色完美的體現(xiàn)出來。
采集環(huán)境顏色參數(shù),源于Vishay推出的一顆RGBW傳感器,該傳感器集成了信號處理IC,直接提供I2C接口,讀取環(huán)境顏色數(shù)據(jù)。這傳感器可以檢測紅光、綠光、藍光和白光,每個顏色通道的分辨率為16位。而且體積非常小(2.0mmx1.25mmx1.0mm)采用表面貼裝封裝。在數(shù)碼相機、電視機等消費類產(chǎn)品,讓這些產(chǎn)品可以根據(jù)環(huán)境光來調(diào)整背光的亮度和色溫,使LCD和LED屏幕看起來更舒適。傳感器把顏色平衡、背光控制和色溫檢測所需的電路包含在一個器件里,可節(jié)省空間,同時不需要外置電阻,從而降低成本,簡化設計。VEML6040d的內(nèi)置環(huán)境光光電二極管具有極高的感光度,能探測0.0056lx~11.7klx的光照度,使器件可以工作在有暗鏡的應用里。傳感器對熒光頻閃沒有響應,在關機模式下的電流小于1μA,在-40℃~+85℃范圍內(nèi)能提供優(yōu)異的溫度補償。
器件的工作電壓和I2C總線電壓為2.5V~3.6V,采用無鉛的4pin OPLGA封裝。VEML6040符合RoHS和Vishay綠色標準,無鹵素。
二,項目目標
1,移植FreeRtos實時系統(tǒng),基于該系統(tǒng)實現(xiàn)項目功能;
2,采集環(huán)境顏色數(shù)據(jù),實時顯示在顯示器上;
3,自適應過程:當環(huán)境顏色比較黑時,打開LED燈(D5、D6、D7)。當環(huán)境顏色偏紅時,發(fā)出報警,LED閃爍(D5、D6、D7)。
三,硬件
使用環(huán)境顏色檢測開發(fā)套件。
四,項目過程
1)FreeRtos移植
1,源文件準備,可以到freertos官網(wǎng)上下載:
1)與FreeRTOS內(nèi)核有關的文件數(shù)量僅為3個,分別是list.c queue.c tasks.c croutine.c timers.c該文件位于FreeRTOS\Source
2)與內(nèi)存分配有關的文件共有4個,分別是heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c最新版有5個文件只需選擇其中的1個,我們這里選擇heap_3.c。該文件位于Source\portable\MemMang。
3) 與移植相關的代碼包括port.c,portmacro.h。這些代碼不但和編譯器有關還和平臺(MCU)有關。FreeRTOS先以編譯器為大類,然后再以平臺(MCU)為小類。在這里選擇Keil編譯器,平臺為ARM_CM0。該文件位于Source\portable\RVDS\ARM_CM0。
4)除了上述內(nèi)容之外,還包括FreeRTOS內(nèi)核相關的頭文件。該文件FreeRTOS\Source\include。
2,在工程中加入Freertos文件。
加入的文件有l(wèi)ist.c queue.c tasks.c timers.c heap_3.c,port.c,F(xiàn)reeRTOSCommonHooks.c
3,在工程中加入Freertos文件的頭文件路徑
4,編譯,提示錯誤,沒有FreeRTOSConfig.h文件
編寫該文件對內(nèi)核的配置,需要FreeRTOSConfig.h中的相關宏定義,文件一般與應用文件放在一起。
5,需要在啟動代碼中修改這些中斷向量的名稱,并聲明這些中斷向量為外部函數(shù)。這也是初次使用FreeRTOS容易范的錯誤。我這里就在 FreeRTOSConfig.h中定義:
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
6,在FreeRTOSCommonHooks.c中需要定義三個鉤子函數(shù)
void vApplicationIdleHook(void)
{ }
void vApplicationTickHook(void)
{ }
void vApplicationMallocFailedHook(void)
{
taskDISABLE_INTERRUPTS();
for(;;);
}
7,在main文件中添加內(nèi)核頭文件:
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#include "semphr.h"
8,在mian函數(shù)中添加任務
xTaskCreate(vLEDTask1, "vTaskLed1",
configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL),
(TaskHandle_t *) NULL);
/* Start the scheduler. */
vTaskStartScheduler();
while(1)
{
}
移植基本上結束。但是移植國產(chǎn)中還需要注意一個配置文件FreeRTOSConfig.h
(這個文件自己編寫),F(xiàn)reeRTOS 是高度可配置的。所有的可配置項都在FreeRTOSConfig.h 文件中。每一個Demo 程序中都包含了一個配置好的FreeRTOSConfig.h 文件,可以以Demo程序中的FreeRTOSConfig.h 文件作為模板,在其基礎上加以修改。
2)在系統(tǒng)中添加讀取環(huán)境顏色傳感器數(shù)據(jù)任務
在讀取傳感器數(shù)據(jù)任務函數(shù)vRGB_Sensor中,實現(xiàn),讀取數(shù)據(jù),然后通過隊列講數(shù)據(jù)傳輸?shù)斤@示任務中。
使用隊列時,先創(chuàng)建隊列。
3)顯示傳感器數(shù)據(jù)
創(chuàng)建一個任務,在LCM上顯示讀取的傳感器數(shù)據(jù)。
通過隊列讀取數(shù)據(jù)。
顯示效果:
3)環(huán)境自適應報警系統(tǒng)
使用開發(fā)套件上的傳感器采集環(huán)境光顏色來實現(xiàn)環(huán)境自適應報警系統(tǒng)。
A,當環(huán)境比較暗時,打開LED燈,當光敏傳感器使用。自動調(diào)節(jié)環(huán)境光線,避免光線太暗,影響視力。
當光線比較好時,LED關閉:
當光線比較暗時,打開LED燈。
測試視頻:
B,當環(huán)境顏色偏紅時,發(fā)出報警信號。LED燈閃爍。
測試視頻:
五,項目總結
VEML4020環(huán)境顏色檢測開發(fā)套件簡單地實現(xiàn)環(huán)境顏色的數(shù)據(jù)采集,應用起來非常方便。我在這里只是簡單是使用了他的功能。VEML4020非常強大,可以應用于很多領域。特別是在手機、數(shù)碼相機、電視機等消費類產(chǎn)品,讓這些產(chǎn)品可以根據(jù)環(huán)境光來調(diào)整背光的亮度和色溫,使LCD和LED屏幕看起來更舒適。由于VEML4020傳感器體積分成小,在設計里面可以大大節(jié)省空間,同時不需要外置電阻,從而降低成本,簡化設計。
動心忍性1234: 您好我是無線電雜志的編輯,我們對您的項目十分感興趣,請問您有興趣投稿嗎?成為我們的作者除稿費外還有其他優(yōu)厚條件。敬請參與。投稿請聯(lián)系QQ260534978.
回復