haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 单片机 >

用mini红外遥控器来控制其开关,包包防盗器

【简介】利用光敏电阻和蜂鸣器制作的一个防止包被拉开的东东用mini遥控器来控制其开关;

 

 

用mini红外遥控器来控制其开关,包包防盗器


 

【器材】Arduino UNO,光敏电阻,红外遥控器,红外接收器,蜂鸣器,LED小灯,电阻,面包板,导线若干。

 

用mini红外遥控器来控制其开关,包包防盗器


 

【接线】接线示意图如下

 

用mini红外遥控器来控制其开关,包包防盗器


 

【硬件实现】

1. 光敏电阻

这个器件是依赖光作用的,在黑暗的环境中,光敏电阻是具有非常高阻值的电阻。光线越强,电阻值反而越低。通过读取这个电阻值,就可以检查光线的亮暗了。

 

用mini红外遥控器来控制其开关,包包防盗器


 

 

用mini红外遥控器来控制其开关,包包防盗器


 

上式中,R1代表的就是10k电阻,R2代表的就是光敏电阻。本来R2在黑暗中,阻值非常大,所以Vout也就很大,接近5V。当有光线照射的时候,R2的阻值就会迅速减小,所以Vout也就随之减小了,读取的电压值就会变小。通过上面这个公式我们可以看出,R1选取不能太小,最好在1k~10k,以便让比值变化更明显。

2. 蜂鸣器

蜂鸣器其实就是一种会发声的电子元件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

压电式蜂鸣器是以压电陶瓷的压电效应,来带动金属片的振动而发声。当受到外力导致压电材料发生形变时压电材料会产生电荷。电磁式的蜂鸣器,则是利用通电导体会产生磁场的特性,通电时将金属振动膜吸下,不通电时依振动膜的弹力弹回。不太明白也没太大关系,不影响我们使用。压电式蜂鸣器需要比较高的电压才能有足够的音压,一般建议为9V以上。电磁式蜂鸣器用1.5V就可以发出85dB以上的音压了,唯消耗电流会大大的高于压电式蜂鸣器。所以还是建议初学者使用电磁式蜂鸣器。

无论是压电式蜂鸣器还是电磁式蜂鸣器,都有有源蜂鸣器和无源蜂鸣器两种区分。有源蜂鸣器和无源蜂鸣器的根本区别是输入信号的要求不一样。这里的“源”不是指电源,而是指振荡源,有源蜂鸣器内部带振荡源,说白了就是只要一通电就会响。而无源内部不带震荡源,所以如果仅用直流信号无法使其响,必须用2K-5K的方波去驱动它。从外观上看,有源无源的区别在于,有源蜂鸣器有长短脚,也就是所谓正负极,长脚为正极,短脚为负极。而无源蜂鸣器则没有正负极,两个引脚长度相同。在这里,我们使用的是无源蜂鸣器。

3. 红外接收

所谓的红外接收管,也就是接收红外光的电子器件。在我们的电视机、空调等家电,遥控小车、遥控飞机等玩具里,它们都需要用到红外接收管。遥控器发射出来的都是红外光,电视机上势必要有红外接收管,才能接收到遥控器发过来的红外信号。其连线图大致如下:

红外遥控器和接收器的使用跟很多元器件是有所不同的,它有着自己的库——IRromote多协议红外遥控库。利用这个库我们可以轻松实现多协议红外遥控编码的发送和接收。本红外远程库由两部分组成:负责发射红外遥控器数据包的IRsend,负责接收和解码红外消息的IRrecv。此红外远程库由两部分组成:负责发射红外遥控器数据包的IRsend,负责接收和解码红外消息的IRrecv。在这里,我们只用到了IRrecv

 

用mini红外遥控器来控制其开关,包包防盗器


 

IRrecv红外接收类函数

公共类

IRrecv()

blink13()

decode()

enableIRIn()

resume()

私有类

getRClevel()

decodeNEC()

decodeSony()

decodeSanyo()

decodeMitsubishi()

decodeRC5()

decodeRC6()

decodePanasonic()

decodeJVC()

decodeHash()

compare()

IRsend() 红外发射类

公共类

IRsend()

sendRaw()

sendNEC()

sendSony()

sendRC5()

sendRC6()

sendDISH()

sendSharp()

sendPanasonic()

sendJVC()

私有类

enableIROut()

mark()

space()

IDE中也有着对于红外的例子,我们可以直接下载到板子上自己感受:

例子

IRrecord

IRrecvDemo

IRrecvDump

IRrelay

IRsendDemo

IRtest

IRtest2

JVCPanasonicSendDemo

在运用中如果我们将IRrecvDemo这个例子下载到板子进行测试,通过串口监视器可以观察到,串口中如果正确接收的话,会出现以FD开头的六位数,并且对于红外遥控器上的每一个按键都有一个专属的红外码值。

【设计思路】

1、就如同一开始所介绍的功能一样,我们先定义一个标志位并且其初值为零,当红外接收管接收到红外码的时候判断其是否为开关键对应的红外码,如果是,就将标志位取反,如果不是就继续允许接收下一个红外码再做判断。接着,判断标志位是否为0,不管是或者不是都给标志位取反,然后再判断标志位是否为1,如果不为1那么就关闭蜂鸣器和LED然后回到程序初始的地方接收判断红外码。如果为1,则开始读取光敏电阻的分压值,并将其作为参数放入防盗功能的函数中进行工作。

到了防盗函数中一开始就判断光敏电阻的分压值是否小于临界值,如果没有就继续接收判断模拟口0传来的新值。如果该值已经小于了临界值,此时就开让蜂鸣器按照正弦的方式鸣叫,LED小灯也按照这样的方式进行闪烁。之后,程序会回到红外接收的地方继续开始执行。

2、流程图:

 

用mini红外遥控器来控制其开关,包包防盗器


 

【程序代码】代码程序如下:

#include <IRremote.h>

int RECV_PIN = 11; //定义RECV_PIN变量为11

IRrecv irrecv(RECV_PIN);// 设置RECV_PIN(也就是11引脚)为红外接收端

decode_results results;// 定义results变量为红外结果存放位置

int buzzer = 8;  //设置蜂鸣器为数字引脚8

int led=10;//设置LED灯为数字引脚10

float sinVal; //定义浮点型的数据以便更精确的描述正弦值

int toneVal;//将弧度值转换为声音的频率

int state=0;

void setup(){

Serial.begin(9600);  //设置波特率为9600 bps

irrecv.enableIRIn(); //启动红外解码

pinMode(buzzer, OUTPUT);  // 蜂鸣器引脚设置

pinMode(led,OUTPUT);//led引脚设置

(责任编辑:admin)
    haoDIY创好电子 版权所有,电话微信13977534587