【摘要】本文主要介绍了基于nRF24L01和STC单片机的通用型遥控开关的设计过程。提出了一种以STC单片机为控制器,采用nRF24L01无线收发模块作为收发器件,采用STC单片机内部集成EEPROM为比对码存储器的无线遥控开关的设计方案。本遥控开关可靠性高、通用性强、成本低、体积小、功耗低,具有较强的实用价值。
【关键词】STC单片机;nRF24L01;EEPROM;通用型;无线遥控
1.引言
随着生活水平的不断提高,人们对生活的细节要求也越来越高,比如越来越多的家庭采用遥控器替代传统的手动开关,小小的改变给生活带来了很大的便利。但目前市面上的遥控开关一般都是为专有电器开发的,比如高档水晶吊灯、热水器、取暖器、空调扇等等,根本不能通用。本设计方案主要是以STC15W404S单片机作为核心控制器,2.4GHz无线模块作为收发器,实现一对多、绕障碍、远距离遥控,并且设计的无线遥控开关性能稳定,可以随意配置控制键与控制点,自由灵活,价格便宜,使用方便,通用于各种家用电器、小功率用电设备等[1]。
使用本遥控开关可以轻松地将日常生活中传统手动开关替换成使用方便的遥控开关,具有较强的实用价值。
2.系统硬件设计
本系统硬件由遥控器和接收板两部分组成。遥控器内部由单片机最小系统、键盘、无线收发模块nRF24L01(工作于发射模式)组成。接收板部分由单片机最小系统、无线收发模块nRF24L01(工作于接收模式)、编码存储器、按键、继电器组成。系统组成框图如图1所示。
图1 系统硬件组成框图
2.1 核心器件的选用与介绍
本系统核心器件主要是控制器与无线收发器件,控制器选用台湾宏晶科技的STC15W404S单片机,无线收发器件选用nRF24L01无线收发模块。
STC15W404S是宏晶科技作为89系列替代产品推出的一款新型超低价、宽电压、超低功耗、高速高可靠、超强抗干扰的增强型1T8051微处理器。
STC15W404S工作电压2.6~5.5V,掉电模式下,工作电流小于0.1uA,SOP28封装的单片价格仅为人民币2.3元。STC15W404S内部集成了4KB的Flash闪存;512字节的大容量SRAM;3个普通定时器T0~T2;1个掉电唤醒专用定时器;1路比较器,用于外部掉电检测或AD转换器;9KB的EEPROM;可掉电唤醒的内部低压检测中断;看门狗定时器Watchdog Timer;内部高可靠复位电路;内部高精准时钟电路等功能。
STC15W404S内部集成的EEPROM可以省去外部EEPROM的扩展;内部集成的时钟、复位电路使单片机最小系统变得超级简单;内部集成功能部件完全满足本设计的所有要求[2]。
本设计所选的无线收发模块是使用Nordic公司的nRF24L01芯片开发的无线收发模块。nRF2401是单芯片射频收发器,工作在全球开放的2.4-2.5 GHz的ISM频段,在工业传感器、无线键盘鼠标、玩具遥控器等好多方面得到了广泛应用。该收发器包含一个完全集成的频率合成器,功率放大器,晶体振荡器和调制器。输出功率和频率信道只需3根串行接口就可以进行编程。内置的掉电模式,功耗极低,当工作于-5dBm功率发射模式时电流只有10.5mA,工作于接收模式下电流只有18mA。本无线收发模块技术成熟、稳定、性价比高、使用方便,不受障碍物的干扰,可以轻松接收几十米内无线发射的信号,完成满足本遥控开关设计的需要。
2.2 系统硬件电路设计
本系统硬件电路由遥控器电路与接收开关电路两部分组成。遥控器电路由4x4矩阵键盘电路、STC15W404S单片机最小系统、nRF24L01模块电路组成;接收开关电路由nRF24L01模块电路、STC15W404S单片机最小系统、继电器控制电路等部分组成[3]。
3.系统软件件设计
本系统软件主要分为两部分:第一部分,遥控器键盘扫描,将得到的编码通过无线模块发送出去;第二部分,接收开关板检测无线模块接收的数据,与自身存储的编码比对,如果接收到的编码与自身存储编码一致则将开关状态反转[4]。
3.1 遥控器部分软件设计
遥控器部分软件任务为矩阵键盘扫描和数据无线发送。单片机循环扫描键盘,一旦键盘有键按下则将按键对应的编码通过无线收发模块发送出去。遥控器软件工作流程如图2所示。
图2 遥控器软件工作流程图
键盘扫描函数功能是检查是否有键按下,如果检测到按键操作则返回按键键值。键盘扫描函数采用线反转算法,程序较为简捷,具体函数此处不再赘述。
无线发送函数功能是将编码信息通过nRF24L01无线收发模块发送出去,发送子程序如下:
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
CE=0;
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
CE=1;
inerDelay_us(10);
}
3.2 接收控制板部分软件设计
接收控制板部分软件任务主要有无线接收编码、EEPROM编码读取、编码比对、开关控制这几部分。主要涉及到的函数为无线接收函数和EEPROM读取函数。接收控制板部分软件工作流程如图3所示。
图3 接收控制板软件工作流程图
无线接收函数的功能是将编码信息通过nRF24L01无线收发模块接收进来,具体接收函数如下:
unsigned char nRF24L01_RxPacket (unsigned char* rx_buf)
{
unsigned char revale=0;
sta=SPI_Read(STATUS);
if(RX_DR)
{
CE = 0;
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
revale =1;
}
SPI_RW_Reg(WRITE_REG+STATUS, sta);
return revale;
}
本系统采用内部集成的EEPROM存储器,EEPROM读取函数如下:
unsigned char EepromReadByte(unsigned int addr)
{
unsigned char dat;
EEP_CONTR = ENABLE_EEP;
EEP_CMD = CMD_READ;
EEP_ADDRL = addr;
EEP_ADDRH = addr >> 8;
EEP_TRIG = 0x5a;
EEP_TRIG = 0xa5;
_nop_();
dat = EEP_DATA;
EepIdle();
return dat;
}
4.结束语
基于nRF24L01的通用型遥控开关的设计,通过2.4GHz的无线模块nRF24L01发射接收实现开关编码的无线传输,本设计可靠性高、体积小、功耗低、成本低。同时该无线遥控开关能够实现一对多、绕障碍、远距离控制,可以随意配置控制键与控制点,自由灵活使用方便,克服了传统遥控器一对一控制的缺陷。最后通过软、硬件联合调试,实验结果满足设计要求,达到设计前预期的各项指标[5]。
参考文献
[1]张永格.基于AT89S51单片机的无线遥控开关设计与实现[J].制造业自动化.2011.4(2):120-122.
[2]周计文,王立新,王 辉.基于单片机的多路无线遥控开关设计[J].微处理机.2008.6(3):159-161.
[3]李晓辉,任艳君.四路无线遥控开关系统的设计与实现[J].嵌入式技术.2007.3(12):66-68.
[4]谈敏.通用型无线家电开关遥控器设计[J].盐城工学院学报(自然科学版).2013.3(1):68-70.
[5]李丽华.基于单片机的酒精浓度检测仪设计[J].科技广场.2009.3(3):166-168.
基金项目:本文是2014年度江苏省大学生实践创新训练计划立项项目“基于单片机的通用型无线遥控开关的设计与制作”(项目编号:201413754002Y)的研究成果之一。
作者简介:贺敬行(1994—),男,江苏沛县人,现就读于扬州工业职业技术学院1201应用电子班。