0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

语音色彩传感器的制作

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

- 一种非反射黑色材料,覆盖外壳的内壁。我使用了自粘黑色橡胶泡沫。

可选:一个小开关来唤起测量值

几滴塑料胶和一把切刀。

第2步:装配和使用

使用AIY语音HAT的Raspberry Pi按照AIY手册中的说明进行设置。在组装之前,标题被焊接到HAT上的端口。对于传感器的外壳,将“Dulce Gusto”咖啡胶囊清空,清洁,并用刀小心地取出底部的一部分。为此可以使用其他东西,咖啡胶囊的大小和形状都合适。从一块板上切下一块2mm的外汇,然后将突破部分放在外汇板上,用毛毡笔标记位置,并在适当的位置切割突出部分的插槽。

现在,使用Velcro带将外汇片粘在外壳上,并将传感器外壳粘在外汇板上。然后用吸光的黑色材料覆盖内壁,我使用自粘橡胶泡沫。黑色纸板应该也可以。现在,使用跨接电缆,HAT的I2C“3.3V”端口连接到传感器上的“V in”,接地到Gnd,sda到sda和scl到scl。我用面包板连接两个部件,但这不是必要的。

将AIY_TCS34725 python脚本放在src文件夹中,然后从dev终端运行脚本,输入“sec/AIY_TCS34752.py”。您可能必须先使python脚本可执行。询问时,将传感器单元放在要测量的物体上,按下AIY设备中的按钮并等待一两秒钟。

然后,根据测量的RGB和白色值,设备首先计算相应的色调值,然后根据该值估计颜色并通过AIY语音系统口头传达它们,例如: G。作为“暗红色”,也给出了色调值。 RGB,色调和亮度(亮度,准确)值也会打印到屏幕上。

为简化颜色标注过程,RGB值将转换为HSV(色调,饱和度,值)格式。这允许将颜色注释到特定角度范围(即,饼图切片),并且基于计算的色调值来选择颜色。

您需要针对白色和黑色参考标准化您的设备。只需测量您可用的最白和最黑的纸张,分别进行测量,并将这些值作为最大值和最小值放入代码中。只有最佳参考值才能提供良好的颜色识别。

一个基本问题是反射。如果你有一个有光泽或抛光表面的物体,它将反射LED发出的大量光线,看起来比它实际上要轻得多。您可以使用一张薄膜来散射光线,但您可能需要实施校正因子。

对于半透明物体,将它们放在白纸上可能很方便,否则反射光量将变小,物体报告为“黑色”。

如果要测量发光物体的颜色,应通过连接“关闭”来关闭突破口上的LED。 LED“端口突破到”地面“。现在相应地设置标准化值。

另一个普遍问题是对象的照明。突破上的暖白色LED发出不连续的光谱。因此,某些颜色可能在RGB光谱中过高或过低。

结果

步骤3:代码

代码是对AIY语音手册中的代码修改和TCS34725传感器代码的组合作者。

我还试过使用Adafruit的TCS34725 python代码,但是运行这个以及其他一些使用外部库和AIY HAT的代码有问题。欢迎任何帮助。

如前所述,颜色标注基于RGB到色调值的转换。您必须根据白色和黑色崇敬材料的实验测量设置标准化设置。相应地填写R,G和B min或max的绝对值。

该脚本使用新版本的“say”命令,可以调节音量和音高。如果您需要更新audio.py和tty驱动程序文件或从脚本中删除“音量和音高部分”。

