基于STM32的物联网环境监测系统-创新互联

基于STM32的物联网环境监测系统(Internet of Things environmental monitoring system based on STM32) 摘 要

摘 要:随着人民对美好生活的向往,人们对于环境的重视程度越来越强烈,环境对生活的影响已经成为一个热点问题。本设计以STM32单片机作为控制和数据处理的单元,使用AHT10、BH1750和BMP280传感器去监测周围的环境参数,在LCD屏完成传感器数据和相关信息的显示。同时,采用了无线模组与单片机之间进行数据交互。当无线通讯模组成功连接网络,并接入物联网云平台时,用户可以通过登录物联网云平台后台查看传感器上报的数据和进行远程控制。在设计过程中,开发Android上位机软件,使用户在上位机实现对于温度、湿度、光照强度和气压等相关环境参数监测。

成都创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为夹江企业提供专业的做网站、网站制作,夹江网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。关键词:STM32;物联网;环境监测 Abstract

Abstract:With the people’s yearning for a better life, people pay more and more attention to the environment, the impact of the environment on life has become a hot issue.This design uses STM32 as the control and data processing unit. Meanwhile, the AHT10, BH1750, BMP280 sensors to monitor the surrounding environmental parameters. Display of sensor data and related information on the LCD screen. At the same time, the wireless module and the single chip microcomputer are used for data interaction. When the wireless communication module is successfully connected to the network, and connected to the Internet of Things cloud platform. By login to the background of the Internet of Things cloud platform. Users can view the data reported by the sensor and conduct remote control. In the design process, Android software application is developed to enable users to monitor relevant environmental parameters. Display temperature, humidity, light intensity and pressure data on the APP.
Keywords:STM32; Internet of Things; Environmental Monitoring

1 引 言 1.1 课题研究背景

在我国经济稳定发展的背景下,人们的生活质量得到了明显的提高。与此同时经济发展所带来的环境的问题,开始慢慢展现出来。环境问题被越来越多的人们重视。为了拥有更健康的生存环境,治理环境污染,改善环境质量,促进绿色发展是目前社会发展的形势所趋[1]。
我国研究环境监测系统的研究发展过程比较坎坷。我国发展起步比较晚,与其他西方国家相比较,相关领域落后几十年。主要原因是由于当时的社会生产水平不高,国内相关的技术也没有很多,国外的相关核心技术进行封锁,限制性太大。只能去引进国外的环境监测系统设备以及获取服务。同时由于会操作国外先进设备的人员较少,很难实现大规模使用。
我国环境监测工作是随着国家对于环境保护的加大投入,向高质量发展的目标,从而发展起来的。国内的传统的环境监测装置系统,一般有易受到现场安装使用环境被限制的缺点。场景的应用适用性比较差。传统的测量和控制操作手段比较单一,不能够远距离的监控和报警等提示功能。但是,随着国家对物联网信息技术的发展加大投入。国内相关物联网平台和传统的环境监测的厂商之间共同合作。我国的环境监测系统的发展的方向是明确的,是向着智能化方向前进。实现传感器设备端与云端之间的互联,进一步向着万物互联的方向发展。
国外的环境监测系统设备的研究发展情况如下。传感器技术以及相关电子技术最先出现在西方国家。相关的传感器芯片和数据处理软件有着快速的发展,早实现了智能化操作。许多西方发达国家的环境监测系统装置,已经能同时进行多路采集各种周围环境的相关质量参数[2]。通过物联网技术实现数据的云端监测和进行相关处理分析,从而进行预测并得到相关结论。历经多年的发展和相关电子信息技术的进步,研制出具有自动化、智能化的监测系统成为各个国家的目标。

1.2 课题研究目的及意义

进入21世纪,随着物联网信息技术与电子信息技术的快速进步。因此有必要去设计出一种以物联网技术、传感器技术和电子信息技术构成的多功能环境监测装置。该系统可以同时监测周围环境的多路环境参数。通过环境监测系统装置[3],能够帮助人们准确的去监测周围环境的参数。力求以大的力度,寻求科学合理的方法,去解决日常生产生活出现的环境问题。
通过监测系统的长期的积累的数据,分析和追溯污染源头,分析其变化规律。从而建立相关的预警和预报系统。环境监测对于人们的日常生产生活非常重要。不但体现在环境保护和控制污染等方面,而且还是人类生存的重要的基石。坚持促进绿色发展,创建绿色中国的理念,才能拥有更美好的健康生活环境。

