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

电子说

1.2w人已加入

描述

步骤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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分