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