2 总体方案设计 2.1 整体方案设计

本环境监测系统设计选取了控制和数据处理能力强的STM32单片机作为核心部件。使用温湿度传感器对周围环境中的温度与湿度监测,选取高精度的光强度传感器完成对周围环境的光照强度的测量,对于气压数据的测量,将选取高精度的气压传感器完成工作。该系统使用液晶显示屏幕完成对温湿度数值,光照强度数值,大气压强数值以及设备的状态信息的显示。当无线通讯模组成功连接网络之后,接入云平台。用户可以通过登录物联网云平台后台[4],查看传感器上报的数据信息和进行远程控制。开发Android上位机软件,使用户在上位机程序上实现对各种环境质量参数监测。整个系统的整体框架图如图2-1所示。

1661556321247.png

2.2 控制模块方案

本环境监测系统设计使用单片机作为整个系统的控制中心。需要完成传感器数据的采集,无线通讯模组的数据交互,显示传感器数据的功能[5]。在本次的环境监测系统中,控制模块采用的是STM32系列单片机。
例如在芯片选择上面,有低功耗类型STM32L系列、主流类型F1系列、高性能F7/H7系列、以及异构系统架构下的 STM32MP157系列。在软件程序设计过程中,官方提供了图形化配置软件STM32CubeMX。可以快速生成底层配置代码,减少重复性移植。同时该32位芯片的相关技术资料和参考设计资料较多,因此被运用到各种电子系统设计之中。本课题准备使用控制性能强劲和数据处理能力强的STM32F103ZET6芯片作为核心控制模块元件。

2.3 环境监测传感器方案

环境监测系统主要需要监测的数据有温湿度数据,光照强度数据和大气压强数据等基本环境质量参数。因此需要选择相应的温湿度传感器,光强传感器,精度较高的气压传感器[6]。
温湿度数据采集传感器选择了AHT10。AHT10模块上面有一个湿度传感器元件和一个片上温度传感元件,该产品具有快速响应、抗干扰能力强和高精度等优点[7]。
光照强度数据采集的传感器选择了BH1750。BH1750是标准(I2C)接口的16位数字输出类型的环境光强度传感器,可以利用BH1750模块的高分辨率探测较大范围内的光照强度变化情况[8]。
大气压强数据采集传感器选择了BMP280。数字式气压传感器BMP280,具有高精度的特点,而且也具有测量环境温度和高度的功能。
综上所述的传感器模块,在选择时考虑到了其成本,使用的方便性,相关设计资料的丰富性,传感器模块实物图如图2-2所示。

1661556485469.png

2.4 无线模块方案

随着物联网技术等相关通信技术的快速发展和更新迭代,目前的物联网技术呈现出智能化的特点[9]。因此在本系统设计中,决定使用远程通信模块进行数据通信和进行智能化操作。对接国内开放的物联网云平台,从而更加智能的,简单的完成整个设计的功能。
方案一:对于长距离无线通讯模块的选择。查询资料后,了解了国产LTE无线通讯模组上海合宙公司。该公司研发的LTE Cat 1无线通信模组提供了丰富的通用外设接口,并且支持Lua二次开发,合宙官方提供了嵌入式脚本运行框架LuatOS。但是模组价格比较贵,而且开发过程比较复杂,相关资料和设计参考较少,开发难度较大。
方案二: ESP8266芯片是国产芯片公司乐鑫科技所研发的一款WIFI无线模组芯片。内置TCP/IP协议栈,支持AT本地升级和OTA远程升级。该无线模组能够很好的接入国内的开放的物联网云平台,具有易操作化的特点,主要是相关资料和设计参考较多,开发难度较小。
经过对上述方案对比,方案二中的ESP8266模块,拥有丰富的相关设计资料。最终选择了以ESP8266芯片作为核心的无线模组。作为单片机与物联网云端进行数据传输和交换的单元,无线模块实物图如图2-3所示。

1661556514874.png

2.5 液晶显示模块方案

