概述
您現(xiàn)在可以通過這種可愛的彩色光傳感器以令人眼花color亂的顏色看到電子設(shè)備。我們找到了市場(chǎng)上最好的色彩傳感器TCS34725,它具有RGB和透明光敏元件。集成在芯片上并位于色彩感應(yīng)光電二極管上的IR阻擋濾光片可最大程度地減少入射光的IR光譜分量,并可以精確地進(jìn)行顏色測(cè)量。濾光片意味著您將獲得比大多數(shù)傳感器更真實(shí)的色彩,因?yàn)槿祟惪床坏?a href="http://m.1cnz.cn/tags/紅外/" target="_blank">紅外線。該傳感器還具有令人難以置信的3,800,000:1動(dòng)態(tài)范圍,并且積分時(shí)間和增益可調(diào),因此適合在深色玻璃后面使用。
我們還添加了支持電路,例如3.3V穩(wěn)壓器,因此您可以安全地使用3-5VDC的電壓為分接器供電,并為I2C引腳進(jìn)行電平轉(zhuǎn)換,以便它們可以與3.3V或5V邏輯一起使用。最后,我們指定了一個(gè)不錯(cuò)的中性4150°K溫度LED,板上帶有MOSFET驅(qū)動(dòng)器,以照亮您要感應(yīng)的內(nèi)容。 LED可以通過任何邏輯電平輸出輕松打開或關(guān)閉。
為獲得更大的靈活性,我們?yōu)樵撛u(píng)估板制作了兩個(gè)不同的版本:適用于面包板的分線器和旨在與Flora可穿戴平臺(tái)配合使用的可穿戴版本。
組裝和接線
兩個(gè)顏色傳感器都預(yù)焊接了所有表面貼裝組件。 Breakout-board版本附帶一個(gè)可選的接頭,用于面包板。焊接頭是一個(gè)簡(jiǎn)單的過程:
程序集(僅限突破版本)
然后焊接!焊接所有引腳以確保良好的電氣連接行動(dòng)。
放置標(biāo)題,如有必要,將標(biāo)題修剪成一定長(zhǎng)度,然后將其(長(zhǎng)針向下)插入面包板。
將接點(diǎn)定位將接點(diǎn)放在排針的裸露短端上。
接線,這些傳感器通過2線制I2C接口進(jìn)行通信。要連接到處理器,總共只需要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上一個(gè)d SCL位于模擬5上。
在R2 Megas之前,SDA位于Digtital 20上,SCL位于數(shù)字21上。對(duì)于萊昂納多,SDA是數(shù)字2引腳,SCL是數(shù)字3引腳。
要控制LED (僅限突破版本)-可以將LED引腳拉低以關(guān)閉LED。這可以通過三種方式完成:
直接接地,以完全將其關(guān)閉。
連接到備用數(shù)字引腳,并使用digitalWrite()控制。
將LED引腳連接到INT引腳,并使用setInterrupt()進(jìn)行控制(有關(guān)詳細(xì)信息,請(qǐng)參見庫(kù)參考)。
div》 Python和CircuitPython
將TCS34725傳感器與Python和CircuitPython以及Adafruit CircuitPython TCS34725模塊一起使用很容易。此模塊使您可以輕松編寫從傳感器讀取顏色的Python代碼。
您可以將此電路與任何CircuitPython微控制器板或具有GPIO和Python的計(jì)算機(jī)配合使用,這要?dú)w功于我們的CircuitPython-for Adafruit_Blinka -Python兼容性庫(kù)。
CircuitPython微控制器接線
首先,將TCS34725完全連接到您的開發(fā)板上,就像Arduino的前幾頁所示。以下是通過I2C連接將Feather M0連接到傳感器的示例:
板3V 至傳感器VIN
板GND 到傳感器GND
板載SCL 到 sensorSCL
板載SDA 到傳感器SDA
Python計(jì)算機(jī)接線
由于有數(shù)十種Linux計(jì)算機(jī)/主板可以使用我們將展示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。
以下是與I2C相連的Raspberry Pi:
Pi 3V3 至傳感器VIN
Pi GND 到傳感器GND
Pi SCL 到傳感器SCL
Pi SDA 到傳感器SDA
CircuitPython安裝TCS34725庫(kù) 》
您需要在CircuitPython板上安裝Adafruit CircuitPython TCS34725庫(kù)。
首先請(qǐng)確保您正在為板運(yùn)行最新版本的Adafruit CircuitPython。
下一步,您將需要安裝必要的庫(kù)才能使用硬件-請(qǐng)仔細(xì)按照以下步驟從Adafruit的CircuitPython庫(kù)捆綁包中查找和安裝這些庫(kù)。我們的簡(jiǎn)介指南上有一個(gè)很棒的頁面,介紹如何為快速和非表達(dá)板安裝庫(kù)包。
請(qǐng)記住非表達(dá)板,例如,您需要從束中手動(dòng)安裝必要的庫(kù):
adafruit_tcs34725.mpy
adafruit_bus_device
在繼續(xù)制作之前確保您開發(fā)板上的lib文件夾或根文件系統(tǒng)已復(fù)制 adafruit_tcs34725.mpy 和 adafruit_bus_device 文件和文件夾。
下一步連接到開發(fā)板的串行REPL,這樣您就可以在CircuitPython上運(yùn)行》》》 提示。
TCS34725庫(kù)的Python安裝
您需要安裝Adafruit_Blinka庫(kù),該庫(kù)在以下方面提供CircuitPython支持蟒蛇。這可能還需要在您的平臺(tái)上啟用I2C并驗(yàn)證您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問Linux上的CircuitPython指南以準(zhǔn)備好您的計(jì)算機(jī)!
完成后,從命令行運(yùn)行以下命令:
sudo pip3 install adafruit-circuitpython-tcs34725
如果您的默認(rèn)Python是版本3,則可能需要改為運(yùn)行“ pip”。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!
CircuitPython和Python用法
為演示傳感器的用法,我們將對(duì)其進(jìn)行初始化,并從開發(fā)板的Python REPL中讀取顏色以及更多內(nèi)容。
運(yùn)行以下代碼以導(dǎo)入必要的模塊并初始化與傳感器的I2C連接:
下載:文件
復(fù)制代碼
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)
現(xiàn)在,您就可以從傳感器使用以下任意屬性:
color_rgb_bytes -紅色,綠色和藍(lán)色值的三元組。這些以字節(jié)為單位從0到255返回(0是低強(qiáng)度,255是最大強(qiáng)度)。
color_temperature -傳感器檢測(cè)到的開爾文色溫。
lux -傳感器檢測(cè)到的以勒克斯為單位的光強(qiáng)度。這是根據(jù)顏色計(jì)算得出的,可能不是非常準(zhǔn)確!
下載:文件
復(fù)制代碼
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 -傳感器的積分時(shí)間(以毫秒為單位)。
gain -傳感器的增益必須為1、4、16、60。
ul》
下載:文件
復(fù)制代碼
sensor.integration_time = 200
sensor.gain = 60 sensor.integration_time = 200
sensor.gain = 60
有關(guān)每秒打印范圍的完整演示,請(qǐng)參見simpletest.py示例。將其保存為板上的 code.py 并檢查REPL輸出以查看每秒打印的范圍。
帶有CircuitPython的TCS34725!
完整的示例代碼
下載:Project Zip 或 tcs34725_simpletest.py | 在Github上查看
復(fù)制代碼
# 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
要開始讀取傳感器數(shù)據(jù),您需要安裝
Adafruit_TCS34725
最簡(jiǎn)單的方法是打開管理Arduino IDE中的庫(kù)。.. 菜單
然后搜索 Adafruit TCS34725 ,然后單擊安裝
我們還提供了有關(guān)Arduino庫(kù)安裝的出色教程,網(wǎng)址為:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
測(cè)試傳感器
運(yùn)行TCS34725測(cè)試草圖以驗(yàn)證傳感器是否正常工作。
將草圖上傳到Aruduino或Flora并打開串行監(jiān)視器以查看 輸出。草圖應(yīng)打印出基本的顏色測(cè)量參數(shù),如下所示。移動(dòng)傳感器,遮蓋傳感器和/或?qū)⑵浔┞对诓煌墓庠聪乱圆榭雌浞磻?yīng)。
報(bào)告的顏色參數(shù)為:
色溫-以開爾文
勒克斯-或每平方米流明
R,G 和 B (已過濾的)值
清除(未過濾的)值
ColorView! ColorView草圖演示了使用板載LED進(jìn)行反射光測(cè)量。白色LED用于照亮附近的物體,傳感器測(cè)量從物體反射的光。然后,ColorView草圖使用傳感器的RGB輸出來驅(qū)動(dòng)RGB指示燈,以使其與傳感器看到的顏色匹配!
ColorView組件除了處理器和顏色傳感器之外,您還需要RGB LED和一些電阻器:
1個(gè)1K歐姆電阻器(棕色,黑色,紅色,金色)
2個(gè)560歐姆電阻(綠色,藍(lán)色,棕色,金色)
ColorView接線除了基本電源和I2C接線外,您還需要以下連接:
LED共陽極(長(zhǎng)引腳)-》 5v。
LED紅色引腳-》 1K電阻-》 Arduino引腳3
LED Gre zh-CN引腳-》 560歐姆電阻器-》 Arduino引腳5
LED藍(lán)色引腳-》 560歐姆電阻器-》 Arduino引腳6
將ColorView草圖上傳到Arduino,然后將其他對(duì)象放置在傳感器前面。 LED的顏色應(yīng)與感測(cè)到的對(duì)象的顏色匹配!
圖書館參考
構(gòu)造和初始化:
Adafruit_TCS34725(tcs34725IntegrationTime_t = TCS34725_INTEGRATIONTIME_2_4MS,
tcs34725Gain_t = TCS34725_GAIN_1X );
聲明具有可選積分時(shí)間和增益值的TCS34725傳感器。
布爾值A(chǔ)dafruit_TCS34725 :: begin(void)
初始化TCS34725顏色傳感器。先調(diào)用此函數(shù)。
增益和積分時(shí)間: :
void Adafruit_TCS34725 :: setIntegrationTime(tcs34725IntegrationTime_t it)
設(shè)置積分從傳感器獲取顏色樣本的時(shí)間。較長(zhǎng)的積分時(shí)間可用于在弱光條件下提高靈敏度。有效積分時(shí)間為:
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 )
設(shè)置ADC的增益以控制傳感器的靈敏度。有效的增益設(shè)置為:
TCS34725_GAIN_1X = 0x00,/** 《無增益*/
TCS34725_GAIN_4X = 0x01,/** 《2x增益*/
TCS34725_GAIN_16X = 0x02,/** 《16倍增益*/
TCS34725_GAIN_60X = 0x03/** 《60x增益*/
光讀數(shù)和計(jì)算:
void Adafruit_TCS34725 :: getRawData(uint16_t * r,uint16_t * g,uint16_t * b,uint16_t * c )
讀取原始傳感器的紅色,綠色,藍(lán)色和透明部分的傳感器輸出。
uint16_t Adafruit_TCS34725 :: calculateColorTemperature(uint16_t r,uint16_t g,uint16_t b )
從紅色,綠色和藍(lán)色分量計(jì)算色溫。
uint16_t Adafruit_TCS34725 :: calculateLux(uint16_t r, uint16_t g,uint16_t b )
計(jì)算來自紅色,綠色和藍(lán)色分量的照度。
中斷和LED控制:
無效Adafruit_TCS34725 :: setInterrupt(boolean i )
設(shè)置傳感器中斷,以在檢測(cè)到的電平在限制范圍內(nèi)時(shí)生成中斷(請(qǐng)參見下面的setIntLimits())。 Int引腳僅在突破版本上可用。
布爾參數(shù)可用于控制LED。在突破版本上,必須將LED引腳連接至INT引腳以進(jìn)行LED控制。
傳遞“ false”將啟用板載LED進(jìn)行反射光測(cè)量。
傳遞“ true”將關(guān)閉LED以進(jìn)行入射光測(cè)量。
void Adafruit_TCS34725 :: clearInterrupt(void )
清除傳感器中斷。
無效Adafruit_TCS34725 :: setIntLimits(uint16_t低,uint16_t高)
設(shè)置中斷的上限和下限。有關(guān)中斷操作的更多詳細(xì)信息,請(qǐng)參閱數(shù)據(jù)表。
在處理中使用它!
Adafruit_TCS34725庫(kù)包括一個(gè)處理草圖,可與ColorView Arduino草圖通信并在計(jì)算機(jī)屏幕上實(shí)時(shí)顯示顏色
處理草圖僅適用于處理1.5.1。它與處理版本2.0不兼容!
在Arduino上加載ColorView ,打開ColorView示例草圖并將其上傳到您的Arduino。
記下Arduino使用的串行端口。
在處理中加載ColorView.pde 導(dǎo)航到Adafruit_TCS34725 Library文件夾內(nèi)的“ Processing”文件夾,然后打開“ ColorView.pde”。
編輯串行端口找到打開串行端口的行并進(jìn)行編輯使用與Arduino相同的端口。
然后運(yùn)行!運(yùn)行處理草圖時(shí),它將顯示傳感器文本輸出,并彈出帶有色標(biāo)的窗口匹配傳感器看到的顏色。
識(shí)別顏色
使用顏色傳感器識(shí)別特定顏色并不像將傳感器對(duì)準(zhǔn)色標(biāo)并進(jìn)行讀取那樣簡(jiǎn)單。有許多因素會(huì)影響讀數(shù),例如距離,視野和環(huán)境照明條件。 Adafruit論壇成員systembolaget開發(fā)了一種能夠快速可靠地識(shí)別許多不同顏色的系統(tǒng),并針對(duì)該主題編寫了出色的教程。
請(qǐng)參見下面的視頻和github存儲(chǔ)庫(kù)鏈接:
顏色查找器Github存儲(chǔ)庫(kù)
下載
文件
Adafruit TCS34725 Arduino庫(kù)
TCS34725數(shù)據(jù)表
在Adafruit Fritzing庫(kù)中折疊對(duì)象
用于Breakout版本的EagleCAD PCB文件
用于Flora版本的EagleCAD PCB文件
突破委員會(huì)版本
原理圖和制作印刷
Flora可縫制版本
示意圖和裝配圖
責(zé)任編輯:wv
-
顏色傳感器
+關(guān)注
關(guān)注
2文章
96瀏覽量
18201
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論