0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

語音色彩傳感器的制作

454398 ? 來源:wv ? 2019-08-29 17:40 ? 次閱讀

步驟1:使用的材料

Raspberry Pi 3.~35 US $或EUR

AIY語音套件,標題焊接到HAT。 ~25US $或EUR

Adafruit TCS34725突破,焊頭焊接。 ~8美元或歐元

跳線電纜。

面包板(可選)

傳感器外殼:

- 二手“Dolce Gusto”咖啡膠囊

- 一個小圓形的2mm外匯(PVC泡沫板),直徑約37mm

- 一種非反射黑色材料,覆蓋外殼的內(nèi)壁。我使用了自粘黑色橡膠泡沫。

可選:一個小開關(guān)來喚起測量值

幾滴塑料膠和一把切刀。

第2步:裝配和使用

使用AIY語音HAT的Raspberry Pi按照AIY手冊中的說明進行設(shè)置。在組裝之前,標題被焊接到HAT上的端口。對于傳感器的外殼,將“Dulce Gusto”咖啡膠囊清空,清潔,并用刀小心地取出底部的一部分。為此可以使用其他東西,咖啡膠囊的大小和形狀都合適。從一塊板上切下一塊2mm的外匯,然后將突破部分放在外匯板上,用毛氈筆標記位置,并在適當?shù)奈恢们懈钔怀霾糠值牟宀邸?/p>

現(xiàn)在,使用Velcro帶將外匯片粘在外殼上,并將傳感器外殼粘在外匯板上。然后用吸光的黑色材料覆蓋內(nèi)壁,我使用自粘橡膠泡沫。黑色紙板應該也可以?,F(xiàn)在,使用跨接電纜,HAT的I2C“3.3V”端口連接到傳感器上的“V in”,接地到Gnd,sda到sda和scl到scl。我用面包板連接兩個部件,但這不是必要的。

將AIY_TCS34725 python腳本放在src文件夾中,然后從dev終端運行腳本,輸入“sec/AIY_TCS34752.py”。您可能必須先使python腳本可執(zhí)行。詢問時,將傳感器單元放在要測量的物體上,按下AIY設(shè)備中的按鈕并等待一兩秒鐘。

然后,根據(jù)測量的RGB和白色值,設(shè)備首先計算相應的色調(diào)值,然后根據(jù)該值估計顏色并通過AIY語音系統(tǒng)口頭傳達它們,例如: G。作為“暗紅色”,也給出了色調(diào)值。 RGB,色調(diào)和亮度(亮度,準確)值也會打印到屏幕上。

為簡化顏色標注過程,RGB值將轉(zhuǎn)換為HSV(色調(diào),飽和度,值)格式。這允許將顏色注釋到特定角度范圍(即,餅圖切片),并且基于計算的色調(diào)值來選擇顏色。

您需要針對白色和黑色參考標準化您的設(shè)備。只需測量您可用的最白和最黑的紙張,分別進行測量,并將這些值作為最大值和最小值放入代碼中。只有最佳參考值才能提供良好的顏色識別。

一個基本問題是反射。如果你有一個有光澤或拋光表面的物體,它將反射LED發(fā)出的大量光線,看起來比它實際上要輕得多。您可以使用一張薄膜來散射光線,但您可能需要實施校正因子。

對于半透明物體,將它們放在白紙上可能很方便,否則反射光量將變小,物體報告為“黑色”。

如果要測量發(fā)光物體的顏色,應通過連接“關(guān)閉”來關(guān)閉突破口上的LED。 LED“端口突破到”地面“?,F(xiàn)在相應地設(shè)置標準化值。

另一個普遍問題是對象的照明。突破上的暖白色LED發(fā)出不連續(xù)的光譜。因此,某些顏色可能在RGB光譜中過高或過低。

結(jié)果

步驟3:代碼

代碼是對AIY語音手冊中的代碼修改和TCS34725傳感器代碼的組合作者。

我還試過使用Adafruit的TCS34725 python代碼,但是運行這個以及其他一些使用外部庫和AIY HAT的代碼有問題。歡迎任何幫助。