本次环境监测系统的设计过程中,需要使用显示模块进行显示。需要的显示的数据,主要包括传感器设备测量采集到的数据和系统的基本状态信息。在电子系统设计过程中,常使用的显示模块主要有以下两种,TFT彩屏和LCD1602两种。方案对比如下。
方案一:TFT屏幕是以背透和反射相结合的方式工作的,通过点脉冲直接控制[10]。从而实现显示效果。查询资料了解到了一种1.8寸的TFT彩屏模块。在色彩显示上,TFT屏幕的效果较好,色彩丰富且具有对比度高特点。同时在使用该LCD 显示模组时,需要用到的单片机的IO端口数量较少。
方案二:LCD1602是一种字符型液晶显示模块,具有成本低等特点。但是缺点是在使用LCD1602需要较多的单片机的IO端口数量。而且需要通过调节变阻器的大小,才能改变屏幕的显示效果,不能直接得到显示效果。
经过上述两个方案对比,由于需要对传感器数据的实际测量值进行显示,选择了显示内容更多和色彩效果更好的方案一,TFT显示模块实物图如图2-4所示。

1661556536358.png

3 系统硬件设计 3.1 STM32主控模块

环境监测系统选取了STM32F103ZET6芯片作为电路的核心控制和数据处理单元。该芯片支持UART、SPI、I2C接口,芯片内部集成了512KB闪存和64KB SRAM,可以存储更多的程序和数据。环境监测系统的主控电路设计如图3-1所示。STM32芯片正常运行所需要的电压范围为2.03.6V,实际运行时的电流只有几十毫安,因此芯片功耗非常低。芯片可对系统电路之中的电压进行检测,可与电源芯片相接一起完成开关电源调节。芯片正常运行时,需要一个外部时钟触发信号,为此将使用频率范围在416MHz之间的晶体振荡器。芯片内部存在一个自动校准的RTC振荡电路,其实际运行的频率能够达到32KHZ。在本次设计中,因为STM32系列拥有丰富的串口接口,因此可以实现与多个通讯模组通信。同时可以添加调试接口,利用串口软件实现调试功能,打印设备状态信息。

1661556591082.png

3.2 温湿度传感器模块

温湿度传感器模块核心是以AHT10芯片作为核心部分,还包括电平转换电路。AHT10芯片的产品特性如下,芯片的输入电压范围:2.3V至3.3V;具有低功耗的特点;芯片通讯方式采用标准的I2C接口通信。该温湿度传感器芯片的精度如下,湿度精度±3%RH,温度精度0.5℃。模块的参考设计电路如图3-2所示。

1661556620677.png

3.3 光照强度传感器模块

光强传感器模块核心是以BH1750芯片作为核心部分,还包括电平转换电路。BH1750芯片的产品特性如下,芯片的输入电压范围:3.0V至3.6V之间;其峰值灵敏度波长的典型值为560nm;输入的光照强度范围为1~65535Lx,其最小的分辨率为0.5Lx[11]。BH1750芯片采用的通讯方式是标准的I2C接口通信。模块的参考设计电路如图3-3所示。

1661556642921.png

3.4 大气压强传感器模块

气压传感器模块核心是以BMP280芯片作为核心部分,还包括电平转换电路。气压传感器的产品特性如下,芯片的输入电压范围:1.7~3.6V;芯片的气压工作范围为300hPa至1100hPa;芯片工作温度范围为-40℃至85℃;BMP280芯片支持标准的I2C接口通信和SPI通信;模块参考设计电路图如图3-4所示。

1661556642921.png

3.5 显示模块

在本次的环境监测系统设计中,选择了1.8寸TFT彩色屏幕作为该系统的显示模块,LCD彩屏采用SPI接口通讯方式,驱动IC是ST7735S,其支持的显示的分辨率为128*160;支持16Bit RGB范围 65K色显示。该显示模块支字符,字符串,汉字,图片等效果显示。 彩色TFT显示模块接口电路图如图3-5所示。

1661556703807.png

3.6 无线通信模块

