arduino的测温系统设计

在如今智能化的时代,不同地方都需要运用到温度的采集。特别是在生活领域,当我们对温度进行实时检测时,我们可以针对不同的温度情况来做出相应的对策。以Arduino开发板为主要部分,蓝牙模块为通讯部分,TN9为温度检测模块,能够较为准确地感应温度。同时该系统设计能够将温度信息及时的传到APP上,以及显示在液晶LCD上。
目录
一、引言 1
(一)设计的必要性 1
(二)相关理论基础 1
二、系统结构 5
系统框架图 5
三、硬件设计 7
Arduino控制中心的设计 7
(一)TN9温度测温模块 7
(二)HC06蓝牙传输模块 10
(三)LCD1602液晶显示模块 12
(四)蜂鸣器报警模块 13
四、软件设计 15
(一)如何进行软件设计 15
(二)程序流程图 15
五、 实物实现与调试 20
(一)软硬件问题 20
(二)实物实现以及调试 21
六、结论 23
参考文献 24
致谢 25
附录 26
一、引言
(一)设计的必要性:
1.现在地球上已经有很多珍稀的动植物从地球上消失,所以对特定环境下的温度我们必须能够准确的测量,这对于科学家的研究是非常有帮助的。只有这样我们才有可能对我们当前所生活的环境有个更加感性的了解与认识。
2.现在的传统测温,尽管很便宜,但是它的精度却很低,而且需要很仔细才能读懂测量值。
3.我国在温度信息传输方面起步比较晚,和国外比较起来还是有相当大的差距,而国外在是温度湿度方面的研究已经达到了成熟的地步,当然国内也出现了丰富的数字传感器配套产品。
(二)相关理论基础:
1. SPI通信协议
SPI(serial peripheral interface):基于高速全双工, 采用主从模式(MasterSlave) 的控制 ,通过提供时钟CLOCK和片选来控制SLAVE(从设备)。
图11 主从设备示
 *好棒文|www.hbsrm.com +Q: ^351916072# 
图11所示,是SPI(serial peripheral interface) 设备间通信的一个描述。主设备通过片选线选到从设备,再通过控制线,然后发送控制信号,控制从设备的工作,其中 MISO(SLAVE输出,MASTER进入), MOSI(SLAVE进入 ,MASTER输出)。
Nss (slave select):为片选信号线。
SCK(serial clock):提供时钟信号,让主从设备协调收发数据。
SDO/MOSI(MASTERoutSLAVEin):作为数据的出口,从设备的入口,主要用于 SPI 设备发送数据。
SDI/MISO(MASTERinSLAVEout):作为数据的入口,主设备的出口,主要用于SPI 设备接收数据。
SSPSR:移位寄存器。
SSPBUF:寄存器,类比成PC里的内存。
当NSS片选使能时,SLAVE就开始工作,使能方法需要根据不同SPI 设备具体的使用手册,对nss给予高电平或者是低电平。这样就能使多个串行外设接口设备接在一条串行总线上。数据在传输过程种SCK/SCLK时钟线起到了至关重要的作用。
表12 SPI的四种MODE
CPOL
CPHA
第一位数据的输出
其它位的输出
数据采样
CPOL=0
CPHA=0
第一个SCK上升沿之前
SCK下降沿
SCK上升沿
CPOL=0
CPHA=1
第一个SCK上升沿
SCK上升沿
SCK下降沿
CPOL=1
CPHA=0
第一个SCK下降沿之前
SCK上升沿
SCK 下降沿
CPOL=1
CPHA=1
第一个SCK下降沿
SCK下降沿
SCK上升沿
如图表12所示SPI四种传输信号的MODE形式,如果CPOL(极性)=0 ,说明SCK空闲时,下拉为低电平,否则为高电平。
CPHA(相位)=0 ,说明在第一个边沿被采样,CPHA=1,说明在第二个边沿被采样。
不同的SPI设备它们的工作方式也不一样,主要是针对主控芯片的时钟定义不同,使得数据采样和输出的时间也不一样。
数据在经过MOSI输出时,数据根据不同的MODE形式,在上升沿或者下降沿数据采样,在接下来的时钟变化数据被传输。输送一位8字节的数据,要系统时钟的8次改变,每一次都将对应一次操作。
有一点需要说明,从设备是不能控制SCK信号线的。只能由主设备去控制。在一般的串行通信中最少需要传8个比特信息,SPI这种方式不一样在于SPI不仅能够使得数据按位传输,同时当主设备没有发出时钟信号的时候,从设备就停止工作。另外SPI的输入输出线是相互独立的,因此同一时刻就能完成信息的输入与输出操作,这也是所谓的全双工的体现。
例如:要发送10101010到从设备,首先应该写到主设备SSPBUF里面,假设上升沿发送数据,下降沿接收数据,首先高位会被SSPSR(移位寄存器)移出来,通过主设备的输出管脚移动到从设备的输入管脚,从设备的SSPSR会把1移动到从设备的SSPBUF里面,通过从设备的SDO口发送到主设备的SDI口,这样数据就变成0101010SDI,这样主从设备就完成了一位数据交换。
注意事项:在这里主设备是TN9红外测温,开发板才是从设备。因为TN9本身就提供了一个2KHZ的时钟信号,刚开始写程序的时候时钟信号被强行用I/O口改掉了,所以出来的数据就不正确。
2. 蓝牙(BLUETOOTH)技术
蓝牙模块也分主设备或者从设备,两个从设备是无法配对使用的,只有主从相配如手机和蓝牙。它同样也是采用全双工传输,是两个设备低速,快速传输的最好办法。因此系统设计采用的这种HC06蓝牙模块能够快速准确的将温度信息传送到手机APP上。
3. I2C技术
I2C协议是两条双向串行线,一条时钟线SCK,一条数据线SDA, LCD1602带I2C接口的模块可以为Arduino省下很多I/0接口。
二、系统结构
针对我国大部分病人无法实时照顾的问题,有两种方案可以实施,一种方案是将温度传感器的设备穿戴在人的身体上,再盖好被子,使温度传感器卡在两者之间通过检查被窝温度幅度的变化来判断被子是否离开了人,但是这种方案有缺点,首先放在两者之间容易不舒服,其次容易脱落,使用不便,人在睡觉时如果压住不能及时报警,所以这种方案不可取,但若使用非接触的温度传感器就可以解决上述问题,也就是Arduino开发板,上面安装台湾燃太公司的TN9,远距离扫描,通过程序判断,然后通过蓝牙模块传到手机APP上显示,病人也可以通过看LCD上的温度信息来判断是否需要盖被子。另外当温度超出固定温度时能让蜂鸣器发出声音报警,来提醒监护人。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/1381.html

好棒文