UEAL第1届电子设计大赛第三轮单片机主观题
医院病床呼叫系统
摘要
本系统的主机与从机均以STM32RBT6为控制芯片,主从机间的有线通信使用MAX485,无线通信使用nRF24L01无线模块。主从机之间通过有线或无线的信息交互,最终实现一个主机和两个从机之间的呼叫与应答。
关键字:STM32RBT6 MAX485 nRF24L01
1系统方案
1.1 主控芯片的选择
方案一:选择MSP430f5529作为主控芯片,该型号单片机低功耗功能强大,基本满足本题目从机功耗5mA的要求。但是该单片机主频有限,可能会导致整个系统反应变慢,无法在极短时间内完成主机与从机之间的通信。假如传输语音信号,430单片机可能会出现问题。
方案二:选择STM32RBT6作为主控芯片,该单片机总线时钟可达72MHz,且引脚较多,易于扩展,速度快,符合系统控制要求,但是功耗较大。
综合考虑,我们选择方案二。
1.2 无线通信模块的论证与选择
方案一:使用FST-4模块,该模块成对使用,只能接收或者发送,传输距离远,但是信号传输不稳定,受外界干扰较大,假如在同一个空间之内有较多的电磁干扰,则接收的信号很容易出错。同时,使用该模块需要自行编写通信协议,比较繁琐。
方案二:使用蓝牙模块,该模块数据传输快速稳定,传输距离较远,但是蓝牙模块只能进行单对单的信息交互,无法实现多个从机与主机间的信息交互。
方案三:使用nRF24L01模块,该模块使用SPI通信,数据传输速度可达2Mbps,数据传输比较稳定,距离较远,抗干扰能力较强,并且该模块可支持主机与多个从机间的通信。
综合考虑,我们选择方案三。
1.3 有线通信模块的论证和选择
方案一:使用单片机自带的SCI模块通信,使用该方案的优势是使用方便,无需任何外设,但是由于输出功率限制,信号无法通过5米以上双芯线进行传递,更无法在实际病床呼叫系统中使用。
方案二:使用MAX485驱动芯片,驱动复杂,优点是使用差分线传输数据,所以可以使主从机间的有线通信距离加长,如果硬件处理得当,最远可以实现1.2Km的传输距离,同时连接32个驱动器和收发器。
综合考虑,我们选择方案二。
1.4 系统总体方案
系统实现框图如图1所示。
图1医院病床呼叫系统总体系统框图
系统总体方案及工作原理说明如下:从机通过无线模块nRF24L01或有线模块MAX485对主机进行呼叫,主机接收到后作出响应(蜂鸣器和LED灯),从机在确认主机已接受信号后,也作出同样的响应。主机根据接收到的信号以及接受的时间,对呼叫的从机进行排序,并在OLED上显示出来。
2 理论分析与设计
2.1 nRF24L01工作原理
发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
2.2 MAX485工作原理
MAX485工作在5V单电源下。采用单一电源+5 V工作,额定电流为300μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。
2.3组成方案
根据比赛要求,最终决定方案为:控制芯片采用STM32RBT6,有线通信部分使用MAX485芯片,无线通信部分使用nRF24L01模块,提示部分采用蜂鸣器。
3 电路与程序设计
3.1 电路设计
3.1.1 MAX485工作电路如图(1),供电以及使能部分使用5V电压
图(1)MAX485工作电路
3.1.2 nRF24L01模块工作电路如图(2)
图(2)nRF24L01模块工作电路
3.1.3主板工作电路及PCB如图(3)。
(a)电路原理图
(b)PCB版图
图(3)主板电路及PCB
3.2 程序结构与设计
程序流程图如图(4)所示。
4 测试方案与测试结果
测试结果分析:
当主机与从机间进行无线通信时,随着距离的增大或遮挡物的增多,出现错误的概率会增加,这是因为nRF24L01模块债这些情况下,传输数据的误码率会增大,造成结果的错误。
本项目设计的病床呼叫系统实现了一个主机和2个从机的互相应答,并能够分别实现有线和无线的双向通信,主机能够在极短的时间内回应从机的请求并做出指示,在安全的前提下提高效率。
UEAL第1届电子设计大赛第三轮单片机主观题
医院病床呼叫系统
摘要
本系统的主机与从机均以STM32RBT6为控制芯片,主从机间的有线通信使用MAX485,无线通信使用nRF24L01无线模块。主从机之间通过有线或无线的信息交互,最终实现一个主机和两个从机之间的呼叫与应答。
关键字:STM32RBT6 MAX485 nRF24L01
1系统方案
1.1 主控芯片的选择
方案一:选择MSP430f5529作为主控芯片,该型号单片机低功耗功能强大,基本满足本题目从机功耗5mA的要求。但是该单片机主频有限,可能会导致整个系统反应变慢,无法在极短时间内完成主机与从机之间的通信。假如传输语音信号,430单片机可能会出现问题。
方案二:选择STM32RBT6作为主控芯片,该单片机总线时钟可达72MHz,且引脚较多,易于扩展,速度快,符合系统控制要求,但是功耗较大。
综合考虑,我们选择方案二。
1.2 无线通信模块的论证与选择
方案一:使用FST-4模块,该模块成对使用,只能接收或者发送,传输距离远,但是信号传输不稳定,受外界干扰较大,假如在同一个空间之内有较多的电磁干扰,则接收的信号很容易出错。同时,使用该模块需要自行编写通信协议,比较繁琐。
方案二:使用蓝牙模块,该模块数据传输快速稳定,传输距离较远,但是蓝牙模块只能进行单对单的信息交互,无法实现多个从机与主机间的信息交互。
方案三:使用nRF24L01模块,该模块使用SPI通信,数据传输速度可达2Mbps,数据传输比较稳定,距离较远,抗干扰能力较强,并且该模块可支持主机与多个从机间的通信。
综合考虑,我们选择方案三。
1.3 有线通信模块的论证和选择
方案一:使用单片机自带的SCI模块通信,使用该方案的优势是使用方便,无需任何外设,但是由于输出功率限制,信号无法通过5米以上双芯线进行传递,更无法在实际病床呼叫系统中使用。
方案二:使用MAX485驱动芯片,驱动复杂,优点是使用差分线传输数据,所以可以使主从机间的有线通信距离加长,如果硬件处理得当,最远可以实现1.2Km的传输距离,同时连接32个驱动器和收发器。
综合考虑,我们选择方案二。
1.4 系统总体方案
系统实现框图如图1所示。
图1医院病床呼叫系统总体系统框图
系统总体方案及工作原理说明如下:从机通过无线模块nRF24L01或有线模块MAX485对主机进行呼叫,主机接收到后作出响应(蜂鸣器和LED灯),从机在确认主机已接受信号后,也作出同样的响应。主机根据接收到的信号以及接受的时间,对呼叫的从机进行排序,并在OLED上显示出来。
2 理论分析与设计
2.1 nRF24L01工作原理
发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
2.2 MAX485工作原理
MAX485工作在5V单电源下。采用单一电源+5 V工作,额定电流为300μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。
2.3组成方案
根据比赛要求,最终决定方案为:控制芯片采用STM32RBT6,有线通信部分使用MAX485芯片,无线通信部分使用nRF24L01模块,提示部分采用蜂鸣器。
3 电路与程序设计
3.1 电路设计
3.1.1 MAX485工作电路如图(1),供电以及使能部分使用5V电压
图(1)MAX485工作电路
3.1.2 nRF24L01模块工作电路如图(2)
图(2)nRF24L01模块工作电路
3.1.3主板工作电路及PCB如图(3)。
(a)电路原理图
(b)PCB版图
图(3)主板电路及PCB
3.2 程序结构与设计
程序流程图如图(4)所示。
4 测试方案与测试结果
测试结果分析:
当主机与从机间进行无线通信时,随着距离的增大或遮挡物的增多,出现错误的概率会增加,这是因为nRF24L01模块债这些情况下,传输数据的误码率会增大,造成结果的错误。
本项目设计的病床呼叫系统实现了一个主机和2个从机的互相应答,并能够分别实现有线和无线的双向通信,主机能够在极短的时间内回应从机的请求并做出指示,在安全的前提下提高效率。