环境监测系统选择了ESP8266系列芯片作为无线通讯部分。ESP8266系列芯片,其CPU时钟速率最高可以达到160MHz,同时具有丰富的外设接口;经典的WIFI模式支持三种类型,包括Station客户端模式、SoftAP服务端模式和SoftAP+Station混合模式[12];该无线模组支持TCP、HTTP、MQTT等基本网络协议。无线通信模块参考电路设计如图3-6所示。

1661556709993.png

3.7 按键控制模块

在环境监测系统的设计中,通过按键模块进行GPIO输入操作,从而无线通信模块的配网操作。在本次环境监测系统的设计中,当按键KEY1按下时,LCD屏幕则会显示传感器数据监测信息;当按键KEY2按下时,LCD屏幕则会显示网络状态信息;当按键KEY3按下时,LCD屏幕则会显示系统相关信息。按键模块电路图如图3-7所示。

1661556749771.png

3.8 电源接口电路

在电源供电方式选择过程中,可以采用的是连接USB接口进行供电。由于大部分的传感器设备模块的输入电压范围在3.3V左右,所以需要设计电平转换电路。该部分主要由电源线引入5V/1A的电源给系统供电,经KIA1117芯片降压为3.3V,给STM32主控系统和传感器设备供电。电源接口电路图如图3-8所示。

1661556766758.png

4 系统软件设计 4.1 主程序设计

基于STM32的环境监测系统的主程序流程如下。整个系统,在提供电源之后,开始进行系统模块的初始化操作。如进行传感器设备的初始化,LCD模块的初始化,无线通讯模组的初始化。当完成初始化操作之后,LCD屏幕则会显示初始化信息。此时,利用路由器或手机热点提供WIFI信号,WIFI模块会进行联网操作。当联网成功时,系统开始接收传感器设备采集的数据,APP程序会显示相关传感器数据信息,LCD屏幕也会显示环境监测系统的主要监测数据。如果联网失败,则会重新尝试连接网络。主程序设计流程图如图4-1所示。

1661556784632.png

4.2 传感器数据采集及处理

环境监测系统主要需要监测的数据,有温湿度数据,光照强度数据和大气压强数据。选择的环境监测系统的传感器,AHT10,BH1750,BMP280都是通过标准的I2C接口进行通信。
对于温湿度数据的采集,使用AHT10传感器。AHT10采集数据的流程。第一步,模块进行上电,等待40ms,目的是在读取温湿度数据过程之前,进行初始化操作。第二步,当等待时间结束后,进行触发测量操作。第三步,等待测量过程完成,从而获取传感器采集到的温湿度数据。流程如图4-2所示。

1661556803729.png

对于光照强度数据的采集,使用BH1750传感器。计算BH1750采集结果,单片机通过I2C协议读取的第一个字节是 BH1750寄存器的高8位,第二字节为寄存器的低8位数据,高8位数据左移8位再加上低8位数据[13],利用公式去计算最终的光照强度数值。测量步骤如图4-3所示。

1661556824979.png

对于气压数据的采集,使用BMP280传感器。 BMP280传感器的初始化流程如下,第一步,芯片内部数据全部清零;第二步,读芯片ID;第三步,进行测量控制寄存器操作;第四步,进行测量,测量时间的间隔为0.5ms;第五步,读取补偿值数据。官方数据手册提供的BMP280测量流程如图4-4所示。

1661556856970.png

在读取数据时,需要进行滤波操作使结果的更加稳定。BMP280传感器获取气压数值的底层驱动代码如图4-5所示。

//==================================================================================================
//  函数功能: BMP280 外设驱动函数部分
//  函数标记: bmp280GetPressure
//  函数说明: 传感器获取大气压数值
//-------------------------------------------------------------------------------------------------
//  |   -   |   -   |   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7   |   8   |   9   
//==================================================================================================
static void bmp280GetPressure(void)
{u8 data[BMP280_DATA_FRAME_SIZE];

    // read data from sensor
    BMP_iicDevRead(BMP280_ADDR,BMP280_PRESSURE_MSB_REG,BMP280_DATA_FRAME_SIZE,data);
    bmp280RawPressure=(s32)((((uint32_t)(data[0]))<<12)|(((uint32_t)(data[1]))<<4)|((uint32_t)data[2]>>4));
    bmp280RawTemperature=(s32)((((uint32_t)(data[3]))<<12)|(((uint32_t)(data[4]))<<4)|((uint32_t)data[5]>>4));
}
4.3 显示模块程序设计

