基于单片机的PM2.5检测系统设计
摘要 本论文设计实现PM2.5污染物监测分析系统。通过查阅国内外文献资料,了解了国内外对于PM2.5污染物防治政策与各种方法,明晰了国内外在大气污染治理方面的总体局势又学习了这些文献中的先进技术。依据国内外大气污染治理的经验,结合我国目前PM2.5防治的现状,设计并最终实现PM2.5污染物监测分析系统。
[关键词]STM32 机车排放 微颗粒检测
1 系统结构设计
本系统硬件系统采用了STM32F103RCT6为核心,所以首先能够保证低功耗,低价格。而且由于STM32十分强大,在实时性上有着突出的优势,因此在对PM2.5数据的处理和显示上能够做到很好的实时性。此外,STM32输出稳定,抗干扰能力强,其工业级版本能够在十分恶劣的环境下正常工作,因此它作为产品拥有较好的市场竞争力。
在单片机程序编写中,采用了平均值滤波。在保证对环境变化快速响应的基础上,排出了外界偶然因素的干扰。使PM2.5和PM10数据输出稳定可靠,不会发生断层式剧变,其响应曲线平滑,十分接近现实情况。程序经过不断的调试和优化,最后具有很高的执行效率,既节约了CPU资源,又能使程序快速稳定的运行,得到想要的结果。例如,TFT屏的局部画屏更新数据、PM数值从高数位到低数位的判断、中断的应用和锁的应用、合理的程序时序逻辑和控制逻辑都为程序的快速运行做出巨大贡献。
2 各模块设计
2.1 控制器模块设计
本硬件系统使用了STM32F103RCT6为核心控制器,它以ARM Cortex-M3内核,为32位MCU,属于STM32系列中的增强型系列。拥有高速的工作频率为72MHz,大容量存储为RAM容量48K,程序存储器容量为256K (Flash),且采用64-LQFP封装。STM32F103RCT6还有着丰富的外设资源:4个16位普通定时器,2个16位高级定时器,2个16位基本定时器;这些定时器可用于精准延时、定时、产生PWM波以及根据不同的触发信号产生中断。3个SPI interface,2个I2C interface,3个通用同步异步收发器(USART),2个通用异步收发器(UART),1个USB interface,1个CAN interface; 这些通信方式更有利于STM32的开发与其他设备的互联。1个SDIO interface,3个12位的ADC(且含有16个通道),2个12位的DAC;模数转换为模拟信号和数字信号的采集、处理、输出提供了极大的便捷。多达51个I/O引脚用于开发,可以与外部设备相连,产生高低电平信号或者PWM波等实用功能满足项目需求。
2.2 无线传输模块设计
NRF24L01是一款单片无线收发器芯片,它工作在2.4-2.5GHZ世界通用ISM频段。它主要由功率放大器、频率发生器、晶体振荡器、增强型模式控制器、调制器以及解调器构成。在它的SPI接口能够设置传输协议、频道选择以及输出功率。
NRF24L01采用了内置的硬件链路层,拥有自动应答及自动重发功能,真正的GFSK单片式收发芯片,拥有Shock Burst增强型功能。地址及CRC检验功能,SPI接口速率选择范围广:0-8MBPS,无线速率:1或2MBPS,很短的频道切换时间,可用于调频,125个可选工作频道,20脚QFN 4*4mm封装,与NRF 24XX系列完全兼容,10可接受5V电平的输入,较低工作电压:1.9-3.6V,极低成本晶振,使用低成本电感和双面PCB板。
2.3 传感器模块设计
本系统采用的PM2.5传感器SDS011采用激光散射来检测PM2.5和PM10的实时数据。通过引脚进行数据包的输出。进行了PM2.5数据包的接收之后,要进行数据的处理,所以这里设计了compute(uint16 t *shuzu)函数来对接收到的4个字节的PM数据包进行处理。这里首先是将接收到的数组传递给compute(uint16t *shuzu)函数,然后用变量high2和low2去接收PM2.5的高字节和低字节,同理,highl0和lowl0来接收PM10的高字节和低字节。
这里值得一提的是,本系统用到了平均值滤波,因为考虑到在实际的测量当中,SDS011很可能会出现因为某些突发因素(比如刮来一阵风沙)而导致PM数值断层式剧增,而这显然不是真正的此地区PM数值,因此特意设置了大小为5的数组,每当有新数据加入就会更新这个数组,然后取平均值,这样得到的数据十分稳定。如果将这个PM2.5和PM10的曲线画出,也应该是平稳的,而不是有断层的剧增。
2.4 TFT显示屏设计
本系统采用的是1.44寸TFT屏对下位机处理输出的PM2.5和PM10的值进行实时显示。这块TFT屏既能用SPI引脚驱动,也可以用普通的GPIO脚来模拟SPI进行驱动。最少可以使用4个引脚就对TFT屏进行驱动。本驱动屏采用ST7735作为驱动芯片,既能够显示文字,也能够显示彩色图片。背光模式采用白色的LED。分辨率为128*RGB*128,也就是说每行每列各有128个像素点能够进行显示。
在对TFT驱动编程里,首先就是对LCD进行初始化,通过向驱动芯片ST7735写入命令字,从而控制LCD屏的显示。然后,就是显示我们所需要的内容,这里显示“PM2.5实时检测”,最后是并排的两列实时数据分别在“PM2.5=”和“PM10=”之后显示。而这里涉及到了一个关键问题,那就是如何显示汉字。这里用到了一个字符取模软件,通过它就能够方便的将汉字转换成十六进制的数组进行显示了。
3 结束语
本论文完成了硬件系统的设计,包括PM2.5传感器、TFT屏、2.4G无线传输模块NRF24L01+的驱动编写与硬件连接。对硬件系统的核心STM32F103RCT6进行下位机编程,构造了下位机的PM2.5检测系统。能够将PM2.5传感器检测到的PM2.5和PM10实时显示在TFT屏上,与此同时通过NRF24L01+传送给与PC相连接的其他NRF无线设备。
参考文献
[1]北京市环保局.2015年空气质量报告[R].北京:北京市環保局网站,201 5.
[2]刘火良,杨森.STM32库开发实战指南[M],北京:机械工业出版社,201 3.
[3]蒙博宇.STM32自学笔记第二版[M].北京:北京航空航天大学出版社,2014.
推荐访问: 单片机 检测系统 设计 PM2