#!/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 =“light”

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()

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 色彩传感器
    +关注

    关注

    0

    文章

    12

    浏览量

    5985
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    不同温度传感器的类型和公差

    温度传感器类型和公差:传感器公差和温度系数的组合定义了温度传感器的温度特性,元件公差越大,传感器与广义曲线偏差越大,传感器变化也就越大。
    的头像 发表于 11-24 17:47 493次阅读
    不同温度<b class='flag-5'>传感器</b>的类型和公差

    能够完美“适配”不同传感器语音芯片WT2003H

    ,看看它是如何让传感器"开口说话"的。 想象一下,如果传感器是人类的"眼睛"和"耳朵",那么语音芯片就像是"嘴巴"。传统的传感器只能默默地感知周围环境的变化,却无法与人们直接交流。而W
    的头像 发表于 10-09 17:03 404次阅读

    从感知到播放,WT2003H语音芯片完美适配不同类型传感器,省事又省钱!

    万物智联的时代,我们每天都在与各种传感器打交道!从进入商场时自动响起的"欢迎光临",到楼梯间的"请注意脚下安全",再到无障碍通道的贴心语音提示,这些看似简单
    的头像 发表于 09-30 15:50 782次阅读
    从感知到播放,WT2003H<b class='flag-5'>语音</b>芯片完美适配不同类型<b class='flag-5'>传感器</b>,省事又省钱!

    雷达传感器和红外传感器的区别

    雷达传感器和红外传感器都可以进行测距,能够辅助设备进行“感知世界”的行为,虽然说功能看起来是一样的,但是实现的方式却是大有不同,红外测距是通过发射红外线,雷达测距是通过发射电磁波,从本质上来说是完全
    的头像 发表于 08-28 17:48 729次阅读

    深圳大学:构建“喉部地图”法,柔性超灵敏碳阵列传感器,用于语音识别

    with deep learning”的论文,研究提出一种“喉部地图”,利用柔性碳阵列传感器和基于深度学习的信号处理方法,以确定高精度语音识别所需的传感器最佳放置
    的头像 发表于 08-23 17:16 568次阅读
    深圳大学:构建“喉部地图”法,柔性超灵敏碳阵列<b class='flag-5'>传感器</b>,用于<b class='flag-5'>语音</b>识别

    什么是照度传感器和接近传感器

    近年来,照度传感器和接近传感器在我们身边各类设备中的应用越来越广泛。除了单独使用照度传感器和接近传感器外,将这些传感器组合使用的情况也在不断
    的头像 发表于 08-22 14:46 2478次阅读
    什么是照度<b class='flag-5'>传感器</b>和接近<b class='flag-5'>传感器</b>

    如何选择酒精传感器

    鉴于可用技术、其应用及其性能特征的细微差别,选择适合您的特定需求的酒精传感器可能是一个复杂的过程。本指南将通过探索酒精传感器的类型、其原理、应用以及表格格式的比较分析,帮助您浏览选项并做出明智的决定
    的头像 发表于 07-21 11:37 961次阅读
    如何选择酒精<b class='flag-5'>传感器</b>

    特励达的INFINITY色彩预设实现色彩精度,帮助工业相机捕捉精准、可靠的图像

    色彩精度对于明场显微镜至关重要,无论是分析苏木精和伊红(H&E)染色切片、开发AI辅助诊断模型,还是进行全片成像。然而,实现真实的色彩保真度并非易事。不同传感器捕捉色彩的方式存在差异,
    的头像 发表于 06-06 17:08 803次阅读
    特励达的INFINITY<b class='flag-5'>色彩</b>预设实现<b class='flag-5'>色彩</b>精度,帮助工业相机捕捉精准、可靠的图像

    如何选择地磁传感器

    地磁传感器是一种可以检测地球磁场变化的传感器,它可以高精度地测量空间方位和角度变化。选择地磁传感器时,我们需要考虑以下几个方面:1.首先是测量范围。不同型号的地磁传感器的测量范围有差异
    的头像 发表于 05-19 13:20 559次阅读
    如何选择地磁<b class='flag-5'>传感器</b>

    热导传感器是什么?了解多少呢?

    在科技的长河中,传感器如同人类的感官延伸,让机器能够感知世界的温度、压力与色彩。而在众多传感器中,热导传感器犹如一位精准的"温度侦探",通过测量材料的导热性能,在工业自动化、环境监测、
    的头像 发表于 03-24 18:22 739次阅读

    传感器应用技巧141例

    本书主要介绍了光敏传感器,红外传感器,热敏电阻,铂电阻,热电偶,气体传感器,磁敏传感器,霍尔器件的温度补偿电路,高分子薄膜型超声
    发表于 03-06 15:16

    ccd传感器坏了有什么症状 ccd传感器和cmos传感器哪个好

    故障或损坏时,可能会出现以下症状: 图像质量问题 : 黑屏现象 :相机或摄像机无法捕捉到任何图像,屏幕显示为黑色。这可能是由于传感器损坏导致无法接收光线或信号转换失败。 花屏现象 :屏幕上出现不规则的色彩块或条纹,图像不清晰。这可能是由于
    的头像 发表于 02-01 15:35 4147次阅读

    干簧管传感器属于什么传感器

    干簧管传感器,又称磁簧开关传感器或磁敏开关,是一种基于干簧管(Reed Switch)原理工作的传感器。作为一种重要的磁传感器,干簧管传感器
    的头像 发表于 01-30 15:33 2367次阅读

    GUC65(A)矿用本安型位置传感器制作过程

    矿用本安型位置传感器制作过程需要严格遵守相关的安全规范和标准,确保传感器的安全性和可靠性。同时,在生产过程中还需要注意环境保护和节能减排等要求。具体的制作过程可能会因产品规格、制造商
    的头像 发表于 01-07 10:18 803次阅读

    光电传感器与激光传感器的对比

    在现代工业自动化和精密测量领域,传感器技术扮演着至关重要的角色。光电传感器和激光传感器作为两种常用的检测技术,它们各自有着独特的优势和应用场景。 工作原理 光电传感器 光电
    的头像 发表于 12-17 17:03 2039次阅读