概述
您現在可以通過這種可愛的彩色光傳感器以令人眼花color亂的顏色看到電子設備。我們找到了市場上最好的色彩傳感器TCS34725,它具有RGB和透明光敏元件。集成在芯片上并位于色彩感應光電二極管上的IR阻擋濾光片可最大程度地減少入射光的IR光譜分量,并可以精確地進行顏色測量。濾光片意味著您將獲得比大多數傳感器更真實的色彩,因為人類看不到紅外線。該傳感器還具有令人難以置信的3,800,000:1動態范圍,并且積分時間和增益可調,因此適合在深色玻璃后面使用。
我們還添加了支持電路,例如3.3V穩壓器,因此您可以安全地使用3-5VDC的電壓為分接器供電,并為I2C引腳進行電平轉換,以便它們可以與3.3V或5V邏輯一起使用。最后,我們指定了一個不錯的中性4150°K溫度LED,板上帶有MOSFET驅動器,以照亮您要感應的內容。 LED可以通過任何邏輯電平輸出輕松打開或關閉。
為獲得更大的靈活性,我們為該評估板制作了兩個不同的版本:適用于面包板的分線器和旨在與Flora可穿戴平臺配合使用的可穿戴版本。
組裝和接線
兩個顏色傳感器都預焊接了所有表面貼裝組件。 Breakout-board版本附帶一個可選的接頭,用于面包板。焊接頭是一個簡單的過程:
程序集(僅限突破版本)
然后焊接!焊接所有引腳以確保良好的電氣連接行動。
放置標題,如有必要,將標題修剪成一定長度,然后將其(長針向下)插入面包板。
將接點定位將接點放在排針的裸露短端上。
接線,這些傳感器通過2線制I2C接口進行通信。要連接到處理器,總共只需要4條電線。
Flora接線:連接來源:
3.3v-》 3v(紅線)
GND-》 GND(黑線)
SDA-》 SDA(白線)
SCL-》 SCL(綠線)
Arduino接線:從以下連接跳線:
5v-》 VIN(紅線)
GND-》 GND(黑線)
SDA-》 SDA(橙色線)
SCL-》 SCL(白線)
注意:在老式的Arduino(如Duemilanove和pre R3 UNO)上,SDA位于Analog 4上一個d SCL位于模擬5上。
在R2 Megas之前,SDA位于Digtital 20上,SCL位于數字21上。對于萊昂納多,SDA是數字2引腳,SCL是數字3引腳。
要控制LED (僅限突破版本)-可以將LED引腳拉低以關閉LED。這可以通過三種方式完成:
直接接地,以完全將其關閉。
連接到備用數字引腳,并使用digitalWrite()控制。
將LED引腳連接到INT引腳,并使用setInterrupt()進行控制(有關詳細信息,請參見庫參考)。
div》 Python和CircuitPython
將TCS34725傳感器與Python和CircuitPython以及Adafruit CircuitPython TCS34725模塊一起使用很容易。此模塊使您可以輕松編寫從傳感器讀取顏色的Python代碼。
您可以將此電路與任何CircuitPython微控制器板或具有GPIO和Python的計算機配合使用,這要歸功于我們的CircuitPython-for Adafruit_Blinka -Python兼容性庫。
CircuitPython微控制器接線
首先,將TCS34725完全連接到您的開發板上,就像Arduino的前幾頁所示。以下是通過I2C連接將Feather M0連接到傳感器的示例:
板3V 至傳感器VIN
板GND 到傳感器GND
板載SCL 到 sensorSCL
板載SDA 到傳感器SDA
Python計算機接線
由于有數十種Linux計算機/主板可以使用我們將展示Raspberry Pi的接線。對于其他平臺,請訪問Linux上的CircuitPython指南,以了解您的平臺是否受支持。
以下是與I2C相連的Raspberry Pi:
Pi 3V3 至傳感器VIN
Pi GND 到傳感器GND
Pi SCL 到傳感器SCL
Pi SDA 到傳感器SDA
CircuitPython安裝TCS34725庫 》
您需要在CircuitPython板上安裝Adafruit CircuitPython TCS34725庫。
首先請確保您正在為板運行最新版本的Adafruit CircuitPython。
下一步,您將需要安裝必要的庫才能使用硬件-請仔細按照以下步驟從Adafruit的CircuitPython庫捆綁包中查找和安裝這些庫。我們的簡介指南上有一個很棒的頁面,介紹如何為快速和非表達板安裝庫包。
請記住非表達板,例如,您需要從束中手動安裝必要的庫:
adafruit_tcs34725.mpy
adafruit_bus_device
在繼續制作之前確保您開發板上的lib文件夾或根文件系統已復制 adafruit_tcs34725.mpy 和 adafruit_bus_device 文件和文件夾。
下一步連接到開發板的串行REPL,這樣您就可以在CircuitPython上運行》》》 提示。
TCS34725庫的Python安裝
您需要安裝Adafruit_Blinka庫,該庫在以下方面提供CircuitPython支持蟒蛇。這可能還需要在您的平臺上啟用I2C并驗證您正在運行Python3。由于每個平臺都略有不同,并且Linux經常更改,請訪問Linux上的CircuitPython指南以準備好您的計算機!
完成后,從命令行運行以下命令:
sudo pip3 install adafruit-circuitpython-tcs34725
如果您的默認Python是版本3,則可能需要改為運行“ pip”。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!
CircuitPython和Python用法
為演示傳感器的用法,我們將對其進行初始化,并從開發板的Python REPL中讀取顏色以及更多內容。
運行以下代碼以導入必要的模塊并初始化與傳感器的I2C連接:
下載:文件
復制代碼
import board
import busio
import adafruit_tcs34725
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c) import board
import busio
import adafruit_tcs34725
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
現在,您就可以從傳感器使用以下任意屬性:
color_rgb_bytes -紅色,綠色和藍色值的三元組。這些以字節為單位從0到255返回(0是低強度,255是最大強度)。
color_temperature -傳感器檢測到的開爾文色溫。
lux -傳感器檢測到的以勒克斯為單位的光強度。這是根據顏色計算得出的,可能不是非常準確!
下載:文件
復制代碼
print(‘Color: ({0}, {1}, {2})’.format(*sensor.color_rgb_bytes))
print(‘Temperature: {0}K’.format(sensor.color_temperature))
print(‘Lux: {0}’.format(sensor.lux)) print(‘Color: ({0}, {1}, {2})’.format(*sensor.color_rgb_bytes))
print(‘Temperature: {0}K’.format(sensor.color_temperature))
print(‘Lux: {0}’.format(sensor.lux))
此外,您還可以讀取和寫入一些屬性來更改傳感器的行為:
integration_time -傳感器的積分時間(以毫秒為單位)。
gain -傳感器的增益必須為1、4、16、60。
ul》
下載:文件
復制代碼
sensor.integration_time = 200
sensor.gain = 60 sensor.integration_time = 200
sensor.gain = 60
有關每秒打印范圍的完整演示,請參見simpletest.py示例。將其保存為板上的 code.py 并檢查REPL輸出以查看每秒打印的范圍。
帶有CircuitPython的TCS34725!
完整的示例代碼
下載:Project Zip 或 tcs34725_simpletest.py | 在Github上查看
復制代碼
# Simple demo of the TCS34725 color sensor.
# Will detect the color from the sensor and print it out every second.
import time
import board
import busio
import adafruit_tcs34725
# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
# Main loop reading color and printing it every second.
while True:
# Read the color temperature and lux of the sensor too.
temp = sensor.color_temperature
lux = sensor.lux
print(‘Temperature: {0}K Lux: {1}’.format(temp, lux))
# Delay for a second and repeat.
time.sleep(1.0)
# Simple demo of the TCS34725 color sensor.
# Will detect the color from the sensor and print it out every second.
import time
import board
import busio
import adafruit_tcs34725
# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
# Main loop reading color and printing it every second.
while True:
# Read the color temperature and lux of the sensor too.
temp = sensor.color_temperature
lux = sensor.lux
print(‘Temperature: {0}K Lux: {1}’.format(temp, lux))
# Delay for a second and repeat.
time.sleep(1.0)
Arduino代碼
下載Adafruit_TCS34725
要開始讀取傳感器數據,您需要安裝
Adafruit_TCS34725
最簡單的方法是打開管理Arduino IDE中的庫。.. 菜單
然后搜索 Adafruit TCS34725 ,然后單擊安裝
我們還提供了有關Arduino庫安裝的出色教程,網址為:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
測試傳感器
運行TCS34725測試草圖以驗證傳感器是否正常工作。
將草圖上傳到Aruduino或Flora并打開串行監視器以查看 輸出。草圖應打印出基本的顏色測量參數,如下所示。移動傳感器,遮蓋傳感器和/或將其暴露在不同的光源下以查看其反應。
報告的顏色參數為:
色溫-以開爾文
勒克斯-或每平方米流明
R,G 和 B (已過濾的)值
清除(未過濾的)值
ColorView! ColorView草圖演示了使用板載LED進行反射光測量。白色LED用于照亮附近的物體,傳感器測量從物體反射的光。然后,ColorView草圖使用傳感器的RGB輸出來驅動RGB指示燈,以使其與傳感器看到的顏色匹配!
ColorView組件除了處理器和顏色傳感器之外,您還需要RGB LED和一些電阻器:
1個1K歐姆電阻器(棕色,黑色,紅色,金色)
2個560歐姆電阻(綠色,藍色,棕色,金色)
ColorView接線除了基本電源和I2C接線外,您還需要以下連接:
LED共陽極(長引腳)-》 5v。
LED紅色引腳-》 1K電阻-》 Arduino引腳3
LED Gre zh-CN引腳-》 560歐姆電阻器-》 Arduino引腳5
LED藍色引腳-》 560歐姆電阻器-》 Arduino引腳6
將ColorView草圖上傳到Arduino,然后將其他對象放置在傳感器前面。 LED的顏色應與感測到的對象的顏色匹配!
圖書館參考
構造和初始化:
Adafruit_TCS34725(tcs34725IntegrationTime_t = TCS34725_INTEGRATIONTIME_2_4MS,
tcs34725Gain_t = TCS34725_GAIN_1X );
聲明具有可選積分時間和增益值的TCS34725傳感器。
布爾值Adafruit_TCS34725 :: begin(void)
初始化TCS34725顏色傳感器。先調用此函數。
增益和積分時間: :
void Adafruit_TCS34725 :: setIntegrationTime(tcs34725IntegrationTime_t it)
設置積分從傳感器獲取顏色樣本的時間。較長的積分時間可用于在弱光條件下提高靈敏度。有效積分時間為:
TCS34725_INTEGRATIONTIME_2_4MS = 0xFF,/** 《2.4ms */
TCS34725_INTEGRATIONTIME_24MS = 0xF6,/** 《24ms */
TCS34725_INTEGRATIONTIME_50MS = 0xEB,/** 《50ms */
TCS34725_INTEGRATIONTIME_101MS = 0xD5,/** 《101ms */
TCS34725_INTEGRATIONTIME_154MS = 0xC0,/** 《154ms */
TCS34725_INTEGRATIONTIME_700MS = 0x00/** 《700ms */
無效Adafruit_TCS34725 :: setGain(tcs34725Gain_t gain )
設置ADC的增益以控制傳感器的靈敏度。有效的增益設置為:
TCS34725_GAIN_1X = 0x00,/** 《無增益*/
TCS34725_GAIN_4X = 0x01,/** 《2x增益*/
TCS34725_GAIN_16X = 0x02,/** 《16倍增益*/
TCS34725_GAIN_60X = 0x03/** 《60x增益*/
光讀數和計算:
void Adafruit_TCS34725 :: getRawData(uint16_t * r,uint16_t * g,uint16_t * b,uint16_t * c )
讀取原始傳感器的紅色,綠色,藍色和透明部分的傳感器輸出。
uint16_t Adafruit_TCS34725 :: calculateColorTemperature(uint16_t r,uint16_t g,uint16_t b )
從紅色,綠色和藍色分量計算色溫。
uint16_t Adafruit_TCS34725 :: calculateLux(uint16_t r, uint16_t g,uint16_t b )
計算來自紅色,綠色和藍色分量的照度。
中斷和LED控制:
無效Adafruit_TCS34725 :: setInterrupt(boolean i )
設置傳感器中斷,以在檢測到的電平在限制范圍內時生成中斷(請參見下面的setIntLimits())。 Int引腳僅在突破版本上可用。
布爾參數可用于控制LED。在突破版本上,必須將LED引腳連接至INT引腳以進行LED控制。
傳遞“ false”將啟用板載LED進行反射光測量。
傳遞“ true”將關閉LED以進行入射光測量。
void Adafruit_TCS34725 :: clearInterrupt(void )
清除傳感器中斷。
無效Adafruit_TCS34725 :: setIntLimits(uint16_t低,uint16_t高)
設置中斷的上限和下限。有關中斷操作的更多詳細信息,請參閱數據表。
在處理中使用它!
Adafruit_TCS34725庫包括一個處理草圖,可與ColorView Arduino草圖通信并在計算機屏幕上實時顯示顏色
處理草圖僅適用于處理1.5.1。它與處理版本2.0不兼容!
在Arduino上加載ColorView ,打開ColorView示例草圖并將其上傳到您的Arduino。
記下Arduino使用的串行端口。
在處理中加載ColorView.pde 導航到Adafruit_TCS34725 Library文件夾內的“ Processing”文件夾,然后打開“ ColorView.pde”。
編輯串行端口找到打開串行端口的行并進行編輯使用與Arduino相同的端口。
然后運行!運行處理草圖時,它將顯示傳感器文本輸出,并彈出帶有色標的窗口匹配傳感器看到的顏色。
識別顏色
使用顏色傳感器識別特定顏色并不像將傳感器對準色標并進行讀取那樣簡單。有許多因素會影響讀數,例如距離,視野和環境照明條件。 Adafruit論壇成員systembolaget開發了一種能夠快速可靠地識別許多不同顏色的系統,并針對該主題編寫了出色的教程。
請參見下面的視頻和github存儲庫鏈接:
顏色查找器Github存儲庫
下載
文件
Adafruit TCS34725 Arduino庫
TCS34725數據表
在Adafruit Fritzing庫中折疊對象
用于Breakout版本的EagleCAD PCB文件
用于Flora版本的EagleCAD PCB文件
突破委員會版本
原理圖和制作印刷
Flora可縫制版本
示意圖和裝配圖
責任編輯:wv
-
顏色傳感器
+關注
關注
2文章
97瀏覽量
18295
發布評論請先 登錄
相關推薦
光譜傳感器的用途
光譜傳感器可以做什么
【CW32模塊使用】TCS34725顏色識別傳感器

如何用SS1系列顏色傳感器示教多通道顏色?


阿童木顏色傳感器 CL4 在數控機床不銹鋼鋼管檢測應用案例


如何用SS1系列顏色傳感器設置目標顏色?

低功耗4G模組:tcs3472顏色傳感器示例

光電式傳感器的功能有哪些
在RGB和XYZ顏色傳感器之間進行選擇,以實現自適應照明調節

OPT4048 高速高精度三色 XYZ 顏色傳感器數據表

顏色識別傳感器:精準捕捉世界的每一抹色彩

評論