關注、星標嵌入式云IOT技術圈,精彩及時送達
我買來做顏色識別傳感器的模塊是TCS34725,如下圖所示(相關資料和本文demo請滑到文末通過clone我的碼云倉庫鏈接獲取):
我買的是如上圖所示的方形版本,
1、顏色識別傳感器TCS34725概述
本模塊是基于 AMS 的 TCS3472XFN 彩色光數字轉換器為核心的顏色傳感器,傳感器提供紅色,綠色,藍色(RGB)和清晰光感應值的數字輸出,集成紅外阻擋濾光片可最大限度地減少入射光的紅外光譜成分,并可精確地進行顏色測量,具有高靈敏度,寬動態范圍和紅外阻隔濾波器,最小化 IR 和 UV 光譜分量效應,以產生準確的顏色測量,并且帶有環境光強檢測和可屏蔽中斷,通過 I2C 介面通信,(摘自說明手冊)
顏色傳感器的應用:顏色分類分揀系統、多顏色噴頭的3D列印機、醫療方面等,
2、原理圖與通信介面
通信協議是基于I2C,I2C時序如下:
寫時序:
讀時序:
I2C的設備地址是0x29,
I2C相關的文章可以參考:
如何看懂時序圖(以SPI/I2C為例)
淺談總線通信機制(通信基礎+串口+I2C)
詳述I2C總線協議、時序,入門不再是難事
3、顏色傳感器E53小板純手工打造



4、STM32CubeMX配置
由于我手焊的這塊E53直接用的就是I2C1介面,所以就在以往帶LCD的工程上再配置一路I2C即可:
以往文章有關小熊派的SPI OLED的demo參考:
讓傳感器資料更直觀之LCD曲線顯示
自己動手擼個簡單的LCD驅動框架吧!
基于小熊派光強傳感器BH1750狀態機驅動專案升級(帶LCD屏顯示)
接下來直接生成工程即可,
5、移植例程
官方已經為我們提供了STM32的例程代碼,所以我們直接移植過來然后修改成我們想要的效果就行了,白嫖毫無費功夫:

當然,如果你覺得調的引數有問題,可以修改下面這個函式,將積分時間進行修改:
int begin(void)
{
/* Make sure we're actually connected */
uint8_t x = read8(TCS34725_ID);
if(x != 0x4D )
return false ;
_tcs34725Initialised = true;
/* Set default integration time and gain */
/*積分時間,增益值控制*/
setIntegrationTime(TCS34725_INTEGRATIONTIME_2_4MS);
//RGB值過大,光強超出檢查范圍,減小增益(TCS34725_GAIN_16X)
setGain(TCS34725_GAIN_1X);
/* Note: by default, the device is in power down mode on bootup */
enable();
return true;
}
所有的宏定義位于tcs34725.h中,這些宏定義具體的作用是什么,請詳細閱讀該模塊的資料手冊:
6、實驗效果



經過測驗結果,我個人感覺這個傳感器的識別效果誤差還是挺大的,可能會受環境、距離等因素影響,不過,用來簡單做些DIY問題不大,
7、專案開源地址
本節代碼已同步到碼云的代碼倉庫中,獲取方法如下:


碼云倉庫:
https://gitee.com/morixinguan/bear-pi/tree/master/25.TCS34725_Color_Sensor
獲取專案方法:
git clone https://gitee.com/morixinguan/bear-pi.git
我還將之前做的一些專案以及練習例程在近期內全部上傳完畢,與大家一起分享交流,如果有任何問題或者對該專案感興趣,歡迎加我微信:morixinguan一起交流學習,

往期精彩
都說軟體架構要分層、分模塊,具體應該怎么做(二)
開源:智能寵物彈射喂食器連載貼之步進電機控制(二)
U盤容量大小造假技術手段實作之8M變4G(以STM32 SPI_FLASH為例)
手把手教你在STM32上實作OLED視頻播放(很簡單也很硬很肝!)
一些值得被定義為常用C語言頭檔案庫的漂亮宏定義(值得收藏,以備使用參考)
覺得本次分享的文章對您有幫助,隨手點[在看]并轉發分享,也是對我的支持,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290742.html
標籤:其他