环境监测系统选择了1.8寸TFT彩屏作为显示模块部分。主要的显示内容是传感器采集的数据,网络状态信息,系统信息,NTP网络时间以及系统开机启动的界面。LCD显示驱动,提供了基本的显示基本的英文字符,数字,以及显示汉字和图片的函数接口,同时支持不同的大小的字体的函数接口。

第一部分,系统上电开机启动界面,显示开机界面图片及相关信息。在开机启动界面的设计中,使用彩色图片取模软件,进行设置图片尺寸大小,色彩参数。从而获取对应的数组代码。调用LCD图片显示函数TFT_ImageShow显示图片,支持不同尺寸的大小的图片显示,本次显示的图片大小为120*120。 第二部分,显示环境监测系统的系统信息功能选择界面。调用system_show()函数,实现的效果是三种基本信息功能选择的展示。第一,SensorMessage传感器数据信息展示功能,第二,NetworkMessage网络状态信息展示功能,第三,SystemMessage系统基本信息展示功能。 第三部分,显示环境监测系统的传感器数据信息SensorMessage。数据信息主要是显示温湿度Temperature和湿度Humidity,光照强度数据Light_Intensity,气压传感器数据Pressure。驱动代码如图4-6所示。
void system_show(void)

{TFT_ShowString_16x16(8,0,"->System_Display<-",Blue1,White);
		TFT_ShowString_16x16(20,20,"1.[SensorMessage]",Red,White);
		TFT_ShowString_16x16(20,40,"2.[NetworkMessage]",Red,White);
		TFT_ShowString_16x16(20,60,"3.[SystemMessage]",Red,White);
		printf("---》1.环境监测信息  \r\n");
		printf("---》2.网络状态信息  \r\n");
		printf("---》3.系统相关信息  \r\n");
}

void NetworkInformation_show(void)
{TFT_ShowString_16x16(0,0,"-->Network Message<--",Blue1,White);
		TFT_ShowString_16x16(0,20,"ESP8266 WIFIModule",Red,White);
		TFT_ShowString_16x16(0,40,"Gizwits AIoTCloud ",Red,White);
		//显示机智云配网是否成功
		TFT_ShowChinese_16x16(0,60, "天:",Red,White);
		TFT_ShowChinese_16x16(20,60,"气",Red,White);
		TFT_ShowString_16x16(40,60,":",Red,White);
	    TFT_ShowString_16x16(70,60,results[0].now.text,Blue1,White);
		TFT_ShowString_16x16(0,80,"NetworkState:",Red,White);
		TFT_ShowChinese_16x16(120,80,"●",WIFI_CONNECT_FLAG == 0?Red: Blue1 ,White);
}

void SystemInformation_show(void)
{TFT_ShowString_16x16(0,0,"-->System Message<--",Blue1,White);
		TFT_ShowString_16x16(0,20,"STM32 AIoT System",Red,White);
		TFT_ShowString_16x16(0,40,"Num:51836011045 ",Red,White);
		TFT_ShowString_16x16(0,60,"BBU WangZiXuan2022.4",Red,White);

}

void TFT_Show_SensorDATA(void)
{//显示温度
		TFT_ShowImage(0,0,32,32,Wendu);
		TFT_ShowString_16x16(30,0,"Temp",Blue1,White);
		TFT_ShowNumber_Float_16x16(30,16,aht_temp,2,1,Red,White);
		TFT_ShowChinese_16x16(64,0,"℃",Magenta,White);
//		//显示湿度
		TFT_ShowImage(78,0,32,32,shidu);
		TFT_ShowString_16x16(112,0,"Humi",Blue1,White);
		TFT_ShowNumber_Float_16x16(108,16,aht_hum,2,1,Red,White);
		TFT_ShowString_16x16(150,16,"%%",Magenta,White);	
//		//显示光照强度
		TFT_ShowImage(0,35,32,32,Light_IMG);
		TFT_ShowString_16x16(40,30,"Light_Data",Blue1,White);
		TFT_ShowNumber_Float_16x16(30,48,Light,5,1,Red,White);
		TFT_ShowString_16x16(95,48,"Lux",Magenta,White);	
//		//大气压 Hpa 正常的大气压是在1000百帕左右
		TFT_ShowImage(0,70,32,32,IMG_Hpa);
		TFT_ShowString_16x16(40,60,"Pressure",Blue1,White);
		TFT_ShowNumber_SignedInteger_16x16(40,76,Press,4,Red,White);
		TFT_ShowString_16x16(90,76,"Hpa",Blue1,White);	
		
		TFT_ShowString_16x16(0,96,"-->SensorMessage<--",Blue1,White);
}
第四部分,显示环境监测系统的网络状态信息NetworkMessage,主要是显示是否连接到无线网络的状态信息。第五部分,系统基本信息展示。