如前所述,顏色標注基于RGB到色調(diào)值的轉(zhuǎn)換。您必須根據(jù)白色和黑色崇敬材料的實驗測量設(shè)置標準化設(shè)置。相應地填寫R,G和B min或max的絕對值。

該腳本使用新版本的“say”命令,可以調(diào)節(jié)音量和音高。如果您需要更新audio.py和tty驅(qū)動程序文件或從腳本中刪除“音量和音高部分”。

#!/usr/bin/env python3

# This script is an adaption of the servo_demo.py script for the AIY voice HAT,

# optimized for the color recognition uing the Afafruit TCS34725 breakout

import aiy.audio

import aiy.cloudspeech

import aiy.voicehat

#from gpiozero import LED # could be helpful for an external LED on servo-port

#from gpiozero import Button # could be helpful for an external button on servo-port

import time

import smbus

bus = smbus.SMBus(1)

import colorsys

def hue2color(hue): # color interpretation based on the calculated hue values

if ((hue》 12) and (hue《 26)): # i.e. between 12° and 40°。 All settings may require optimization

color=“orange”

return color

elif ((hue》 25) and (hue《 70)):

color=“yellow”

return color

elif ((hue》 69) and (hue《 165)):

color=“green”

return color

elif ((hue》 164) and (hue《 195)): # 180 +/- 15

color=“cyan”

return color

elif ((hue》 194) and (hue《 270)):

color=“blue”

return color

elif ((hue》 269) and (hue《 320)):

color=“magenta”

return color

elif ((hue》 319) or (hue《 20)):

color=“red”

return color

else: print (“something went wrong”)

def tcs34725(): # measurement and interpretation.

# The measurement is performed by the Bradspi TCS34725 script:

# https://bradsrpi.blogspot.com/2013/05/tcs34725-rg.。.

bus.write_byte(0x29,0x80|0x12)

ver = bus.read_byte(0x29)

# version # should be 0x44

if ver == 0x44:

print (“Device found ”)

bus.write_byte(0x29, 0x80|0x00) # 0x00 = ENABLE register

bus.write_byte(0x29, 0x01|0x02) # 0x01 = Power on, 0x02 RGB sensors enabled

bus.write_byte(0x29, 0x80|0x14) # Reading results start register 14, LSB then MSB

data = bus.read_i2c_block_data(0x29, 0)

clear = clear = data[1] 《《 8 | data[0]

red = data[3] 《《 8 | data[2]

green = data[5] 《《 8 | data[4]

blue = data[7] 《《 8 | data[6]

crgb = “Absolute counts: C: %s, R: %s, G: %s, B: %s ” % (clear, red, green, blue)

print (crgb)

time.sleep(1)

else:

print (“Device not found ”)

# normalization and transformation of the measured RGBW values

col=“”

# Maximum values Normalization factors, must be defined experimentally

# e.g. vs. a white sheet of paper. Check and correct from time to time.

max_bright = 5750

max_red = 1930

max_green = 2095

max_blue = 1980

# Background/Minimum values normalization factors, must be defined experimentally

# e.g. vs. black sheet of paper. Check and correct from time to time.

min_bright = 750

min_red = 340

min_green = 245

min_blue = 225

# normalized values, between 0 and 1

rel_bright = ((clear - min_bright)/(max_bright - min_bright))

rel_red = ((red - min_red)/(max_red - min_red))

rel_green = ((green - min_green)/(max_green - min_green))

rel_blue = ((blue - min_blue)/(max_blue - min_blue))

hsv_col = colorsys.rgb_to_hsv(rel_red, rel_green, rel_blue)

hue = hsv_col[0]*359

if rel_bright 》 0.9: col = “white” # if very bright -》 white

elif rel_bright 《 0.1: col = “black” # if very dark -》 black

else: col = hue2color(hue) # color selection by hue values

# print(“relative values bright, red, green, blue:”)

# print (rel_bright, rel_red, rel_green, rel_blue)

# print(“HSV values (hue, saturation, value):”, hsv_col)

# print (“hue in ° ”,hue)

return [col, rel_bright, rel_red, rel_green, rel_blue, hue]

def main():

button = aiy.voicehat.get_button() # change Button status

led = aiy.voicehat.get_led() # change Button-LED status

aiy.audio.get_recorder().start()

