论文部分内容阅读
摘要:在噪音较大的场合中,现场环境复杂,在各个岗位上的工作人员往往需要及时有效的沟通。通过手机、无线对讲机等设备在噪音大的场合中受干扰程度大,本文针对此需求设计了一种基于PIC单片机和NRF24L01无线模块的无线应答装置,硬件设计包含开关电源模块,DC-DC电源模块,PIC16F1936单片机系统,NRF24L01无线发射接收模块,在不同的使用地点布置一台无线系统,任何一个对应的指令按钮被按下后,各个对应的命令指示器均亮,任何一个地点都可对此命令进行消除操作,实现了信息的传递,无线配置节省了布线,灵活移动,便于维护。
关键词:无线 单片机 稳压电源
硬件电路设计:
系统可在不同位置布置多台设备,每台设备由PIC单片机控制NRF24L01执行运作,设置4個按键用于发送指令,同时四个指示灯用于指示命令的类型,类型可由使用者自行定制统一,当任何一台设备按下按钮,相对应的指示灯亮起,同时通过单片机的处理通过NRF24L01发送相对应的指令给每个设备,各个设备接收到指令后对其解码,识别指令后将远传过来的指令进行亮灯,每台设备可以判断各个设备的当前状态,任何一台设备均可以消除相对应的指示指令,实现信号同步。
1、稳压电源
7805三端稳压 IC内部控制电路是一种具有过压、超流、过热等保护作用的控制电路,这样就使它在工作时性能非常稳定。该器件都是具备良好的高温和导体系数,所以该产品在工业中的应用也是非常普遍。它们就是运用自动化的本地调制方法去消掉噪音的影响。可以提供给系统稳定的电源,增强了无线传输过程中信号的抗干扰程度。
220v 交流电源经过四个 in4007 二极管进行整流后再经过电解电容滤波后生成直流电源,其中输出电压取样电阻连接到 2n2222a 基极,随着输出电压波动的变化,三极管的发射极和集电极之间的压降幅度受基极所控制,当输入电压波动幅度增大时,基极的电位减小,发射极、集电极压降幅度增大,输出电压变化减小,完成了调整。 通过TL431G可以对锂电池进行充电,系统可以配个7.4V的锂电池,防止无外部电源供电情况下保持正常通信。
2、CPU主控电路,CPU采用PIC单片机,PIC 8位单片机的指令很少、晶振可以配置4MHZ,PIC系列单片机具有双总线和两级指令流水结构,而且集成了多种通信接口,与NRF24L01通信使用SPI接口设计,编程简便,只需要对单片机进行简单的配置和程序编辑就可实现控制。PIC16F1936的RB端口可以配置为中断功能,当无线模块有数据需要接收时产生中断,单片机立即进行中断处理,中断程序中采用设定标志位后立即离开,随后立即释放,不会占用CPU资源进行中断长时间处理数据,根据标志位在程序在主程序循环中进行处理。RC5和RC4可复用引脚,配置为SPI的输入与输出。L300为磁珠,可以提高供电电源的抗干扰作用。
3、NRF24L01无线通讯模块设计,可以在2.4G到2.5G频道上进行通讯。通信速度快,输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传输,功耗很低。模块可以设置为接收模式或者发送模式,可以由主控单片机根据需要设置为发送或者接收,拥有一个发送通道,六个接收通道,发送端配置的地址需要与接收端的地址相同,在硬件初始化中需要对模块进行地址的固化,在设置PCB的时候可以使用PCB的铜板部分作为天线的设计。
软件设计:
系统上电后对单片机系统的内部模块和接口进行初始化后,对按键状态进行扫描,设定一台主机,主机对每台设备进行状态检查,轮询发送检查状态指令进行校验,保证每台设备状态的统一性,如果有设备状态不同,产生报警信号,确保了传递信息的正确性。每台设备扫描按键事件,当有事件产生发送相对应的指令给主机,由主机发送相应的状态给每个子机,子机接收信号后进行处理,程序流程如下:
子站程序流程为上电后对PIC系统进行初始化和对中断的配置,端口根据具体情况进行配置,接着对NRF24L01进行初始化,包括接收模式和发射模式的配置,NRF24L01有中断产生后对缓冲区内容进去读取保存,解码缓冲区内容并进行指令判断。通过端口扫描的方式对按键事件进行扫描,如果有按钮触发进行状态改变并发送给主机。
主站程序流程也是上电后初始化,判断是否有按键事件触发,有事件触发将指令编码通过写入NRF24L01缓冲区进行轮询发送,每台子机有对应的地址,发送完毕后空闲状态进行每台状态比对校验。
NRF24L01在PIC单片机中的初始化程序。
void nRF24L01_Initial(void)
{
NRF_StatusBits.nRF24L01_IRQ_Flag=0;
ANSELBbits.ANSB1=0;
INTCONbits.IOCIE=1;
IOCBNbits.IOCBN1=1;
nRF24L01_IRQ_T = 1;
OPTION_REGbits.nWPUEN=0;
WPUBbits.WPUB1=1;
nRF24L01_MISO_T = 1;
nRF24L01_CE_T = 0;
nRF24L01_CSN_T = 0;
nRF24L01_SCK_T = 0;
nRF24L01_MOSI_T = 0;
nRF24L01_CE=0;
nRF24L01_CSN=1;
nRF24L01_SCK=0;
OpenSPI(SPI_FOSC_16,MODE_00,SMPMID); TX_Mode();
RX_Mode();
SPI_RW_Reg(WRITE_REG+STATUS,0xff);
}
接收模式程序
void RX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
RX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS0,TX_ADR_WIDTH);
}
SPI_RW_Reg(WRITE_REG + RX_PW_P0,TX_PLOAD_WIDTH); SPI_RW_Reg(WRITE_REG + RX_PW_P1,TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0f);
ei();
nRF24L01_CE=1;
datarate = 2Mbps.
}
发射模式程序
void TX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
TX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS0,TX_ADR_WIDTH);
}
if(nrf_Pipe==0x00)SPI_RW_Reg(WRITE_REG + RF_CH,0);
if(nrf_Pipe==0x01)SPI_RW_Reg(WRITE_REG + RF_CH,40);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x1a);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0e);
ei();
nRF24L01_CE=1;
}
本無线应答装置适用于工厂环境比较嘈杂的场所,实测通讯距离250K传输速率50米,可以外加天线得到更远的传送距离,对比手机、对讲机等通讯工具来说信息传递准确率高,抗噪声能力强,现场只需要提供系统的供电电源,无需其余线缆,结合系统互相校验防错报警功能,可以提供可靠的信息交互,提高现场人员之间的交流质量与效率。
参考文献:
[1]李学海 .PIC单片机实用教程[M].第一版.北京航空航天大学出版社,2002:69-94,19-52
[2]丁锦淘 .PIC单片机速成教程[M].第一版.电子制作杂志社.2004:3
[3]彭树生 .PIC单片机原理与接口技术 电子工业出版社 2008.4
[4]王玲,孙冬冬 基于无线传输模块NRF24L01的简易智能家居系统设计电子测试
关键词:无线 单片机 稳压电源
硬件电路设计:
系统可在不同位置布置多台设备,每台设备由PIC单片机控制NRF24L01执行运作,设置4個按键用于发送指令,同时四个指示灯用于指示命令的类型,类型可由使用者自行定制统一,当任何一台设备按下按钮,相对应的指示灯亮起,同时通过单片机的处理通过NRF24L01发送相对应的指令给每个设备,各个设备接收到指令后对其解码,识别指令后将远传过来的指令进行亮灯,每台设备可以判断各个设备的当前状态,任何一台设备均可以消除相对应的指示指令,实现信号同步。
1、稳压电源
7805三端稳压 IC内部控制电路是一种具有过压、超流、过热等保护作用的控制电路,这样就使它在工作时性能非常稳定。该器件都是具备良好的高温和导体系数,所以该产品在工业中的应用也是非常普遍。它们就是运用自动化的本地调制方法去消掉噪音的影响。可以提供给系统稳定的电源,增强了无线传输过程中信号的抗干扰程度。
220v 交流电源经过四个 in4007 二极管进行整流后再经过电解电容滤波后生成直流电源,其中输出电压取样电阻连接到 2n2222a 基极,随着输出电压波动的变化,三极管的发射极和集电极之间的压降幅度受基极所控制,当输入电压波动幅度增大时,基极的电位减小,发射极、集电极压降幅度增大,输出电压变化减小,完成了调整。 通过TL431G可以对锂电池进行充电,系统可以配个7.4V的锂电池,防止无外部电源供电情况下保持正常通信。
2、CPU主控电路,CPU采用PIC单片机,PIC 8位单片机的指令很少、晶振可以配置4MHZ,PIC系列单片机具有双总线和两级指令流水结构,而且集成了多种通信接口,与NRF24L01通信使用SPI接口设计,编程简便,只需要对单片机进行简单的配置和程序编辑就可实现控制。PIC16F1936的RB端口可以配置为中断功能,当无线模块有数据需要接收时产生中断,单片机立即进行中断处理,中断程序中采用设定标志位后立即离开,随后立即释放,不会占用CPU资源进行中断长时间处理数据,根据标志位在程序在主程序循环中进行处理。RC5和RC4可复用引脚,配置为SPI的输入与输出。L300为磁珠,可以提高供电电源的抗干扰作用。
3、NRF24L01无线通讯模块设计,可以在2.4G到2.5G频道上进行通讯。通信速度快,输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传输,功耗很低。模块可以设置为接收模式或者发送模式,可以由主控单片机根据需要设置为发送或者接收,拥有一个发送通道,六个接收通道,发送端配置的地址需要与接收端的地址相同,在硬件初始化中需要对模块进行地址的固化,在设置PCB的时候可以使用PCB的铜板部分作为天线的设计。
软件设计:
系统上电后对单片机系统的内部模块和接口进行初始化后,对按键状态进行扫描,设定一台主机,主机对每台设备进行状态检查,轮询发送检查状态指令进行校验,保证每台设备状态的统一性,如果有设备状态不同,产生报警信号,确保了传递信息的正确性。每台设备扫描按键事件,当有事件产生发送相对应的指令给主机,由主机发送相应的状态给每个子机,子机接收信号后进行处理,程序流程如下:
子站程序流程为上电后对PIC系统进行初始化和对中断的配置,端口根据具体情况进行配置,接着对NRF24L01进行初始化,包括接收模式和发射模式的配置,NRF24L01有中断产生后对缓冲区内容进去读取保存,解码缓冲区内容并进行指令判断。通过端口扫描的方式对按键事件进行扫描,如果有按钮触发进行状态改变并发送给主机。
主站程序流程也是上电后初始化,判断是否有按键事件触发,有事件触发将指令编码通过写入NRF24L01缓冲区进行轮询发送,每台子机有对应的地址,发送完毕后空闲状态进行每台状态比对校验。
NRF24L01在PIC单片机中的初始化程序。
void nRF24L01_Initial(void)
{
NRF_StatusBits.nRF24L01_IRQ_Flag=0;
ANSELBbits.ANSB1=0;
INTCONbits.IOCIE=1;
IOCBNbits.IOCBN1=1;
nRF24L01_IRQ_T = 1;
OPTION_REGbits.nWPUEN=0;
WPUBbits.WPUB1=1;
nRF24L01_MISO_T = 1;
nRF24L01_CE_T = 0;
nRF24L01_CSN_T = 0;
nRF24L01_SCK_T = 0;
nRF24L01_MOSI_T = 0;
nRF24L01_CE=0;
nRF24L01_CSN=1;
nRF24L01_SCK=0;
OpenSPI(SPI_FOSC_16,MODE_00,SMPMID); TX_Mode();
RX_Mode();
SPI_RW_Reg(WRITE_REG+STATUS,0xff);
}
接收模式程序
void RX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
RX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS0,TX_ADR_WIDTH);
}
SPI_RW_Reg(WRITE_REG + RX_PW_P0,TX_PLOAD_WIDTH); SPI_RW_Reg(WRITE_REG + RX_PW_P1,TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0f);
ei();
nRF24L01_CE=1;
datarate = 2Mbps.
}
发射模式程序
void TX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
TX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS0,TX_ADR_WIDTH);
}
if(nrf_Pipe==0x00)SPI_RW_Reg(WRITE_REG + RF_CH,0);
if(nrf_Pipe==0x01)SPI_RW_Reg(WRITE_REG + RF_CH,40);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x1a);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0e);
ei();
nRF24L01_CE=1;
}
本無线应答装置适用于工厂环境比较嘈杂的场所,实测通讯距离250K传输速率50米,可以外加天线得到更远的传送距离,对比手机、对讲机等通讯工具来说信息传递准确率高,抗噪声能力强,现场只需要提供系统的供电电源,无需其余线缆,结合系统互相校验防错报警功能,可以提供可靠的信息交互,提高现场人员之间的交流质量与效率。
参考文献:
[1]李学海 .PIC单片机实用教程[M].第一版.北京航空航天大学出版社,2002:69-94,19-52
[2]丁锦淘 .PIC单片机速成教程[M].第一版.电子制作杂志社.2004:3
[3]彭树生 .PIC单片机原理与接口技术 电子工业出版社 2008.4
[4]王玲,孙冬冬 基于无线传输模块NRF24L01的简易智能家居系统设计电子测试