【《基于stm32的甲醛检测装置设计》13000字】_第1页
【《基于stm32的甲醛检测装置设计》13000字】_第2页
【《基于stm32的甲醛检测装置设计》13000字】_第3页
【《基于stm32的甲醛检测装置设计》13000字】_第4页
【《基于stm32的甲醛检测装置设计》13000字】_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于stm32的甲醛检测装置设计摘要随着我国经济的飞速发展,人们生活水平不断提高,房屋装修风格越来越多变,建筑和装修材料的种类越来越多,而与此同时带来的装修污染问题随之凸显。对于装修带来的空气污染物,人们最关心的莫过于甲醛超标问题。从二十一世纪初开始,注重居住环境健康的人们就开始采用各种方式降低甲醛污染,而检测甲醛浓度的手段和方法也在不断升级。本课题基于stm32单片机平台,整合甲醛传感器模块、蓝牙模块、显示器模块、ADC模块等硬件设施,然后采用Keil编程软件进行单片机程序编写,AppInventor平台开发Android手机端配套软件,通过从硬件到软件的整体协同开发,设计制作了一款可以与手机等智能终端互联的低成本、易操作、低功耗、高精度的甲醛检测装置。关键词:甲醛检测;stm32;传感器;蓝牙;keil;Android目录引言 引言人们都说二十一世纪是飞速发展的信息化时代,计算机科学技术和各种电气化的设备广泛地影响着每个人的生活节奏和生活方式。二十一世纪初的我还在蹒跚学步,当时的计算机运算速度还不及今天的智能手机。随着年龄的增长,我们这一代人可以说是见证了计算机技术在中国的高速进化,因此我也在选择大学专业时选择了电气工程与智能控制专业,希望学习电气自动化和计算机的相关知识,并应用这些专业知识该表人们的生活方式和态度,推动生活中相关设备的智能化。本课题选取了现代生活中尤为突出的甲醛超标问题,通过对单片机技术、传感器检测技术和Android设备App的开发,旨在解决当前甲醛检测设备昂贵、检测步骤复杂、检测周期较长的问题,方便人们在新房装修等场景中以较低的成本、较短的时间、较高的精度获得定量的甲醛浓度数据,以此针对性地提升居住环境指标。1.绪论1.1课题研究背景随着人们生活水平的提高,房屋装修风格越来越多变,建筑和装修材料的种类越来越多,而与此同时带来的装修污染问题随之凸显。其中,甲醛、苯、氨气、氡气、TVOC(总挥发性有机物)等指标是室内空气污染的重要指标,一旦人体长期处于超标环境,将对身体健康造成严重的影响。世界卫生组织相关资料显示:全球每年因室内空气污染而死亡的人数高达280万,我国每年因室内空气污染引起的死亡人数达11.1万,门急诊接诊数量达到450万次左右。因此,越来越多的人开始关心室内污染物的指标是否达到可以入住的标准,而甲醛由于普遍且大量存在于常规装修材料中,首当其冲,是人们的重点关注对象。1.2甲醛的来源甲醛,化学式为HCHO,又被称为蚁醛,是一种无色的有刺激性气味的气体,是一种原生毒素,会对眼睛和黏膜产生刺激作用。1859年,俄国科学家首次发现甲醛。1867年,德国科学家奥格斯特·威廉·冯·霍夫曼借助铂催化剂在空气氧化甲醇中制得甲醛,并由此确定了甲醛气体的化学特性。甲醛易溶于水和乙醇,我们常见的福尔马林就是甲醛含量在35%到40%之间的水溶液。此外,甲醛不仅具有有效的消毒杀菌能力,同样也是生产树脂粘合剂的重要原料,因此也被广泛地用于家装材料中,起到加固和防腐的作用。在家庭环境中。甲醛主要来自于墙面涂料、木地板、家具、玻璃胶等,涂料中大量的粘合剂在起效过程中会释放大量的甲醛,非实木地板和家具由于在制造过程中不可避免使用粘合剂同样会释放甲醛,玻璃胶则在使用过程中由于需要加热更容易释放甲醛。1.3甲醛的危害2017年10月27日,甲醛被世界卫生组织列入一类致癌物质清单。短时间处于高浓度甲醛环境,可导致呼吸道激惹症状、支气管哮喘等,严重时可能会引起消化道灼伤、全身中毒、皮肤坏死等症状,威胁人体生命安全。长时间暴露于甲醛含量超标的环境中,可能会对呼吸系统、神经系统和免疫系统功能产生影响,甚至对心脑血管和内分泌系统等造成毒性作用,导致人体出现头痛、乏力、失眠、精神紊乱等症状,研究表明,长此以往可能会导致癌症发病风险升高。1.4甲醛检测需求我国颁布的《住宅设计规范》(GB50096-2011)中明确规定:住宅内空气污染物中,游离甲醛浓度应小于等于0.08毫克/立方米。《室内空气质量标准》(GB/T18883-2002)中,一小时内甲醛浓度均值应小于0.10毫克/立方米。随着人们生活质量的不断提高,住房条件不断改善,对于家庭的装修风格要求也在不断增加,各种装修材料在使用过程中难免会释放出甲醛。基于人们对自身和家人的健康需求,新房装修完成后,斥巨资购买各种除甲醛设备,通风半年再入住的新闻也屡见不鲜。然而事实上,在使用所谓有效的除甲醛方法后,人们很难凭借主观感受来判断甲醛含量是否达到可以安全入住的标准,这也导致了一些人在良好通风的房屋内仍因甲醛超标引起身体反应。越来越多的人开始关注室内环境监测,在活性炭吸附、光催化、植物吸收等各种方法实施后,衡量室内空气质量是否达标最重要的一项指标之一就是甲醛的浓度。目前,主流的甲醛检测方法可分为分光比色法、气相色谱法、气体传感器,检测装置主要有甲醛自测盒、甲醛检测仪、CMA专业检测。2.甲醛检测装置概述2.1检测原理甲醛自测盒,可以定性检测甲醛浓度是否超标,成本低,检测时间较短,缺点是不能定量检测,只能用于大致参考,并且受外界干扰严重。检测原理是分光比色法,用酚试剂吸收空气中的甲醛后,试纸会根据甲醛浓度高低生成不同的颜色,通过与色卡进行比对得到大致的浓度数值,并判断是否超标。甲醛检测仪,可以定量检测甲醛浓度,并对其是否超标进行定量分析,成本较高,精度较高,检测时间短,受外界干扰较小。检测原理一般是采用气体传感器,主要有半导体气体传感器、电化学传感器等,通过传感器将气体浓度转化为电信号并进行数据采集和分析。CMA专业检测,可以精确检测建筑环境中甲醛含量,并出具具有法律效应的检测报告,检测步骤繁琐,需要使用专业设备采集气体并在实验室进行分析,成本高昂,检测周期长,主要面对建筑公司、企业等。因此,根据大多数人对检测结果、检测时间和检测成本的要求,在这个课题中我们主要围绕甲醛检测仪进行研究。2.2甲醛检测仪市场产品美国哈希HACHDR1900便携式分光光度仪,长度接近30cm,整机质量1.5kg,价格在2.5万人民币左右。虽然价格高昂,但是它具有严谨的测量流程,准确的测量结果。国产元特SKY8000气体分析仪,长宽高超过20cm,主机重量达到3.7kg,便携性差。检测原理为电化学传感器,可以显示数据、曲线等信息并储存数据。检测原理为电化学传感器。单甲醛模块定制价格就达到了7280元,昂贵的价格带来的精度是0.1ppm。英国PPM-HTV甲醛检测分析仪,体积仅手机大小,质量为270g,属于便携设备范畴。检测原理同样为电化学传感器,但由于具有湿度补偿功能,在采样环境较稳定的情况下,可以达到0.01ppm。并且可以选配计算机遥控软件及适配器,通过计算机显示数据。主机价格在1.2~1.5万元左右,产品整体竞争力较强。2.3硬件平台低功耗场景的硬件平台,一般采用的是微控制器,又称MCU,也叫单片机,可以视作将中央处理器(CPU)的频率、规格等技术参数适当缩减,然后集成A/D转换、USART、闪存(flash)、内存(memory)、计数器(Timer)、DMA、IO口等接口,方便开发者开发应用程序,适用于各种控制场合,如遥控器、汽车工业、电机控制、机器臂控制等。全球范围内有多家大型的MCU单片机制造公司,如意法半导体、Renesas、英飞凌、德州仪器、恩智浦、微芯科技、赛普拉斯、三星、东芝等。意法半导体(ST)集团成立于1987年,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。意法半导体微控制器拥有强大的产品阵容,从低功耗8位单片机STM8系列,到基于ARM®Cortex®-M0和M0+、Cortex®-M3、Cortex®-M4、Cortex®-M7内核的STM32系列,为开发人员开发嵌入式产品提供了丰富的资源。ST是从基准设计、应用软件、制造工具、规格到各种源二极管、晶体管和复杂系统芯片(SoC)设备,拥有业界最广泛的半导体产品线之一。ST是各种产业领域的主要供应商,包括高级技术、知识产权资源、世界级制造工艺等。另一方面,ST扩大了包含超低功耗的单芯片系列产品的生产线。RENESAS,在2003年4月1日由日立半导体和三菱电机半导体合并成立。它结合了日立与三菱在半导体领域的技术经验,是无线网络、汽车、消费与工业市场设计制造嵌入式半导体的全球领先供应商。它获得了ARM的授权用于处理器的开发,但是MCU都是用瑞萨自己的架构。英飞凌成立于1999年的德国,其前身是西门子集团的半导体部门。英飞凌是世界领先的半导体公司之一,2020年入选全球汽车零部件百强企业。它的8位单片机即使在严酷的使用环境中也能拥有高可靠性的高性能控制能力。其8位单片机主要有XC800系列、XC886系列、XC888系列等。它的mcu主要被用于汽车和工业中,消费者业务较少。德州仪器是世界上为数不多的模拟和数字半导体IC设计和制造企业之一。它不仅提供模拟技术和数字信号处理,而且涉足微控制器领域。其最具代表性的piccolo系列32位微控制器推出了C2000和F28x系列微处理器。针对不同领域,德州仪器公司推出了许多系列产品,产品线广泛。恩智浦成立于2006年,前身是荷兰飞利浦公司于1953年成立的半导体事业部。2015年,恩智浦半导体收购摩托罗拉成立的飞思卡尔半导体,成为全球非存储半导体十强企业和全球最大的汽车半导体供应商。NXP的MCU基于80C51核,内置功率检测、仿真、片内RC振荡器等功能,集成度高、成本低、功耗低等优点让它在许多应用设计中大放异彩。微芯科技成立于1989年,是全球领先的微控制器和模拟半导体供应商。它的拳头产品是Microchip(微芯)微控制器,市场份额增速最快。其主要产品是16C系列8位微控制器,它的CPU采用RISC架构,指令精简,运行速度快,且价格低廉。三星电子,三星集团最大的子公司,成立于1969年1月,是韩国最大的电子工业企业。它的单片机产品非常丰富,包括4位单片机如KS51、KS57系列,8位单片机如KS86、KS88系列,16位单片机有KS17系列,还有KS32系列32位单片机。三星的单片机技术主要来自于收购,将不同公司的优势单片机技术用于自家产品。此外,三星的单片机的价格相较于同级别厂商的竞品具有优势。东芝,成立于1875年7月,于1939年将东京电气株式协会和芝浦制作所合并。东芝的单片机产品门类齐全,从4位单片机到64位单片机都有它的产品线。在家电行业,东芝的4位单片机仍占据较大的市场份额。它生产的8位单片机可以使用低速模式,采用32K时钟时功耗低至10uA数量级。由于CPU内部使用了多组寄存器,使得产品的中断响应速度与处理速度更快。东芝生产的32位单片机采用MIPS3000ARISC的CPU结构,在数字相机、图像处理、VCD等领域占据较大份额。2.4检测模式3.stm32的甲醛检测装置需求分析3.1功能分析该检测装置被要求在稳定的温湿度环境下连续、快速地测量空气中甲醛气体的浓度,并显示在显示屏上。同时,如果存在智能设备通过蓝牙连接,则需要同时向智能手机传输浓度数据,并且实现浓度数据储存、实时波形图绘制等功能。3.2装置体积该检测装置体积应接近或小于一台智能手机的大小,便于使用者手持与携带。未来继续开发同类无屏检测装置时,体积应小于香烟盒大小。3.3功耗需求工作时功耗应小于2.5w,最小供电5v0.5A即可驱动装置,以便在加装锂电池后拥有良好的续航能力。3.4性能要求处理器性能应足以支撑数据采集、AD转换、数据处理、蓝牙数据接发和屏幕显示功能。传感器应满足体积小、稳定性好、精度高的气敏传感器。4.基于stm32的甲醛检测装置硬件设计4.1硬件框图Stm32开发板对外供5v电压,驱动显示屏模块、蓝牙模块和传感器模块。传感器模块经过预热后,输出电压信号值,并根据甲醛浓度不同不断变化输出不同的电压值,由开发板的ad转换模块转化为数字量,并用预先设定的拟合函数将数字量转化为甲醛浓度值。若蓝牙模块已连接,则向上位机发送浓度值字符串。4.2芯片平台芯片平台采用ST(意法半导体)公司生产的STM32微控制器,它使用ARM的高性能32位RISC内核,不仅拥有丰富的GPIO引脚、大容量内存和闪存,而且具备多类型通信接口和外设。,STM32微控制器具有多种规格的型号供开发者选择,开发者可以根据实际应用选择合适的微控制器型号,满足设计功能需求。作为最新一代的嵌入式ARM处理器,STM32F103系列微控制器是首款基于ARMv7-M体系结构的32位标准RISC(精简指令集)处理器,它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供了卓越的计算性能和先进的中断响应系统①②③④。芯片具体规格选择了Stm32f103vet6微控制器,芯片引脚为100,拥有512k大闪存,64kSARM,并使用LQFP封装,流入或流出的VDD电流之和小于150mA,输出下沉电流小于25mA。注入电流之和小于25mA,并且拥有睡眠、停机和待机等低功耗模式,在32位微处理器中的功耗表现相当出色。同时它拥有两个12位模数转换器,且转换时间仅需1us;也可以通过7通道DMA读取ADC、定时器、SPI、I2C和USART的数据。此外,80个IO口、7个定时器、9个通信接口让该芯片的功能扩展能力极为出色。零下40℃到零上105℃的工作温度范围,让它被普遍应用于电机控制驱动、医疗和手持设备、可编程控制器、变频器、打印机、扫描仪、安防设备、智能家居等场合。(管脚图)4.3甲醛传感器模块气体传感器的原理是将气体在元器件表面的物理和化学反应产生的变化转化为电信号、光信号等表现形式,以此来实现对气体浓度测量。传感器最重要的部分是气敏材料,不同的气敏材料通过特殊的工艺覆盖于器件表面,可以在不同的气体环境中表现出不同的伏安特性、电导率等。通过对器件的物理和化学特性进行分析和测试,人们就可以用封装了该器件的传感器检测不同的气体成分和气体浓度。第一代ZnO基半导体气体传感器于20世纪60年代问世,相比于其他气体传感器制作成本高昂、制造工艺要求精密、灵敏度较低的缺点,半导体传感器的出现迅速地取代了传统传感器,成为研究和开发中最常用的气敏传感器之一。根据感应原理,半导体气敏传感器又可以分为电阻式和非电阻式传感器。本课题选用的传感器是电阻式传感器,它的电阻值在稳定状态下会随气体浓度的变化而线性变化。甲醛检测采用半导体传感器,使用具有特殊涂层的半导体器件检测空气中的甲醛。当被测空气中含有甲醛时,甲醛通过空气流动扩散到传感器表面引起半导体器件的电阻变化,通过分析和处理标准工况下的输出电压和甲醛浓度的关系,可以得到拟合曲线。在使用过程中,确定输出电压的值,就可以确定甲醛的浓度。该传感器具有体积小、制造成本低、高灵敏度、高分辨率、低功耗等优点,可广泛用于室内甲醛检测。该传感器可以输出模拟电压,将其接入STM32微控制器的A/D转换接口后即可通过软件程序处理得到甲醛浓度数值。(替代品图,MQ-135空气质量传感器)甲醛传感器模块和STM32开发板的连接电路(图)4.5蓝牙模块原理图引脚介绍蓝牙模块选用HC05,是一款主从一体的蓝牙模块,连接到单片机的串口,使单片机可以通过蓝牙与其他设备进行通信,被广泛应用于智能家居、远程控制、安防系统、机器人控制等领域。在蓝牙配对完成后,开发者可以无视蓝牙传输协议,直接将其当成串口连接的纽带,直观地进行应用开发。引脚分别为VCC、GND、TXD、RXD、KEY和INT,通过蓝色led灯显示蓝牙状态。它的长宽高分别为28mm、15mm、2.35mm,工作电压位3.3v,工作电流30mA,符合设计需求。4.5显示器模块ILI9341控制的3.2寸电阻触摸屏,分辨率为320*240ppi,引脚数量为40pin。(原理图)5.基于stm32的甲醛检测装置软件设计5.1设计要求单片机端实现浓度检测、数值显示和蓝牙状态显示功能实现手机App通过蓝牙与开发板的连接实时接收并同步显示浓度数值记录浓度数值并进行波形图绘制未来能依托智能手机平台扩展更多功能5.2单片机端软件设计编程软件KeilMDK,又称MDK-ARM,能完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,采用行业领先的ARMC/C++编译工具链,并且符合CMSIS标准。根据大学期间学习的C语言基础可以很快上手,并且可以在软件内完成程序编译、封装和烧录功能。使用C语言编写的任务处理函数和各类参数,程序可读性高,易于移植和改进,编程效率也可以获得大幅提高,同时也增加了程序的运行效率,提升单片机处理速度。并且,开发周期短,易于调试及维护。Io分配(图)主程序#include"stm32f10x.h"#include"./adc/bsp_adc.h"#include"./usart/bsp_usart.h" #include"./usart/bsp_usart_blt.h"#include"./systick/bsp_SysTick.h"#include"./lcd/bsp_ili9341_lcd.h"#include"./flash/bsp_spi_flash.h"#include"./led/bsp_led.h"#include"./key/bsp_key.h"#include"./hc05/bsp_hc05.h"#include<stdio.h>#include<string.h>#include<stdlib.h>以上头文件包含所需要的库文件,包括adc模块,串口模块,时钟模块,显示屏模块,闪存模块,led指示灯模块,按键检测模块和蓝牙模块等。unsignedintTask_Delay[NumOfTask];BLTDevbltDevList;staticvoidLCD_Start(void); staticvoidLCD_Test(void); staticvoidDelay(__IOuint32_tnCount);charsendData[1024];charlinebuff[1024];voidPrintf_Charater(void);将ADC端口转换得到的电压值通过MDA方式传到SRAM。extern__IOuint16_tADC_ConvertedValue;定义局部变量,用以保存转换计算后的电压值。floatADC_ConvertedValueLocal,HCHO,x;定义函数名、浓度值变量和中间变量。首先显示起始界面,函数为LCD_start,要求用户等待相应的预热时间,预热传感器。主要代码:intmain(void){ 此处省略部分代码 SysTick_Init(); SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; USART_Config(); LED_GPIO_Config(); Key_GPIO_Config(); ILI9341_Init(); ADCx_Init(); ILI9341_GramScan(6); Printf_Charater();调用显示开始界面的函数LCD_start(); HC05_INFO("**********HC05模块************"); if(HC05_Init()==0) HC05_INFO("HC05模块检测正常。"); else { HC05_ERROR("HC05模块检测不正常,请检查模块与开发板的连接,然后复位开发板重新测试。"); while(1); }以下代码用于复位 HC05_Send_CMD("AT+RESET\r\n",1); delay_ms(800); HC05_Send_CMD("AT+ORGL\r\n",1); delay_ms(200); 初始化蓝牙SPP串口传输规范 HC05_Send_CMD("AT+INIT\r\n",1); HC05_Send_CMD("AT+CLASS=0\r\n",1); HC05_Send_CMD("AT+INQM=1,9,48\r\n",1); 将蓝牙模块名字设置为HC_05_role sprintf(hc05_nameCMD,"AT+NAME=%s\r\n",hc05_name); HC05_Send_CMD(hc05_nameCMD,1); HC05_INFO("本模块名字为:%s,模块已准备就绪。",hc05_name); 并在同时将蓝牙模块设置为从模式,可以由手机主动连接单片机的蓝牙模块。 while(1) { //搜索蓝牙模块,并进行连接 if(Task_Delay[2]==0&&!IS_HC05_CONNECTED()) { if(hc05_role==1) //主模式 { HC05_INFO("正在扫描蓝牙设备..."); linkHC05(); Task_Delay[2]=3000; } else //从模式 { HC05_Send_CMD("AT+INQ\r\n",1);//模块在查询状态,才能容易被其它设备搜索到 delay_ms(1000); HC05_Send_CMD("AT+INQC\r\n",1);//中断查询,防止查询的结果干扰串口透传的接收 Task_Delay[2]=2000;//此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是2s }预热时间达到要求后后进入循环测量模式,函数为LCD_test,每秒钟测量一次数据,并且显示在显示屏上,同时如果蓝牙设备已连接则同时通过蓝牙串口向手机App传输浓度数据字符串。//连接后每隔一段时间检查接收缓冲区 if(Task_Delay[0]==0&&IS_HC05_CONNECTED()) { uint16_tlinelen; 获取数据相关代码 redata=get_rebuff(&len); linelen=get_line(linebuff,redata,len); 检查数据是否有更新的主要代码 if(linelen<200&&linelen!=0) { if(strcmp(redata,"AT+LED1=ON")==0) { LED1_ON; HC05_SendString("+LED1:ON\r\nOK\r\n"); } elseif(strcmp(redata,"AT+LED1=OFF")==0) { LED1_OFF; HC05_SendString("+LED1:OFF\r\nOK\r\n"); } else { HC05_INFO("receive:\r\n%s",redata); } /*处理数据后,清空接收蓝牙模块数据的缓冲区*/ clean_rebuff(); } Task_Delay[0]=500;//此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是500ms } //连接后每隔一段时间通过蓝牙模块发送字符串 if(Task_Delay[1]==0&&IS_HC05_CONNECTED()) { staticuint8_ttestdata=0; LCD_Test(); sprintf(sendData,"<%s>senddatatest,testdata=%f\r\n",hc05_name,HCHO); HC05_SendString(sendData); Task_Delay[1]=1000;//执行周期1秒 } 此处省略不重要代码 }}显示模块由于该显示屏自带ILI9341控制器,只需要在显示模块的程序中调用相应的函数即可。voidLCD_Test(void){此处省略部分代码 LCD_SetFont(&Font8x16); LCD_SetColors(RED,WHITE); ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); sprintf(dispBuff1,"甲醛浓度值:按键开始检测");LCD_ClearLine(LINE(5)); /*清除单行文字*/ ILI9341_DispStringLine_EN_CH(LINE(5),dispBuff1); sprintf(dispBuff1,"当前电压值:按键开始检测");LCD_ClearLine(LINE(6)); /*清除单行文字*/ ILI9341_DispStringLine_EN_CH(LINE(6),dispBuff1); sprintf(dispBuff1,"按键后请耐心等待");LCD_ClearLine(LINE(7)); /*清除单行文字*/ ILI9341_DispStringLine_EN_CH(LINE(7),dispBuff1); ILI9341_DispStringLine_EN_CH(LINE(6),dispBuff);sprintf(dispBuff,"其他数据:%.2f",ADC_ConvertedValueLocal);LCD_ClearLine(LINE(7)); /*清除单行文字*/ ILI9341_DispStringLine_EN_CH(LINE(7),dispBuff); LCD_SetTextColor(GREEN); LCD_SetFont(&Font8x16); pStr="甲醛检测仪"; sprintf(dispBuff,"%*c%s",(LCD_X_LENGTH/(WIDTH_CH_CHAR/2)-strlen(pStr))/2,'',pStr); LCD_ClearLine(LINE(15)); ILI9341_DispStringLine_EN_CH(LINE(15),dispBuff); //显示格式化后的字符串 pStr="HCHOtest"; sprintf(dispBuff,"%*c%s",(LCD_X_LENGTH/(WIDTH_CH_CHAR/2)-strlen(pStr))/2,'',pStr); LCD_ClearLine(LINE(16)); ILI9341_DispStringLine_EN_CH(LINE(16),dispBuff); Delay(0xffffff);}检测模块根据传感器模块的特性,使用开发板的3.3v供电,传感器的数字量输出端口会输出相应的电压值,接入开发板的adc端口。单片机首先使用adc转换获得数字量的电压值,并将电压值赋值给中间变量xADC_ConvertedValueLocal=(float)ADC_ConvertedValue/4096*3.3; x=ADC_ConvertedValueLocal;然后将x代入电压与浓度对应的拟合函数,计算浓度值 HCHO=1180*x*x*x-1634*x*x+806*x-90;//拟合函数最后输出浓度信息 printf("\r\nTheHCHOvalue=%fppm\r\n",HCHO);*注:此处拟合函数仅做演示用,不代表最终的数据比对方法,需根据甲醛传感器实验结果进行调整。一般来说,半导体式传感器的电阻变化率可以与气体浓度值构成近似的线性关系,通过大量数据的拟合,即可获得相应的拟合函数。蓝牙模块根据hc05蓝牙模块和开发板的连接方式,配置开发板的驱动函数。主要代码如下:首先定义发送字节的函数staticvoidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch) 发送一个字节数据到USART1 USART_SendData(pUSARTx,ch); 等待发送完毕 while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET); }然后定义发送指定长度的字符串的函数voidUsart_SendStr_length(USART_TypeDef*pUSARTx,uint8_t*str,uint32_tstrlen)最后定义发送字符串函数voidUsart_SendString(USART_TypeDef*pUSARTx,uint8_t*str)中断缓存串口数据#defineUART_BUFF_SIZE1024volatileuint16_tuart_p=0;uint8_tuart_buff[UART_BUFF_SIZE];程序烧录程序的烧录使用DAP高速下载器,首先要用USB-typeAtoB的数据线将下载器连接到电脑USB端口,待仿真器的灯亮,则表示可以正常使用。然后将高速下载器的另外一端连接开发板相应接口(有防反接设计),同时使用miniUSB数据线给开发板供电,此时电脑上会显示有可用设备,并自动安装驱动。第二次连接及以后则不需要等待驱动安装,可直接识别。连接电脑并识别成功后,我们就可以通过KEIL软件给开发板烧录程序了。在下载器稳定连接电脑,并且开发板供电正常的情况下,打开KEIL,在魔术棒选项卡里面选择高速下载器的型号。(图图图)选择目标板,由于我选用的开发板芯片采用的是STM32F103VET6,所以选512K。接下去就是将编译通过的程序下载到开发板上,并进行调试。下载的过程中不需要额外的软件,直接点击KEIL中的Load按钮即可。程序下载步骤完成后后,窗口下方的BuildOutput选项卡如果输出Applicationrunning字样则代表程序下载成功。5.3手机端软件设计编程软件一般来说,Android设备的应用程序会使用Java语言开发。本专业课程学习的编程语言主要是C语言。因此,在开发手机端App的编程软件上,我选择了GoogleAppInventor。它的优点是使用者只需要理解一定的编程知识,即可快速搭建所需要的应用程序。它是一个完全在线开发的Android编程环境,使用积木式的堆叠法来完成软件开发。2012年1月1日,Google将AppInventor移交给MIT,并由后者维护运营。由于网络环境原因,本课题采用的编程软件是WxBit汉化版的AppInventor2,原理和内容与Google版通用,仅服务器设在国内,方便进行调试和下载。图标设计设计理念来源于该甲醛检测装置的实际用途,因其多用于家庭环境的空气污染监测,所以采用“绿色”的房屋图标,配合花朵图标,表达净化的含义。图标下部是App的用途和英文简称,简洁直观地向用户介绍这套软硬件系统的用途。主界面UI按钮设置在“开始检测”按钮被按下的情况下,“实时值”标签显示当前浓度值,并根据蓝牙数据不断变化,实时比对数据,根据浓度是否超标决定浓度数值的显示颜色,也可增加其他提示信息如浓度超标警告等。“开始检测”按钮按下后将变为不可用按钮,在按下“停止检测”按钮后“开始检测”按钮恢复使用。“断开连接”按钮之前显示蓝牙连接状态标签,仅在蓝牙连接状态下可以点击“断开连接”按钮。标签与按钮布局主要采用水平布局控件,将数据显示标签加粗、放大显示并与其他板块拉开距离,区别于其他标签,起到直观的提示作用。将同一操作逻辑层面的按钮放在相似的位置,同一功能的按钮放在同一水平布局控件内,不仅提高开发过程中的优化效率,同时提高人机交互的易操作性,方便用户快速学会使用App的功能。浓度数值显示当开始检测按钮按下后,首先启用计时器,延时与开发板设置一致,每隔1秒读取蓝牙接收到的数据,储存于数据库中,并与设定的浓度阈值进行比较,如超标则实时值显示红色文本信息,未超标则显示绿色文本信息。当按下停止检测按钮,数据停止接收,实时值标签停止更新。蓝牙模块蓝牙连接点击蓝牙列表,选择开发板蓝牙模块名称“HC-05”,稍等片刻,连接成功则状态标签会显示“蓝牙连接成功”,否则显示“蓝牙未连接”,并输出调试信息。连接成功之后,断开蓝牙按钮会被设置为可以点击。数据接收当计时器达到时间节点时,先进行判断是否接受到数据,若接收到数据则将蓝牙客户端接收到的数值与“ppm”进行合并,存于App内建的微数据库中,同时显示在屏幕第一行的相应位置。断开蓝牙点击断开蓝牙按钮,手机将断开与开发板蓝牙的连接,并终止数据的接收。计时器停止工作,同时蓝牙列表重新启用点击,可再次连接设备或更换连接设备。数据库程序中调用了AppInventor库中的微数据库,用于保存接受的数据,并可用于实时比较数值大小,以及更多待开发的智能功能。数据库中,每次检测的数值会根据检测的先后顺序依次赋予1-100的标签,每个标签对应一个检测数据。数据库会在点击开始检测时清空以便储存新的数据。也可以改成将数据库以文本形式储存后再清空,实现无限制的数据储存。6.检测装置单机运行6.1检测功能测试测试环境室内,温度27℃,湿度60%。测试内容对检测装置的供电、检测和显示模块进行功能测试,保证在实验环境中能够完整供电准确检测甲醛浓度,并且实时显示在lcd显示屏上。测试目的分析设计阶段提出的各种需求和想法,检查以确认系统是否满足设计要求。对硬件部分进行操作测试主要测试电路部分是否完整,同时检测装置的测量精度、测量值与标准数据的误差、电路系统的稳定性等。软件测试主要评价系统功能是否完善、数据吞吐量是否达标。测试结果测试过程中检测装置供电无故障,检测数据准确且及时地显示在显示屏上,每1秒更新一次数据,电压值与甲醛浓度根据拟合函数严格对应,未出现明显误差,符合设计要求。6.2稳定性测试测试方法检测过程中对检测装置进行震动、声光干扰、连续多次按键、哈气等行为,观察装置检测程序是否正常运行,数据是否正常显示且准确.测试结果检测装置具有良好地抗干扰能力,在复杂使用环境下程序正常运行,且能正常显示程序。但在环境温湿度明显改变(哈气)的情况下,检测数值会出现波动,说明传感器易受外部因素干扰,在后续开发过程中应注意对传感器的保护。6.3显示效果测试lcd显示屏能直观地显示甲醛浓度数值,且由于显示屏较大,还可以显示电压值、注意事项、关于装置等的信息,对用户体验非常友好.数值显示标签每1秒钟更新的数据显示及时准确,效果达到设计要求。6.4测试结论在单机运行测试中,实施了对该甲醛检测装置的基础硬件和软件功能的测试,硬件系统的性能和指标能够满足软件系统的运行,开发板对外供电稳定,并且在软硬件的协作运行下,adc模块采集数据及时且准确,显示屏的显示效果和稳定性都表现良好。该甲醛检测装置的基本功能完整实现,稳定性和准确性达到设计要求。7.检测装置与手机互联运行7.1装置蓝牙测试打开甲醛检测装置电源开关后,装置内的蓝牙模块会自动开启,并且可以被周围设备搜索到。蓝牙模块会慢闪蓝色指示灯,指示蓝牙待连接状态。当蓝牙成功连接后,蓝色指示灯变为慢速双闪,每隔固定时间快速闪两次,并且打开蓝牙串口传输。经过测试,装置蓝牙启动稳定,信号优秀,工作模式切换迅速,连接时指示状态稳定,不易断开连接,工作状态下几乎没有发热。7.2手机端蓝牙测试通过手机蓝牙设置与装置蓝牙模块进行配对,蓝牙配对迅速,且手机端正常显示蓝牙名称“HC05_SLAVE”,通过蓝牙串口App能成功连接并读取到数据信息。7.3数据传输和显示测试蓝牙连接成功后,按下开始检测按钮开始测试,测试过程中数据每秒更新一次,稳定传输未报错,根据Appinventor中显示的调试信息可以看到,数据从单片机到手机端完整且准确,与开发板显示屏数据相同。装置端的数据传输到手机端后,经过与浓度阈值的比对,未超标显示绿色数据,超标时显示红色数据,显示效果直观且出色,符合软硬件协同的设计要求。并且在按下停止检测按钮的同时,手机App立刻停止接收数据并停止更新,数据传输功能符合设计要求。(演示状态浓度仅供参考)8.总结8.1设计目标达成情况目前为止,基于stm32的甲醛检测装置的设计,很好地解决了便携性、成本、精度和设备互联的痛点,该设备能在稳定的温湿度环境下连续、快速地测量空气中甲醛气体的浓度,并在显示屏上直观地显示。使用智能设备通过蓝牙连接检测装置,则能在检测的同时向智能手机传输浓度数据,并且在智能手机App中实现浓度数据储存、(实时波形图绘制)等功能。8.2产品改进方向针对蓝牙数据显示不同步这个bug后期你在单片机程序和手机App程序里面增加对时语句,当单片机单机运行时,根据延时函数每五秒钟测试一次数据。而与手机App联机运行时,单片机测试数据应有手机段的延时函数来控制。可以设置手机App计时器每达到计时节点向单片机发送单字节“1”。单片机收到单字节以后开始运行测试程序,并显示数据,同时向手机App传送浓度数据.检测装置上的显示屏具有电阻触摸功能,而在设计过程中,我们仅使用了开发版上的物理按键,并没有使用触摸功能。考虑了用户习惯和和操作的直观性,后期改进方向应将物理按键变为虚拟按键,并内嵌在屏幕中。根据本课题对于甲醛检测装置的需求,成本控制上应尽量降低成本。在产品设计的过程中,由于考虑到易用性的问题,我们在单片机上加装了较大的LCD显示屏。在最后的设计过程中发现,如果需要做到一些比较智能的功能,比如说波形图或者是蓝牙传输,数据储存等,就需要在单片机上编写更多的代码,加装更多的模块,会显著的提升开发成本和制造成本。因此我们可以参考当前主流的智能家居设备厂商的做法,对于传感器功能的小电器采用小体积的设计,并且摈弃屏幕等耗电设备,采用电池供电,蓝牙或者zigbee网关传输,完全通过智能终端来进行数据的处理,储存和比对,并且可以通过升级手机App来进行功能的更新和拓展。与同类智能家居产品对比有屏幕的米家温湿度传感器:纽扣电池供电,通过温湿度传感器定量测试环境温湿度,采用电子墨水屏显示数据,也可以通过蓝牙读取数据,将显示功耗、体积做到了非常小的水平。无屏幕的米家门窗传感器:纽扣电池供电,通过电磁感应,将磁场变化转化为电信号,以此判断门的开关状态,数据仅可以通过蓝牙读取。8.3新功能规划采用ABS塑料外壳对检测装置尤其是传感器部分进行包裹,用于提升设备的抗干扰性、耐用性和美观性.将USB供电改成3.7V锂电池供电,提升设备的便携性。根据目前的开发方向,开发两种实物设备,一种是继续改善当前方案,开发具有触摸屏的大屏检测设备,一种是新开发无屏的小型检测设备。大屏检测设备应具有更高的检测精度,并且能够独立地进行数据分析、比较和储存,成本较高,用户群体对精度需求高,并且能承受合理的价格。而无屏的小型检测设备应具有较高的检测精度,低功耗的蓝牙传输协议,采用纽扣电池或者小型锂电池供电,数据更新较慢,主要用于采集环境数据,传输给手机终端,配套开发手机端App,可以以最低的成本实现甲醛浓度的采集,分析,比对和储存等功能,并且未来能与智能家居进行联动,比如甲醛浓度超标时发出警告,并启用建筑的新风系统等来降低浓度。8.4总结基于人们对于装修后的室内空气质量越来越高的要求和对个人健康的重视,便于携带、成本较低、准确度较高的甲醛检测装置进入人们的视野。相对于传统实验室采集样品送检的方法,和进口设备动辄上万的售价,本课题所研究的基于stm32的甲醛检测装置采用新型的半导体气敏传感器,可以方便、快捷且准确地对环境空气中的甲醛浓度进行现场检测,通过以下任务完成了对甲醛检测装置的设计与开发:结合现代人民对室内空气质量的关注,尤其是对甲醛的重视,综述研究背景,并根据权威标准对甲醛检测方法进行论述。结合甲醛检测的三大类别,收集市场上较为成熟的甲醛检测装置解决方案,并进行优劣势分析。根据优劣分析结果,确定甲醛检测装置的功能需求、性能需求、功耗限制和便携性等要求。根据设计需求,分别完成单片机端的软硬件系统的设计与开发、手机端的配套软件系统的设计与开发,并完成编译和调试。通过设计实验来检测甲醛检测装置的功能是否完善,工作是否可靠,是否达到课题设计要求等。在不断地对该甲醛检测装置的完善和改进过程中,我充分运用了大学课程所学的工业控制器原理、数字电路和模拟电路、C语言、电力电子技术、传感器与检测技术等课程的专业知识,从硬件到软件,完整地完成了对这个“基于stm32的甲醛检测装置”的开发,基本实现了预定功能,虽然该设备易受到不稳定空气成分的干扰,但是在正常家庭环境中,不仅在成本上很好地控制在较低水平,而且产品的易用性、耐用性、精度和响应速度都属于优异范畴,相对专业检测设备,用更低的成本、更简单的方法实现了较高精度的检测。对于产品,能在设计实践中发现不足与改进之处,同时对当下的智能家居设备有了一定的了解,我也获益匪浅。

