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

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

3天内不再提示

用于聋人和静音人际互动的手势声控器的制作

454398 来源:网络整理 作者:佚名 2019-11-01 10:45 次阅读

步骤1:我们需要的电子设备

为简单起见,我们将项目分为三个部分

·传感器

为此,我们需要两种类型的传感器及以下组件

1。弯曲传感器2个单元,用于测量手指的弯曲程度

2。 ADXL 335获取手的x和y轴x坐标

3。 10K欧姆电阻2个单位,与挠性传感器一起形成分压器偏置

4。小型PCB(覆铜2英寸X 2英寸)以构建传感器电路

5。连接的错误条

·控制器部分

我们尝试使用两种方法使用Arduino UNO板来实现该原型,而另一种方法是为Atmega制作自己的分线板328,但我们仍在使用Arduino UNO烧写引导程序并在Atmega 328中上载代码。

所以这里我们需要

1。 Arduino UNO

2。 Atmega 328p-pu

3。 22p F电容器2个晶体用滤波电容

4。 16 MHz晶振1个单元,用于Atmega 328

5的工作频率。 10K欧姆电阻1个单位复位电阻

6。重置按钮1个单位以重置Atmega 328

7。连接错误条

8。 7805 5V电压调节器可从9V电池获得5V调节电压。

9。 BC 547 npn晶体管8个单元,用于控制音频处理器IC

10的通道。 1K欧姆电阻8个单元,用于将Atmega 328的端口引脚连接到晶体管的基极

·音频处理和LCD单元

1。 APR 33A3音频处理器存储和播放声音1个单位

2。 LCD 16X2 1个单元来显示消息

3。麦克风1个单元,用于录制音频消息

4。扬声器16欧姆1个单位播放音频信号

5。 10K欧姆电位器1个单位,用于控制LCD的亮度

6。并且所有支持APR 33A3的其他组件

·47K欧姆电阻

·4.7K欧姆电阻

·100K欧姆电阻

· 470欧姆电阻

·1nF电容器

·100nF电容器

·100 microF电解电容

·10 microF电容器

·1个微型F电容器

·连接线

其他组件数量请参考APR 33A3的电路图或数据表

步骤2:准备好硬件。。..

使用PCB WIZARD软件进行PCB设计,您可以从此链接下载

软件http://pcb-wizard.software.informer.com/4.0/

PCB向导是设计电路最简单的软件,即使初学者也可以使用它直接因为该软件非常易于使用。..。.它具有许多功能,可减少设计时间电路,例如DRAG和Drop选项。..。

一旦电路设计完成,我们就将.pcb文件附加到设计好的PCB上

从该电路布局的艺术作品中取出印刷品在照片纸或光面纸上,然后通过熨烫工艺跟踪覆铜板上的电路印刷图稿。

在熨烫过程中,您必须注意,所有电路布局图稿应完全在覆铜板上跟踪在完全跟踪覆铜箔上的电路布局图稿后,用水制成Fecl3溶液,并将其跟踪到覆铜箔中约30至40分钟。..。..。在此过程中,您应连续检查其中的覆铜箔一定间隔后,覆铜板的铜应消失,除了电路布局图的痕迹部分……意味着仅应保留电路。..

一旦从溶液中取出板然后清洗钻孔后涂助焊剂并完成并用砂纸打磨钻孔。在镀锡开始安装组件并进行焊接操作之后,借助烙铁进行镀锡过程。..。..。..

使用图像跟踪各个组件的所有过程和位置。

请按照电路图制作自己的PCB。

如果我们在自己制作的分线板上使用Arduino UNO,则只有Atmega 328控制器部分被忽略,其余的连接都相同并进行连接

步骤3:在ATmega 328、168、8中刻录Bootloader

这里有我们学习使用Arduino IDE和Arduino UNO在空白的ATmega 328/168/8芯片上刻录引导程序。

所以,我们需要什么

第一步连接硬件

用于ATmega 328/168/8的空白芯片的分线板

在这里,我们也可以在面包板上进行连接,我也可以根据需要选择制作一块特殊的板,这样就无需做sa我一次又一次地处理,只是节省您的时间。进行如图1所示的连接

观看图2。这是我用来烧写引导程序的板。

在购买ATmega 328空白芯片时请注意

您可能已经注意到,

ATMega328P-PU

ATMega328-PU

两者之间的区别只是328之后的P。是ATMEL开发的一项技术,它允许微控制器以更低的功率运行。

这对于小型应用程序至关重要,但是伙计们在刻录引导加载程序时每个芯片都有其唯一的密钥签名,因此需要在刻录之前编辑该密钥签名引导加载程序。

那么这些IC的密钥签名是什么

ATmega328 0x1E 0x95 0x14

ATmega328P 0x1E 0x95 0x0F