# buttoni= Button(5) # distance sensor or other external button, connected to servo3/GPIO 05

aiy.audio.say(“Hello!”, lang=“en-GB”, volume=50, pitch=100) # volume and pitch require November 2017 revision of audio.py and _tty.py driver!

aiy.audio.say(“To start, move the sensor above the object. Then press the blue button”, lang=“en-GB”, volume=50, pitch = 100)

print(“To activate color measurement place sensor above object, then press the blue button”)

while True:

led.set_state(aiy.voicehat.LED.ON)

button.wait_for_press() # for external button, replace button by buttoni

led.set_state(aiy.voicehat.LED.BLINK)

aiy.audio.say(“Measuring”, lang=“en-GB”, volume=50, pitch = 100)

result = tcs34725() # evokes measurement and interpretation

col = result[0] # color, as text

hue = str(int(result[5])) # hue in °, as text

r_red = str(int(result[2]*255)) # R value, as text

r_green = str(int(result[3]*255)) # G value, as text

r_blue = str(int(result[4]*255)) # B value, as text

r_bright = str(int(result[1]*100)) # W value, as text

led.set_state(aiy.voicehat.LED.OFF)

if col == “white” or col==“black”:

bright = “”

elif (result[1] 》0.69): #brightness/lightness of color

bright =“l(fā)ight”

elif (result[1] 《0.25):

bright =“dark”

else :

bright =“medium”

# communiating the results

color_text =(“The color of the object is ” + bright + “ ” + col)

print (color_text)

aiy.audio.say(color_text, lang=“en-GB”, volume=75, pitch=100)

hue_text = (“The hue value is ”+ hue+ “ degrees”)

print (hue_text)

aiy.audio.say(hue_text, lang=“en-GB”, volume=75, pitch = 100)

if __name__ == ‘__main__’:

