以STM32F103和无线模块nRF24L01为核心设计了低功耗的无线数据采集系统。本文主要介绍了无线通信技术、并给出了无线数据采集系统的组成,最后通过使用STM32芯片完成了采集节点、主控单元的硬件与软件设计,实现了数据的采集和无线传输。
一、行业背景
近年来,随着科学技术的飞速发展,尤其是通信技术、计算机技术和传感器技术的发展,特别是在传感器在信息技术领域内的广泛应用,从传感器和其它待测设备等模拟和数字被测单元中采集到的非电量或者电量信号怎样送到上位机中进行分析和处理就成为了一个难题。传统的有线传输方式的优点在于传输的质量比较可靠,实时性比较好,但是为数据采集而架设有线网络的一次性投资较大,而且遇到一些环境、地形复杂的地方将很难架设线路。而无线数据采集系统既具有有线方式的效率高,实时性好、成本低的优点,同时安装方便、可维护性好、易实现网络化管理。
所以,无线数据采集和传输就成了一个亟待解决的问题,并且它也代表着工业控制及现场监测等领域的一个发展方向。
二、系统总体设计
系统的结构框图如下图所示。STM32是本系统的主控芯片,负责控制整个系统的正常工作,通信模块采用nRF24L01。
(1)主控芯片
型号为:STM32F103ZET6,处理器的最高工作频率为72MHz,该芯片具有64KB SRAM、512KB FLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口、1个FSMC接口以及112个通用IO 口。
(2)无线模块
NRF24L01无线模块,采用的芯片是NRF24L01,该芯片的主要特点如下:
1)2.4G全球开放的ISM频段,免许可证使用。
2)最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。
3)125个可选的频道,满足多点通信和调频通信的需要。
4)内置CRC检错和点对多点的通信地址控制。
5)低工作电压(1.9~3.6V)。
6)可设置自动应答,确保数据可靠传输。
该芯片通过SPI与外部MCU通信,最大的SPI速度可以达到10Mhz。本章我们用到的模块是深圳云佳科技生产的NRF24L01,该模块已经被很多公司大量使用,成熟度和稳定性都是相当不错的。该模块的外形和引脚图如下所示:
模块VCC脚的电压范围为1.9~3.6V,建议不要超过3.6V,否则可能烧坏模块,一般用3.3V。电压比较合适。除了VCC和GND脚,其他引脚都可以和5V单片机的IO 口直连,正是因为其兼容5V单片机的IO,故使用上具有很大优势。
(3)液晶模块
本设计中的TFTLCD模块采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候如果用8位数据线,就会比16位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择16位的接口。
TFTLCD显示需要的相关设置步骤如下:
1)设置STM32与TFTLCD模块相连接的IO。
这一步,先将我们与TFTLCD模块相连的IO 口进行初始化,以便驱动LCD。
2)初始化TFTLCD模块。
其实这里就是上和上面OLED模块的初始化过程差不多。通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示。为后续显示字符和数字做准备。
3)通过函数将字符和数字显示到TFTLCD模块上。
三、系统软件设计
采集端一直处于上电状态,nRF24L01为接收模式;控制端上电后进行一系列的初始化,当向采集端发送一个采集数据的命令后,若采集端准确识别,则驱动相应的传感器进行数据采集,然后存储在存储器中,进而把采集后的数据通过无线模块发送给控制端,控制端正确识别后显示在TFTLCD屏上,并把数据上传到PC机中进行处理和保存,这样就完成一个数据采集的过程。
四、总结
搭建本系统的硬件电路其实比较简单,主要还是在软件程序设计上。STM32的开发一般可分为寄存器和固件库,由于本人刚自学STM32不久,所以在做这套系统时还是使用寄存器方法。而本系统在对STM32进行初始化(配置IO口等)后,最重要是熟悉无线模块的读写时序,这些只要仔细研读芯片的手册就可以清楚了解,所以本人就不多讲了。另外一个难点就是主从机的状态变化,这也体现了STM32的高速特性。最后,LCD显示屏的操作主要还是跟点阵类似,只是必须熟悉TFTLCD的IO口配置。
附:具体代码需要的话可以私下跟本人要!!不过只是供大家参考,想要真正学习STM32的还是需要自己动手实践的。本人现在也仍在不断地学习中,固件库的学习也开始一段时间了,希望能得到各位高手的指点,也希望以后能和大家多交流交流
|