所以我们需要要在刻录引导程序之前更改这些签名,请遵循以下基本步骤

·导航至。.. arduino-1.0.5 hardware tools avr etc

·进行备份文件的副本:avrdude.conf

·在文本编辑器中打开avrdude.conf文件r

·搜索:“ 0x1e 0x95 0x0F”(这是ATmega328P签名)

·替换为:“ 0x1e 0x95 0x14”(这是ATmega328签名)

·保存文件

·重新启动Arduino IDE

·继续进行引导程序的其余步骤,一旦引导加载完成,请还原您制作的备份副本。

使连接与图3所示相同

现在,我们已经完成了硬件设置

2步骤准备软件

打开Arduino IDE,确保您已根据目标AVR ATmega

1更改了您的签名。打开Arduino IDE

2。文件》示例》 Arduino ISP

3。从工具》板中选择Arduino328

4。选择您的串行端口。

5。在Arduino板上烧录。

6。从工具》编程

7中选择Arduino作为ISP。选择Burn Bootloader

步骤4:上传代码并使之运行

在我们加载的引导中使用Arduino UNO加载以下代码芯片(Atmega 328)

//GESTURE

VOCALIZER进行人与人互动

#include

//伙计们从arduino.cc下载此库

LiquidCrystal lcd(13,12,11,10,9,8);//检查引脚连接的电路图

void setup()

{

lcd.begin(16,2);

}

void loop()

{

lcd.clear();

int val0 = AnalogRead(0);//读取输入引脚柔性传感器引脚1

val0 = map(val0,465,590,0,9);//将其转换为0到9的窗口

int val1 = AnalogRead(1);//读取输入引脚柔性传感器引脚2

val1 = map(val1,435,535,0,9);

//读取输入引脚

int val2 = AnalogRead(2);//读取输入引脚X轴引脚

val2 = map(val2,260,415,0,9);

int val3 = AnalogRead(3);//读取输入引脚y轴引脚

val3 = map(val3,260,420,0,9);

如果(val0》 = 0 && val0 《= 0 && val1》 = 3 && val1 《= 4 && val2》 = 7 && val2 《= 8 && val3》 = 4 && val3 《= 5)//将符号与标准存储值相匹配,取决于佩戴者的双手

{

lcd.print(“我是__________________”);//在LCD上显示消息

digitalWrite(0,HIGH);//在APR 33A3上选择语音命令1

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(100);

digitalWrite(0,LOW);//将其关闭

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7, LOW);

delay(5000);

}

否则,如果(val0》 = 6 && val0 《= 7 && val1》 = 1 && val1 《= 2 && val2》 = 7 && val2 《= 8 && val3》 = 2 && val3 《= 3)

{

lcd.print(“ sorry”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令2

digitalWrite(1,HIGH);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 =-1 && val0 《= 0 && val1》 = 3 && val1 《= 4 && val2》 = 1 && val2 《= 3 && val3》 = 0 && val3 《= 2)

{

lcd.print(“ Hello”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令3

digitalWrite(1,LOW);

digitalWrite(2,HIGH);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 = 0 && val0 《= 0 && val1》 = 0 && val1 《= 1 && val2》 = 5 && val2 《= 6 && val3》 =-0 && val3 《= 1)

{

lcd.print(“谢谢”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令4

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,HIGH) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 = 2 && val0 《= 3 && val1》 = 1 && val1 《= 1 && val2》 = 3 && val2 《= 5 && val3》 = 1 && val3 《= 2 )

{

lcd.print(“ drink”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令5

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,HIGH);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 = 4 && val0 《= 5 && val1》 = 2 && val1 《= 3 && val2》 = 4 && val2 《= 6 && val3》 = 0 && val3 《= 2 )

{

lcd.print(“ beautiful”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令6

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,HIGH);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 = 0 && val0 《= 0 && val1》 = 4 && val1 《= 6 && val2》 = 4 && val2 《= 5 && val3》 = 1 && val3 《= 2 )

{

lcd.print(“ bye”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令7

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,HIGH);

digitalWrite(7,LOW);

延迟(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

否则,如果(val0》 = 0 && val0 《= 1 && val1》 = 0 && val1 《= 1 && val2》 = 7 && val2 《= 8 && val3》 = 1 && val3 《= 2 )

{

lcd.print(“ sick”);

digitalWrite(0,LOW);//在APR 33A3上选择语音命令8

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW) ;

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW);

digitalWrite(7,HIGH);

delay(100);

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5, LOW);

digitalWrite(6,LOW);

digitalWrite(7,LOW);

delay(5000);

}

else

{

lcd.print(“ System on”);//初始消息

digitalWrite(0,LOW);

digitalWrite(1,LOW);

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5,LOW);

digitalWrite(6,LOW) );

digitalWrite(7,LOW);

}