参考文献[1]杨长业;边煜;石汉青;曾培培.基于STM32的室内空气质量检测系统设计[J].气象水文海洋仪器,2016,v.33;No.119,66-69.[2]孙书鹰;陈志佳;寇超.新一代嵌入式微处理器STM32F103开发与应用[J].微计算机应用,2010,v.31;No.200,61-65.[3]罗钧;李华;付丽;侍宝玉.基于MSP432的多传感器数据采集与动态显示实验设计[J].实验技术与管理,2018,v.35;No.266,38-42+50.[4]唐飞;杨伟.基于多任务机制的STM32系统程序设计[J].安庆师范大学学报(自然科学版),2019,v.25;No.116,76-80.[5]张凯.基于STM32的无线蓝牙传输设计[J].物联网技术,2020,v.10;No.109,46-47+50.蒋力耀;崔勇;张耀阳.基于STM32F103ZET6单片机的地铁站环境监测系统设计[J].电子测试,2021,(09):33-34+17.[6]朱玉玲.室内空气中甲醛的去除研究[C].山东大学,2010.[7]王博.便携式甲醛气体检测仪的设计与实现[C].西安电子科技大学,2015.[8]卢春池.共享式社区服务甲醛检测系统设计与实现[C].西南交通大学,2018.[9]王闯.基于STM32系列ARM