在本次显示模块的程序设计中,完成了基本数据信息的展示。由于需要进行图片显示,占用资源较多。后期可以使用SD卡存储媒体资源,外部调用,减少单片机内部芯片资源的使用。在功能选择界面的程序设计中,后期可以完善功能选择的部分代码,实现多级菜单的效果。

4.4 物联网云平台设备接入

在本次的环境监测系统的设计中,利用了无线模块进行基本通信操作。传统的无线模组与单片机进行数据交换,一般的方案是利用无线模组建立局域网实现通信功能。随着云计算等相关信息技术的进步,现在的无线通讯模组可以实现与云端连接,实现数据远程传输的功能。在本次设计中,使用的无线模组需要连接网络,并接入云平台。用户可以通过登录云平台后台,查看无线通讯模块上报的传感器数据和进行远程控制等操作。在物联网云平台的选择中,选择了国内的机智云平台。物联网设备接入的方案,如图4-7所示。

1661556997446.png

云平台提供了两种版本的GAgent通信协议的接入方案,主要是独立MCU方案和SOC方案两种。本次环境监测系统的设计中,选择了独立MCU方案接入平台。在本次设计过程中,需要把GAgent协议移植到WIFI模组上面,从而实现对接云平台进行数据交互的功能。云平台提供了GAgent固件,GAgent固件的主要作用是完成对数据进行上报云平台和平台远程下发命令的功能[14]。固件下载效果如图4-8所示。

1661557003547.png

在本次的环境监测系统是软件设计中,采用了MCU +WIFI通信模组方案,现在介绍接入机智云平台的流程。 1. 第一步,注册IoT平台的开发者账号,并登陆选择产品类型并创建。 2. 第二步,填写产品相关的基本信息之后,获取到平台提供的Product Key和Product Secret等密钥信息[15],如图4-9所示

1661557009579.png

3. 第三步,创建相关数据点信息,完成相关数据类型的填写。在环境监测系统的设计中,需要创建温度数据Temperature,湿度Humidity,光照强度Light_Intensity,气压Pressure等主要的传感器数据点,如图4-10所示。

1661557016853.png

4. 第四步,使用IoT平台提供SDK文件包,进行相关代码移植。在SDK包生成的过程中,平台提供了两种类型。本次系统设计过程中,选择独立MCU方案作为最终方案。在支持的硬件平台中,有常见MCU类型。例如有STM32平台,MSP430平台等,都提供了相关的测试SDK包。选择使用通用的MCU平台生成的SDK的代码移植,有利于之后移植到其他的MCU芯片平台上面去,选择如图4-11所示。

1661557023787.png

机智云SDK包的代码移植到STM32系列平台的流程如下。在整个代码移植的过程,主要是去移植串口初始化及配置,定时器的初始化及配置[16],传感器数据的采集接收和上报函数的配置,以及相关模块的初始化配置。 1. 第一部分,进行移植串口配置函数操作,在本次设计中主要是使用了串口3与无线通信模组进行数据交换。STM32单片机的引脚PB10为USART3_TX,引脚PB11为USART3_RX,其中USART3_TX与WIFI模组UART_RX连接,其中USART3_RX与WIFI模组UART_TX连接。配置串口3中断函数USART3_IRQHandler(),移植gizPutData(),把数据写入到缓冲区里面,代码如图4-12所示。
//串口3中断服务函数
void USART3_IRQHandler(void)
{u8 res;	      
	if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到数据
	{ 
		res =USART_ReceiveData(USART3);		 
		gizPutData(&res, 1);//数据写入到缓冲区
	}  				 											 
}   
2. 第二部分,定时器代码移植。在本次设计中使用了定时器3进行毫秒定时。在定时器3的中断服务处理函数中移植了gizTimerMs(),提供系统的毫秒定时操作,代码如图4-13所示。
//==================================================================================================
//  实现功能: 定时器3 中断服务函数函数
//  函数说明: 
//  函数备注: 
//--------------------------------------------------------------------------------------------------
//  |   -   |   -   |   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7   |   8   |   9   
//==================================================================================================  
void TIM3_IRQHandler(void)   //TIM3中断
 { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 
     { 
       TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源 
       gizTimerMs();
         
     }
 }
