APP下载

一种短距离无线数据通信的病床呼叫系统*

2018-08-08

单片机与嵌入式系统应用 2018年8期
关键词:声光报警三极管病床

(大连科技学院 电气工程学院,大连 116052)

引 言

近年来,全国已经发生多起由于病人遇到突发情况,不能及时向医护人员寻求救助的严重事故,往往错过了最佳治疗的时间,小病变成大病,大病酿成无药可医。因此,一种新型临床无线呼叫仪器的研制成为近些年来的研究热点之一。

nRF24L01是一款由挪威(Nordic)公司生产的新型单片射频收发器件,其工作于2.4~2.5 GHz世界通用ISM频段,工作电压为1.9~3.6 V。可通过SPI写入数据,最高可达10 Mb,数据传输速率最快可达2 Mb,并且具有自动应答和自动再发射功能。芯片融进了增强式ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。该芯片功耗低,在6 dBm功率发射时,工作电流为9 mA,接收时工作电流只有12.3 mA,可选择的掉电模式和空闲模式使其应用设计更为方便。因此将nRF24L01作为无线收发模块,实现病床呼叫系统的无线控制功能。

1 系统方案设计

基于nRF24L01的无线病床呼叫系统主要是由主机和从机组成。从机部分主要完成病床病号的数据采集和数据的传输功能;主机部分主要负责数据的接收、数据处理、显示以及报警。发射与接收电路传输距离可达100 m。当接收到从机发过来的信号时,主机控制蜂鸣器和发光二极管发出声光报警,提醒有病人呼叫,医护人员按下主机的呼应键,取消对应的呼叫。nRF24L01具有自动重发功能、数据包识别及CRC校验功能,增强型ShockBurstTM模式可同时控制应答及重发功能而无需增加MCU的工作量。

系统主要由7部分组成:主控制器、按键模块、无线发送模块、无线接收模块、LCD1602液晶显示模块、声光报警和电源电路。无线病房呼叫系统结构框图如图1所示。

图1 无线病床呼叫系统结构框图

2 硬件模块电路设计

2.1 单片机最小系统

单片机最小系统由单片机STC89C52、复位电路、时钟电路构成,如图2所示。

STC89C52单片机的工作电压范围为4~5.5 V,所以通常给单片机5 V直流电源。连接方式为单片机中的40引脚,VCC接正极5 V,而20引脚VSS接电源地端。复位电路负责确定单片机的工作起始状态,完成单片机的启动过程。时钟电路好比单片机的心脏,它控制着单片机的工作节奏,振荡电路是向单片机提供一个正弦波信号作为基准,其决定单片机的执行速度。XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12 MHz,则一个振荡周期为1/12 μs。

图2 单片机最小系统模块

2.2 无线传输模块

图3 nRF24L01无线发射与接收模块接线图

无线病床呼叫系统的主从机都采用nRF24L01无线传输模块实现通信,电路接法如图3所示,一端作为电能的发射,一端作为电能的接收。

2.3 声光报警模块

图4 声光报警模块

无线病床呼叫系统主机中声光报警电路采用NPN型S8550三极管驱动,当单片机的P1.1~1.3口输出低电平时,三极管的VE>VB>VC>0。三极管的发射结正偏,集电结反偏,三极管饱和导通,此时发光二极管和蜂鸣器发出声光报警,当单片机的P1.1~1.3口输出高电平时,三极管截止,声光报警停止工作。具体电路如图4所示。

3 系统软件实现

3.1 无线发射模块软件设计

首先进行初始化操作,初始化包括设置单片机I/O和SPI相关寄存器,两部分都可以和nRF24L01通信。通过SPI总线配置射频芯片使其进入正确的工作模式,发射数据时,首先将nRF24L01配置为发射模式,接着把发送端待发射数据的目标地址TX-ADDR和数据TX-PLD写入nRF24L01缓冲区,延时后发射数据,其流程图如图5所示。

图5 无线发射模块软件流程图

病床无线呼叫系统从机无线发射模块的SPI写入数据代码如下:

reg为寄存器地址,pBuf为待写入数据地址,uchars写入数据的个数。

uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars){

uchar status,i;

CSN=0;

status = SPI_RW(reg);

for(i=0; i

SPI_RW(*pBuf++);

CSN=1;

return status;

}

uint SPI_RW_Reg(uchar reg, uchar value){

uint status;

CSN = 0; // CSN low, init SPI transaction

status = SPI_RW(reg); // select register

SPI_RW(value); // ..and write value to it..

CSN = 1; // CSN high again

return(status); // return nRF24L01 status uchar

}

void init_NRF24L01(void){

CE=0; // chip enable

CSN=1; // Spi disable

SCK=0; // Spi clock line init high

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);// 写本地地址

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址

SPI_RW_Reg(WRITE_REG + EN_AA, 0x3f);

//频道0自动ACK应答允许

SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x3f);

//允许接收地址只有频道0

SPI_RW_Reg(WRITE_REG + RF_CH, 0);

//设置信道工作为2.4 GHz,收发必须一致

SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH);

//设置接收数据长度,本次设置为20字节

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);

//设置发射速率为1 MHz,发射功率为最大值0dB

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);

// IRQ收发完成中断响应,16位CRC,主发送

}

void nRF24L01_TxPacket(uchar * tx_buf){

CE=0;//StandBy I模式

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; //置高CE,激发数据发送

Delay(10);

SPI_RW_Reg(WRITE_REG+STATUS,0XFF);

}

3.2 无线接收模块软件设计

接收数据时,首先将nRF24L01配置为接收模式。接着延迟进入接收状态等待数据的到来。当接收方检测到有效地址和CRC时,就将数据包储存在接收堆栈中,同时状态寄存器中的中断标志位RX-DR置高,产生中断使IRQ引脚变为低电平,以便通知MCU去取数据,其流程图如图6所示。

图6 无线接收模块软件流程图

病床无线呼叫系统主机无线接收模块的SPI读数据代码如下:

reg为寄存器地址,pBuf为待写入数据地址,uchars写入数据的个数。

uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars){

uchar status,i;

CSN=0;

status = SPI_RW(reg);

for(i=0;i

pBuf[i] = SPI_RW(0);

CSN=1;

return status;

}

4 实验结果

经实验,对系统进行了一些动态值的测量,具体结果如表1所列。

表1 数据测试表

从表1中看出接收端与发射端都维持在低功耗,基本达到了设计的初衷,另外收发距离测试精度也达到了设计的要求。

结 语

猜你喜欢

声光报警三极管病床
声光报警多路抢答器电路的改造分析
高速公路雾天行车安全诱导及护栏碰撞声光报警低功耗融合系统
电力系统接地线声光报警装置的研制及应用
基于晶体三极管的放大电路分析
医院、病床和医务人员情况
2088年的病床
计算机监控系统声光报警系统建设可行性研究
三极管引脚折弯机双凸轮机构的分析与仿真
三极管放大电路的研究
医院、病床和医务人员情况