delay(200);//延迟200毫秒

}

责任编辑:wv

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

    关注

    0

    文章

    3

    浏览量

    6612
收藏 人收藏

    评论

    相关推荐

    静音导轨与不静音导轨的区别

    静音导轨与不静音导轨在多个方面存在显著差异,核心区别在于静音导轨通过优化设计和使用特殊材料,显著减少了运动时的噪音和摩擦,提高了使用的平稳性和舒适性。
    的头像 发表于 12-27 17:42 212次阅读
    <b class='flag-5'>静音</b>导轨与不<b class='flag-5'>静音</b>导轨的区别

    滤波在噪声控制中的作用

    滤波在噪声控制中发挥着至关重要的作用。滤波是一种能够选择性地通过或抑制某些频率成分的电子器件,通过控制不同频率成分的传递特性,滤波能够实现对噪声的抑制和信号的改善。以下是滤波
    的头像 发表于 11-27 15:41 326次阅读

    TAS5754M的功放的待机和静音电流分别是多少?

    向TI的各位专家请教一下,TAS5754M的功放的待机和静音电流分别是多少,在规格书中是否有给出?谢谢!
    发表于 10-28 08:29

    LM48511静音关的时候有咔声,如何处理?

    LM48511 没有静音功能,使用SD_AMP 引脚做为静音 控制功能,静音开时扬声没有咔声,静音关的时候有咔声。开关电源也是一样现象。
    发表于 10-22 08:12

    TPA3255没有静音/待机脚要如何实现静音从而消除关机POPO声的冲击?

    TPA3255没有静音/待机脚要如何实现静音从而消除关机POPO声的冲击?
    发表于 10-15 06:17

    TLV320AIC3106给寄存19ADC上电后,寄存15不能设置为不静音,怎么解决?

    如果先设置寄存15为0x00,即左ADCPGA不静音,然后在寄存19中,给左ADC通道上电,每次都会失败。 同样,如果先给左ADC通道上电,能成功,但是设置寄存15为0x00,
    发表于 09-30 08:03

    4G5G手机信号屏蔽:手机信号“静音”神器

    深圳特信电子|4G5G手机信号屏蔽:手机信号“静音”神器
    的头像 发表于 07-02 08:51 608次阅读

    鸿蒙ArkTS声明式开发:跨平台支持列表PinchGesture之基础手势

    用于触发捏合手势,触发捏合手势的最少手指为2指,最大为5指,最小识别距离为3vp。
    的头像 发表于 06-18 09:33 379次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表PinchGesture之基础<b class='flag-5'>手势</b>

    鸿蒙ArkTS声明式开发:跨平台支持列表PanGesture之基础手势

    用于触发拖动手势事件,滑动的最小距离为5vp时拖动手势识别成功。
    的头像 发表于 06-17 15:03 462次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表PanGesture之基础<b class='flag-5'>手势</b>

    鸿蒙ArkTS声明式开发:跨平台支持列表LongPressGesture之基础手势

    用于触发长按手势事件,触发长按手势的最少手指数为1,最短长按时间为500毫秒。
    的头像 发表于 06-17 09:59 486次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表LongPressGesture之基础<b class='flag-5'>手势</b>

    基于毫米波雷达的手势识别算法

    ,家庭客厅、多人和实时情况)是稳健的,并讨论了当前的局限性和几种潜在的解决方案。 所提出的模型旨在尝试在远程场景中基于毫米波的手势识别,该模型可以应用于我们日常生活的许多方面。具体来说,该模型可以
    发表于 06-05 19:09

    OpenHarmony实战开发-手势事件

    手势表示由单个或多个事件识别的语义动作(例如:点击、拖动和长按)。一个完整的手势也可能由多个事件组成,对应手势的生命周期。支持的事件有:
    的头像 发表于 04-29 13:57 406次阅读

    金贝静音box系列金贝AL box开箱视频##工作原理大揭秘

    静音
    Rykj365
    发布于 :2024年04月11日 16:09:17

    超低静音电流150 mA低转速电压调节数据表

    电子发烧友网站提供《超低静音电流150 mA低转速电压调节数据表.pdf》资料免费下载
    发表于 03-04 10:45 0次下载
    超低<b class='flag-5'>静音</b>电流150 mA低转速电压调节<b class='flag-5'>器</b>数据表

    离子风机和静电发生有什么区别

    离子风机和静电发生在功能和应用上有明显的区别。 离子风机的主要作用是除静电,防止静电污染及破坏。它产生大量的带有正负电荷的气流,可以将物体上所带的电荷中和掉,从而达到消除静电的目的。离子风机适用于
    的头像 发表于 01-24 15:53 505次阅读
    离子风机<b class='flag-5'>和静</b>电发生<b class='flag-5'>器</b>有什么区别