3. 第三部分,网络协议的配置。在Gizwits初始化函数中,调用了定时器TIM3的初始化,配置了1ms定时,USART3_Configuration设置波特率为9600。然后是进行设备状态结构体的初始化,数据缓冲区的初始化配置。网络协议的配置及初始化移植的代码如图4-14所示。
//==================================================================================================
//  实现功能: 机智云协议配置
//  函数说明: 进行ESP8266配网操作
//  函数备注: 
//--------------------------------------------------------------------------------------------------
//  |   -   |   -   |   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7   |   8   |   9   
//================================================================================================== 
void Gizwits_Init(void)
{TIM3_Int_Init(9,7199);							//1MS系统定时
		USART3_Configuration(9600);						//WIFI初始化
		userInit();								//设备状态结构体初始化
		gizwitsInit();							        //缓冲区初始化 
}

传感器采集数据的成员,包括valueTemp,valueHum,valuePress,valueLight_Intensity等,数据上报函数userHandle()实现数据上报功能,代码如图4-15所示。

void userHandle(void) //数据上报给云平台的处理函数
{currentDataPoint.valueTemp = aht_temp ;       //上报温度数据
      currentDataPoint.valueHum = aht_hum;          //上报湿度数据
      currentDataPoint.valuePress =Press ;          //上报气压数据
      currentDataPoint.valueLight_Intensity = Light;//上报光照强度数据
      if(LEDR == 0)
	   {  currentDataPoint.valueLED = 0;
  	 }
  	 else
  	 {  currentDataPoint.valueLED = 1;
  	 }
    
}
4. 在事件处理函数中,添加了相关的配网成功或失败以及网络时间获取的标志位,并进行相关的显示。在配置网络的操作,使用了开发板上面按键模块进行配置。配网采用的AirLink连接模式,在主函数里面,编写了按键检测函数。当按键KEY1_PRES的按下时,进行手机APP配网。在配网时,手机APP和无线模组需要连接到同一个热点信号下面进行配置。输入WIFI的账号SSID和Password,选择WIFI模组的类型进行配置,等待配网完成,设备名称信息则会显示在APP上面。 4.5 上位机软件应用开发 上位机软件应用开发。在本次的环境监测系统的设计中,采用了Android应用程序作为上位机软件。一般在APP开发设计过程中,主要是进行APP的UI界面设计,和相关功能模块底层逻辑设计。在APP的UI界面设计的过程中,选择使用XML进行布局,在应用程序的底层逻辑设计使用的Java语言。应用开发选择的是安卓平台,如图4-16所示。

1661557369434.png

本次设计中,使用平台提供生成的SDK文件包进行修改。由于平台的提供的例程只是完成了基本的显示效果,界面效果一般。所以接下来的主要工作是对官方源码进行修改。打开Android Studio软件,导入从平台下载的Demo源码,通过修改src文件里面的layout的布局文件,进行界面UI设计和优化。通过对src文件里面的java代码,进行底层逻辑代码修改[17]。在界面的UI设计工过程,主要是传感器的数据和系统状态信息显示,基本显示效果如图4-17所示。APP的界面设计需要优化,后期可以添加相关传感器历史数据的查看和实时动态曲线的功能[18]。

1661557403566.png

效果
  1. 1661557546812.png
  2. 1661557520760.png
  3. 1661557530245.png
  4. 1661557554152.png

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:基于STM32的物联网环境监测系统-创新互联
文章位置:http://pwwzsj.com/article/ceoiji.html