Gortex-M3微控制器的微型热敏打印机固件开发[C].山东大学,2015.[10]电阻式半导体气体传感器张强,管自生(南京工业大学材料科学与工程学院,江苏南京210009)[11]金属氧化物半导体气体传感器应用现状和发展情况,陈祥铭,杨贵钦,赵海茹,涂晔,(玉溪师范学院物理与电子工程学院,云南玉溪653100)[12]Sun

Wei,Yin

Xinghui,Wang

Xinjun.Design

of

spectrum

measurement

system

based

on

STM32[J].Dianzi

Jishu

Yingyong,2019,45(3),96-99.[13]Anonymous.STMicroelectronics;

STMicroelectronics

Adds

New

Library

for

STM32

MCU,

Opening

Up

New

Options

for

DSP

Application

Developers[J].Electronics

Newsweekly,2008,,.[14]Chunyu

Liu;Fengrui

Mu.Design

and

Research

of

Intelligent

Logistics

Robot

based

on

STM32[J].Recent

Advances

in

Electrical

&

Electronic

Engineering,2021,14(1),44-51.附录主程序蓝牙程序:#include"./usart/bsp_usart_blt.h"#include<stdarg.h>///配置USART接收中断staticvoidNVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;/*ConfiguretheNVICPreemptionPriorityBits*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/*EnabletheUSARTyInterrupt*/NVIC_InitStructure.NVIC_IRQChannel=BLT_USART_IRQ;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}voidBLT_USART_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; /*configUSART2clock*/ BLT_USART_APBxClock_FUN(BLT_USART_CLK,ENABLE); BLT_USART_GPIO_APBxClock_FUN(BLT_USART_GPIO_CLK,ENABLE); /*USART2GPIOconfig*/ /*ConfigureUSART2Tx(PA.02)asalternatefunctionpush-pull*/ GPIO_InitStructure.GPIO_Pin=BLT_USART_TX_PIN; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(BLT_USART_TX_PORT,&GPIO_InitStructure); /*ConfigureUSART2Rx(PA.03)asinputf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论