基于ARDUINO的电器遥控系统作者/史舜晨,临沂第一中学
电子基础
摘要:基于ARDUINO平台,集成红外收发模块、数码管显示模块、舵机控制模块及相应机械结构,开发了专门的控制程序,实现了一个红外遥控系统。该系统可以在不破坏原有电子设备开关控制结构的前提下,实现遥控开关和定时开关功能。更换触发头可以适应不同种类电器的多种触发控制模式。该系统可以提高家用老旧电器的易用性和智能化程度。
关键词:Arduino;遥控;开关;定时引言
望家用电器以更加舒适的方式控制家中的电子设备、希望设经济社会的发展,人民对生活质量有了更高的追求,希
备提供更贴心的服务,如电器的定时控制、智能控制等。但伴随着电器的更新换代速率不断加快,尤其是遥控的大量广泛应用极大便利了生活。例如人们可以不必在冬日离开温暖的被窝去关灯,不必匆匆在客厅和餐厅间往返来使用厨房电器。但是电器的更新速率并不完全与人们更换它们的能力与意向同步,尤其是在一些比较贵重或者更换麻烦的电器上。笔者设计了一种基于按键式电器易用性的远程遥控系统。如图ARDUINO系统的、用于提升现有手动器控制下,舵机带动齿轮驱动齿条实现对机械按键的触发。1所示,在控制当舵机顺时针转动触发一次开关,如状态一;当舵机逆时针转动再一次触发开关,如状态二。借助该系统,可以在原有手动按键的基础上添加了遥控开关与定时开关功能。这种设计可以在较大程度上提高人们对家用电器的控制能力,便利生活、提高生活质量。并且可以减少家电的更换频率,发展观念。减少资源消耗;使老式电器物尽其用,符合绿色的可持续
工作原理 状态一 工作原理 状态二图 1 工作原理图1.硬件系统设计
了ATmega16U2本系统采用主控芯片,同时具有了Arduino UNO控制14板,路数字输入控制板采/输用
出口(其中个个ICSP header16MHz晶体振荡器,一个6路可作为PWM和一个复位按钮。 输入USB输出),6口,一个电源插座,一
路模拟输入,一/输出口较多,且
Arduino UNO源插座供电、USB支持3种方式供电,即外部直流电源通过电
GND设计的需要和VIN接口直接供电、电池连接电源连接器的
有类似 Java 和 C 语言开发环境,模块化的硬件设备,良好[1]引脚,而且能自动选择供电方式,配置满足了。此外,Arduino作为一个开源设计平台,具Arduino 价格比普通单片机便宜,并且体积只有巴掌大小,的封装性,适合大部分开发人群设计使用。另外重要的一点,
适合作为外附工具改进电器需要方便使用。它可方便地与传感器、各种电子元件进行连接,实现丰富的高级应用。示模块,红外发射接收模块以及舵机控制模块。图本项目采用ARDUINO作为控制系统,包括了数码管显
统框架图。红外接收管接收来自外部红外发射器的数据,经
2为系通过舵机带动齿轮和齿条触发机械开关。过控制器解码,再相应驱动舵机控制模块和定时设置模块,
■ 1.1 红外遥控发射接收模块
技术。基于红外线遥控是目前应用最广泛、性价比最好的一种遥控
施方便。综合以上考虑,本系统中选用了红外遥控作为外部Arduino平台实现红外遥控功能控制简单,实控制信号输入。
图 2 系统框架图是先将其调制在特定的载波频率上来使其在无线传输过程
红外遥控器发出的信号是一连串二进制脉冲码。通常都
中免受其他红外信号的干扰出去。红外接收管将接收到的光信号转换为微弱的电信号,,然后再经红外发射二极管发射还原为原始控制编码,再将此编码传递给控制芯片做相通过放大、自动增益控制、带通滤波、解调变、波形整形后
应控制输出。
NEC本系统使用协议格式典型的脉冲序列。一个信息发送由NEC格式的红外遥控编码方式。图9mS3的为
AGC自动增益控制脉冲开头,用来设置增益。接着是4.5mS
www�ele169�com|77
电子基础图空闲,然后是地址、命令。地址和命令都传送3 NEC协议典型脉冲序列次的地址和命令是反码,可以用来校验接收到的信息。总的2次,第二传输时间是固定的,因为每一位都有反码传送。本项目中所有的指令都是通过红外遥控器发出,包括时设计中使用的码值如下:间设置指令、直接触发开关指令、倒计时开始指令等。项目long on0= 0x00FF67; long on1 = 0x00ff30CF;long on2 = 0x00FF18E7; long on3 = 0x00FF7A85;long on4 = 0x00FF10EF; long on5 = 0x00FF38C7;
long on6 = 0x00FF5AA5; long on7 = 0x00FF42BD;long on8 = 0x00FF4AB5; long on9 = 0x00FF52AD;
long play = 0xFFA857;
long add = 0x00FF02FD; long subtract = 0xFF9867;制舵机正转,subtracton0-on9用来设置定时时间并显示,add用来控制反转,play用来控制计时按键用来控
到开始和计时结束后的开关触发。红外接收管的信号引脚连接
■ Arduino1.2 舵机控制模块
的数字3。无核心马达、齿轮与位置检测器所构成,适用于角度不断变舵机是一种位置伺服的驱动器,主要是由外壳、电路板、
化并且可以保持的控制系统,目前舵机广泛应用在机器人关节的控制,机器车方向的扭动等在智能控制应用中。
控制舵机的转动Arduino控制器可以通过输出不同占空比的[3]。本项目中选择的舵机是TOWERPROPWM信号
9G舵机,该舵机具有尺寸小,质量轻,扭力大,相应脉冲
的
相对较短的优点,能够满足项目中驱动齿条触发开关的需求,其工作电压在无负载的时候的速度为3.5-6v,扭矩为/600.12秒/601.6kg·cm(4.8V),在度(4.8V)或者0.10秒值引脚GND度及信号线(6.0V) 。该舵机有三个引脚分别是电源PWM。本项目中信号线接到ArduinoVCC、地线
的数
者反转驱动齿轮转动,然后带动齿条移动,实现如图10上。当控制器发送触发信号时,舵机通过正转或示状态变化,控制开关闭合和断开。1所■ 1.3 触发开关头的设计所示的旋钮式开关头可以应用到旋钮式开关上,如燃气灶、设计不同的触发头可以实现对不同电器的控制。如图4微波炉等。
78|电子制作2017年11月
图 状态一 状态二2.主控软件设计4 旋钮式触发头性、流畅性和执行效率。控制软件主要包括红外接收模块、控制软件是实现本项目的关键,直接影响系统的功能舵机控制模块、数码管显示模块。红外遥控模块实现红外输入控制指令的解码,舵机控制模块根据相应的指令实现舵机信息的提示。的正转或者反转,数码管显示模块实现倒计时进度的显示和
图5 程序流程图按下,如果有,就对红外进行解码,判断相应的操作指令,程序工作的流程图如图5所示,首先判断是否有按键
误。如为时间设置指令,则在数码管上显示倒计时的时间,如果没有识别出按键则在数码管上显示“E”,表示按键错
并且向倒计时模块传递倒计时的时间;如果为直接触发开关指令,则判断是正传还是反转,如果是正传则向舵机控制模
块传递()实现正传;反转则向舵机控制模块传递chePos=1,舵机接到指令后调用函数chePos=0;舵
clockwisefan
机控制模块则调用函数正反转函数代码如下,本项目中转动的角度为Anticlockwisefan()实现反转。动度数可以根据项目需要进行改动。180度,转void Clockwise(void) //// 每次步进一度
{ for(pos=0; pos <180; pos++) // 从正转程序
0度到180度运动{ myservo.write(pos); // 指定舵机转向的角度void Anti_clockwisefan(void) //delay(10); } } // 等待10ms让舵机到达指定位置
{ for(pos=180 ; pos >0; pos--)
反转程序// 从{ myservo.write(pos); // 指定舵机转向的角度
180度到0度运动,每次步进一度
delay(10); } } // 等待如果为倒计时开始指令,则调用10ms让舵机到达指定位置
开始倒计时,同步驱动数码管的显示。倒计时函数led_diplay()函数,
time_start()的代码如下:其中delay_分钟数,delay(x)函数,表示延时delay_time时一分钟,本项目中使用了循环语句x毫秒。为了表示延表示延时的void delay_time_start(int delay_time)60次。
{ for(int k=delay_time;k>0;k--){ led_display(k);for(int m=60;m>0;m--) { delay(1000); //if(k==1 && m<11)//最后十秒显示
延时1秒
{ led_display((m)); } } }chePos=!chePos;led_display(0);action_start(); }
其中void action_start(void)action_start()函数实现舵机反转,代码如下:{ if (chePos==1) //{ Clockwise(); } //如果运行正转程序chePos为1,运行正转程序else
3.系统展示
{ Anti_clockwisefan(); } } //运行反转程序实物连接图。
图6为各模块与ArduinoUNO的连接原理图,图7为舵机及齿轮和齿条控制输出平稳有效,成功实现了对按键的在demo验证过程中,红外遥控输入信号识别正确,
触发。倒计时模块工作正常,在倒计时结束后也有效的调用了舵机控制模块,实现了开关的触发。
电子基础
图6 各模块连接图 图4.结束语
7 各构件实际连接图
预期功能,可以加装在家中的手动按键式电器上,为生活带技术调研后,本文设计的电器远程遥控系统成功实现了来一定程度的便利,具有一定的实用价值。
平台的接口丰富、开发简单、功能实用等特性,以该系统采用模块化的设计思想,充分利用了Arduino
控制板为核心,通过自主编写的控制程序,成功实现了对舵Arduino制,技术路线得到验证,笔者也从中得到锻炼,学习能力、机模块、红外接收发射模块和数码管显示模块的集成和控
创新能力、自信心得到极大提升。以下方面对系统进行改进或做深入研究:
在实验过程中也发现系统所存在的不足,今后还可以在触发(3)集成无线通信或;(1)(2)使用精确度更高的舵机,避免由于误差不能够正常完善机械和外观设计,wifi技术,实现手机远程遥控。
实现对不同机械按键的触发;参考文献* [1]车雷达系统设计刘楚红,董镇,钱宇捷,陶立,柳盛东[J],现代电子技术,2014年第.基于37Arduino 的倒* [2]李雪莹.基于单片机的空调红外线编解码系统的设计和实现卷第17期
* [3][D],电子科技大学硕士论文
技术:1009-3044(2012)15-3719-03蔡睿妍.基于Arduino的舵机控制系统设计[J],电脑知识与www�ele169�com|79