main()

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 色彩傳感器
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    5814
收藏 人收藏

    評論

    相關(guān)推薦

    壓電晶體,制作壓力傳感器選用那些放大芯片較好?

    壓電晶體,制作壓力傳感器選用那些放大芯片較好
    發(fā)表于 09-26 07:38

    車載傳感器主要有哪些傳感器

    車載傳感器是現(xiàn)代汽車中不可或缺的組成部分,它們?yōu)檐囕v提供關(guān)鍵信息,以確保駕駛安全、提高燃油效率、增強駕駛體驗和實現(xiàn)自動駕駛功能。車載傳感器的種類繁多,每種傳感器都有其特定的功能和應用場景。以下是一些
    的頭像 發(fā)表于 09-07 09:30 ?382次閱讀

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

    ?顏色識別傳感器作為現(xiàn)代工業(yè)、機器視覺、自動化控制等領(lǐng)域的重要設(shè)備,其技術(shù)的發(fā)展和應用對于提升生產(chǎn)效率、保障產(chǎn)品質(zhì)量具有重要意義。本文將從顏色識別傳感器的原理、結(jié)構(gòu)組成、應用以及選型等方面進行詳細
    的頭像 發(fā)表于 07-21 16:03 ?596次閱讀
    顏色識別<b class='flag-5'>傳感器</b>:精準捕捉世界的每一抹<b class='flag-5'>色彩</b>

    深入解析:人體傳感器、存在傳感器與場景存在傳感器的差異與應用

    場景存在傳感器比存在傳感器探測更精細化,存在傳感器比人體傳感器探測精度更高。
    的頭像 發(fā)表于 05-22 11:05 ?2036次閱讀
    深入解析:人體<b class='flag-5'>傳感器</b>、存在<b class='flag-5'>傳感器</b>與場景存在<b class='flag-5'>傳感器</b>的差異與應用

    什么是霍爾傳感器,它的分類和型號有哪些?

    霍爾傳感器霍爾傳感器是根據(jù)霍爾效應制作的一種磁場傳感器,廣泛地應用于工業(yè)自動化技術(shù)、檢測技術(shù)及信息處理等方面?;魻栃茄芯堪雽w材料性能的基本方法。? 通過霍爾效應實驗測定的霍爾系數(shù)
    的頭像 發(fā)表于 03-29 11:44 ?4211次閱讀

    傳感器分類及20種常見傳感器

    傳感器的分類: 常用傳感器的分類? 1. 按被測物理量分類 機械量: 長度、厚度、位移、速度、加速度、轉(zhuǎn)數(shù)、質(zhì) 量,重量、力、壓力、力矩;聲: 溫度: 聲壓、噪聲;磁: 磁通、磁場;亮度、色彩。溫度
    的頭像 發(fā)表于 03-27 08:38 ?2238次閱讀

    什么叫離子傳感器?離子傳感器的工作原理 離子傳感器的特性

    什么叫離子傳感器?離子傳感器的工作原理 離子傳感器的特性 離子傳感器是一種能夠檢測和測量離子濃度的傳感器。它們通常用于分析化學、環(huán)境監(jiān)測和生
    的頭像 發(fā)表于 03-05 17:01 ?1188次閱讀

    如何選擇TLE9853QX適配傳感器?

    我想制作一款傳動比為1:500的執(zhí)行,需要在執(zhí)行輸出端配置傳感器,實現(xiàn)執(zhí)行輸出角度檢測,防夾功能和push to run功能,目前需要
    發(fā)表于 02-02 08:07

    淺談汽車傳感器

    汽車上的傳感器有很多種, 主要分為車身感知傳感器和環(huán)境感知傳感器兩大類。 車身感知傳感器提高了單車自身的信息化水平,使車輛具備感知自身的能力;按照輸入的被測量不同主要分為壓力
    的頭像 發(fā)表于 01-16 13:44 ?351次閱讀

    傳感器的分類

    可分為壓力和力傳感器、位置傳感器、液位傳感器、能耗傳感器、速度傳感器、加速度傳感器、射線輻射
    的頭像 發(fā)表于 01-09 10:14 ?1358次閱讀

    霍爾傳感器的工作原理和特性 霍爾傳感器電路圖分享

    霍爾傳感器是根據(jù)霍爾效應制作的一種磁場傳感器?;魻栃谴烹娦囊环N。霍爾效應傳感器的主要作用是識別電機繞組相位位置信息轉(zhuǎn)換為電信號,驅(qū)動
    的頭像 發(fā)表于 01-03 17:02 ?1.7w次閱讀
    霍爾<b class='flag-5'>傳感器</b>的工作原理和特性 霍爾<b class='flag-5'>傳感器</b>電路圖分享

    無線傳感器如何聯(lián)網(wǎng)?無線傳感器如何通信?

    無線傳感器如何聯(lián)網(wǎng)?無線傳感器如何通信? 無線傳感器的聯(lián)網(wǎng)和通信是指利用無線技術(shù)將傳感器節(jié)點連接到互聯(lián)網(wǎng),并實現(xiàn)傳感器之間、
    的頭像 發(fā)表于 12-15 10:10 ?2112次閱讀

    拉繩傳感器是什么?應用領(lǐng)域有哪些?

    具備靈敏度高、精確度高、響應速度快等特點,能夠及時地捕捉到物體施加的力,比較大提高了工作效率和安全性。 拉繩傳感器 ? ? ?? 一、拉繩傳感器工作原理: ? ? ? 拉繩傳感器通過一個可伸縮的彈簧或彈性材料
    的頭像 發(fā)表于 12-15 08:39 ?750次閱讀

    選擇傳感器和設(shè)計模擬前端的過程

    和導彈制導。 光能傳輸?shù)狡渲幸粋€傳感器產(chǎn)生電流,由高精度前置放大器進一步處理。模數(shù)轉(zhuǎn)換和數(shù)字信號處理形成了整個信號鏈的其余部分。選擇傳感器和設(shè)計模擬前端的過程可減少為七步: 1. 描述要測量的信號
    發(fā)表于 11-24 08:21

    傳感器的定義和分類

    我們生活在一個傳感器的世界。您可以在我們的家庭、辦公室、汽車等地找到不同類型的傳感器,通過檢測我們的存在來打開燈光,調(diào)節(jié)室溫,檢測煙霧或火災,為我們制作美味的咖啡,當我們的汽車靠近車庫門時自動打開門等等,從而使我們的生活變得更加
    的頭像 發(fā)表于 11-20 15:59 ?1342次閱讀
    <b class='flag-5'>傳感器</b>的定義和分類