摘要
本设计实现了一种基于STM32L1xx低功耗微控制器和LoRa无线通信技术的环境参数智能监测系统。系统通过集成光照传感器、温湿度传感器(SHT11)采集环境数据,利用LoRa技术实现数据的远距离无线传输,并通过OLED显示屏实时展示监测结果。报告详细阐述了系统整体架构、硬件选型与设计、软件流程、通信协议及测试验证结果,充分验证了系统在低功耗与远距离数据传输方面的显著优势,为物联网环境监测应用提供了一种高效、可靠的解决方案。
目录
随着物联网技术的快速发展,环境监测领域对智能化、低功耗、远距离数据传输的需求日益增长。传统有线监测系统存在布线复杂、成本高、扩展性差等问题,而基于WiFi、蓝牙等短距离无线技术的方案在大范围监测场景中受到限制。LoRa(LongRange)作为一种低功耗广域网(LPWAN)技术,具有传输距离远、功耗低、组网灵活等优势,特别适合环境监测这类需要长期运行、数据量小但传输距离要求较高的应用场景。
本设计旨在开发一款基于STM32和LoRa的环境参数智能监测系统,实现对光照强度、温度、湿度等环境参数的实时采集、处理和远程传输,为农业大棚、智能家居、工业环境监测等领域提供高效、可靠的监测解决方案。
多参数同步监测:实时采集温度、湿度、光照强度数据,测量精度分别达到±0.5℃、±3%RH、±5%Lux(在500-10000Lux范围内)。
本地可视化:通过0.96英寸OLED显示屏以清晰的中文界面实时显示各参数值。
数据远传功能:通过USART1串口按“光照值(浮点数,1位小数)温度值(浮点数,1位小数)湿度值(浮点数,1位小数)\\n”格式发送数据至上位机,波特率9600bps;同时通过LoRa模块将数据无线传输至远程节点/服务器。
低功耗运行:充分利用STM32L1xx的低功耗特性(支持睡眠、停止、待机模式),配合定时器中断精确控制传感器采样与数据发送周期,显著降低系统平均功耗。
主要由以下功能模块构成:
数据采集模块:负责环境参数感知,包括光照传感器(光敏电阻)、温湿度传感器(SHT11)。
核心控制模块:基于STM32L1xx系列微控制器,负责系统调度、传感器驱动、数据处理、通信控制等核心功能。
无线通信模块:采用基于SX1278芯片的LoRa模组,实现数据的远距离、低功耗无线传输。
显示模块:0.96英寸SPI接口OLED显示屏(128×64),用于本地实时数据显示。
电源管理模块:为系统各模块提供稳定、高效的电源供应,并支持低功耗设计。
上位机通信模块:USART串口,用于调试和数据输出至本地计算机。
系统工作流程如图1所示:
传感器模块(温湿度SHT11、光照)在微控制器定时控制下,周期性采集环境参数。
- 核心控制模块(STM32L1xx)对采集的原始数据进行处理、校准(如光照非线性校正)和格式转换。
- 处理后的数据:一方面实时刷新OLED显示屏进行本地可视化;另一方面,通过USART1串口发送至本地调试上位机;同时,通过LoRa无线模块发送至指定的远程接收节点或网关。
4.远程服务器/网关接收LoRa数据,进行解析、存储和分析。用户可通过网络客户端或应用程序查看实时环境数据和历史记录。
芯片选型:
STM32L151C8T6微控制器,基于ARMCortex-M3内核,工作电压1.8-3.6V,支持多种低功耗模式(睡眠、停止、待机),极低的待机电流(<1μA)使其非常适合于长期电池供电的监测场景。
资源分配:
ADC通道0:连接光敏电阻分压电路,采集光照强度对应的模拟电压信号。
USART1:配置为9600bps波特率,8位数据位,1位停止位,无校验位,用于与上位机调试软件通信。
I2C接口:连接SHT11温湿度传感器。
SPI接口:连接OLED显示屏和LoRa(SX1278)模块。
GPIO端口:控制各模块的使能、复位等引脚。
温湿度监测:
采用SHT11高精度数字温湿度传感器。通过I2C兼容的两线制串行接口与STM32通信。
测量范围:温度-40~123.8℃,湿度0~100%RH(报告应用场景0-50℃,20%-90%RH)。
精度:典型值±0.4℃@25℃,±2%RH。
内置CRC校验功能,确保数据传输的可靠性。
光照强度监测:
采用光敏电阻(GL5528)与10kΩ参考电阻构成串联分压电路。
分压点电压通过ADC通道0采集。
利用光敏电阻阻值与光照强度(Lux)间的近似对数关系,通过实验拟合公式进行非线性转换:
`Lux=pow(10,(1.78-log10(33/V_adc-10))/0.6)`//需明确定义`V_adc`为归一化ADC值或原始值
设计适用于室内0~20000Lux范围,并在500~10000Lux范围内实现较高精度(误差<3%)。
采用0.96英寸SPI接口OLED显示屏,分辨率128×64。支持显示中英文字符及图形。通过自定义`guang`(光)、`wen`(温)、`shi`(湿)等16×16像素中文字模数组,实现中文标签显示(如“光照:1200.00LX”)。函数`OLED_ShowCHineseArray`实现点阵数据的逐行渲染显示。
USART1配置为异步通信模式:9600bps,8位数据位,1位停止位,无校验位。
通过自定义函数`USART1_SendStr`发送格式化后的环境数据字符串。
数据格式:`"<光照值(1位小数)><温度值(1位小数)><湿度值(1位小数)>\n"`(例如:`"985.025.749.6\n"`)。空格分隔数值,`\n`换行符作为帧结束标志,便于Python、Matlab等上位机软件解析。
核心芯片:SX1278LoRa射频收发器。
工作频段:433MHz(可根据法规和需求选择)。
关键特性:
最大发射功率:+20dBm。
超高接收灵敏度:低至-148dBm。
理论视距传输距离:3-5公里(实际环境受遮挡影响)。
支持可配置扩频因子(SF)、带宽(BW)、编码率(CR),可灵活平衡传输距离、速率和抗干扰性。
超低功耗:休眠电流仅0.5μA。
连接方式:通过SPI接口和必要的控制线(NSS,RESET,DIOx)与STM32L1xx连接。
功能:负责将串口格式化后的环境数据(或打包成特定应用层帧)通过LoRa调制发送出去。其长距离和超低休眠功耗特性是系统实现远距离、电池长期供电的关键。
软件架构流程图:
系统软件采用模块化设计,主要包含初始化、数据采集、数据处理、数据显示、数据通信(串口+LoRa)五大模块。主程序流程如图2所示:(简述初始化->循环:睡眠等待中断->中断触发采样/处理/显示/通信->返回睡眠)
3.2.1初始化模块
硬件初始化:
系统时钟配置。
GPIO初始化:配置传感器、OLED、LoRa模块的控制引脚。
定时器初始化:配置Timer2产生1ms周期中断,作为系统时基,用于精准控制采样周期、显示刷新、数据发送间隔。
ADC初始化:配置ADC通道0为连续扫描模式,提高光照数据采集的实时性。
USART1初始化:配置串口参数(9600-8-N-1)。
I2C初始化:配置用于驱动SHT11。
SPI初始化:配置用于驱动OLED和SX1278。
OLED初始化:发送初始化序列,清屏。
SX1278(LoRa)初始化:配置工作模式、频率、带宽、扩频因子、编码率、发射功率等参数。
光照强度采集与转换:
在定时器中断或主循环中,读取ADC通道0的值(`RawADC`或`V_adc`)。
应用非线性校正公式计算实际光照强度(Lux):
`Lux=pow(10,(1.78-log10(33/V_adc-10))/0.6)`//确保公式变量定义清晰
优化建议:可通过多点标定,建立查找表或使用分段/高阶拟合提升全量程精度。
温湿度采集(SHT11):
严格按照SHT11数据手册的读写时序,通过I2C兼容接口通信。
读取流程简述:
1.发送启动(Start)信号。
2.发送温度或湿度测量命令。
3.等待测量完成(检测DATA线状态)。
4.读取两个字节的测量数据和高位CRC校验码。
5.进行CRC校验,验证数据有效性。
6.将原始数据转换为实际物理值(应用线性化和温度补偿公式)。
驱动函数封装了上述复杂的时序操作和校验逻辑,确保数据可靠性。
OLED显示:
使用`OLED_ShowCHineseArray`函数,结合预定义的中文字模点阵数组(`guang`,`wen`等),在指定位置显示固定中文标签(如“光照:”、“温度:”、“湿度:”)。
将处理后的浮点数值格式化为字符串,调用字符显示函数在对应标签后显示动态数值(如"1200.00")。
实现小数点后2位(光照)或1位(温湿度)的显示。
上位机串口数据发送:
使用`sprintf`或自定义格式化函数,将浮点数值转换为保留1位小数的字符串。
调用`USART1_SendStr`函数发送格式为`"<光照值><温度值><湿度值>\n"`的字符串(如`USART1_SendStr("985.025.749.6\n")`)。
LoRa数据发送:
将待发送的环境参数数据(通常先格式化为字符串或二进制结构体)写入SX1278的发送FIFO缓冲区。
配置SX1278为发送模式(TxMode)。
启动发送操作。发送完成后,SX1278产生中断或可通过状态寄存器查询,模块可切回低功耗模式(如休眠或待机)。
问题:光敏电阻的阻值变化与光照强度(Lux)呈非线性(近似对数)关系,直接由ADC采集的电压值不能线性反映实际光照度。方案:基于光敏电阻特性曲线,通过实验标定关键点,利用数学库函数`pow()`和`log10()`实现非线性映射公式,有效将ADC值转换为Lux值。经实测验证,在主要工作范围(500-10000Lux)内,转换误差<3%。
优化方向:通过更密集的光照度标定点(使用标准光照计),采用分段线性插值或高阶多项式拟合方法建立更精确的转换模型或查找表(LUT),可显著提升全量程(0-20000Lux)的测量精度。
硬件层面:
核心选用STM32L1xx超低功耗微控制器。
传感器(SHT11)支持空闲休眠,仅在测量时唤醒。
LoRa模块(SX1278)支持多种低功耗模式(休眠、待机)。
优化电源电路设计,减少静态损耗。
软件层面:
主循环低功耗管理:系统大部分时间处于睡眠模式(SleepMode)或停止模式(StopMode),由定时器中断(Timer2)周期性唤醒进行采样、处理、显示和通信。
外设分时供电/控制:仅在需要操作时开启相应外设(传感器、OLED、LoRa)的电源或使能信号,操作完成后立即关闭或进入其低功耗模式。例如,LoRa仅在发送数据前唤醒并配置,发送完成后立即进入休眠。
缩短活跃工作时间:优化代码执行效率,快速完成采样、计算、发送任务,尽快返回低功耗状态。
实测功耗:系统在典型工作周期(如每秒采样、显示、串口发送一次,LoRa每10秒发送一次)下的平均工作电流约15mA。使用一块3.7V/1000mAh锂电池供电,理论续航时间约为:`1000mAh/15mA≈66.7小时`(约2.78天)。通过降低采样/发送频率、延长休眠时间可进一步大幅提升续航。
标准计量设备:
1.温湿度标准器:Testo175-H1数据记录仪(精度:±0.5℃/±1.5%RH)
2.光照度标准器:TASI6010照度计(精度:±3%)
串口调试工具:SSCOMV5.13.1,用于接收并记录USART1输出的环境数据。
功耗测试设备:数字万用表(电流档),用于测量系统工作电流。
LoRa接收端:配备相同SX1278模块的上位机,用于验证无线传输功能与距离。
表1环境参数测量精度测试结果
硬件平台:
主控芯片:STM32L151C8T6超低功耗微控制器
传感器:SHT11数字温湿度传感器(工作范围:-40~123.8℃,精度±0.5℃/±3%RH),光敏电阻模块(检测范围:0~20000Lux)
供电:5V直流电源/3.7V1000mAh锂电池
5.4.1OLED显示功能验证
预定义的16×16点阵中文字符(“光”、“温”、“湿”)显示清晰正确,无乱码现象动态数据刷新及时,数值显示完整(光照值保留2位小数,温湿度保留1位小数)界面布局合理,信息辨识度高
5.4.2串口与LoRa数据传输验证
串口(USART1)输出:
数据格式严格符合`"<光照值><温度值><湿度值>\n"`(如`"985.025.749.6\n"`)
连续运行24小时无数据丢包,传输稳定性良好
数值分辨率符合设计要求(小数点后1位)
LoRa无线传输:
空旷环境下有效通信距离达1.2公里(SF=12,BW=125kHz,TxPower=20dBm)
数据包接收率(PER)>99%(100m内)
支持周期性发送(默认10s)与事件触发发送
5.4.3系统整体性能
稳定性:连续运行72小时未发生死机或异常重启
实时性:数据采集到本地显示/串口输出的响应时间≤1.1s功耗特性:
工作电流(含OLED显示):峰值≈25mA(LoRa发送时),平均≈15mA
休眠电流(OLED关闭,LoRa休眠):≈1.2mA(STM32StopMode)
理论续航(1000mAh锂电池):连续工作≈66小时,1分钟周期采样≈45天
智能家居环境监控:
实时监测室内温湿度、光照,数据可作为智能家居中枢的输入
联动示例:当温度>28℃且湿度<30%时,向智能家居平台发送指令启动加湿器(需平台支持)
农业温室大棚监测:
分布式部署多个监测节点,覆盖大面积种植区域
自动控制:光照<500Lux时触发补光灯,湿度>85%RH时启动通风系统
工业仓储环境监控:
实时监测仓库温湿度,防止货物霉变
报警机制:参数超标时本地声光报警+云端平台通知+历史数据标记
1.无线通信升级:集成ESP8266模块,将数据上传至云端平台(如ThingSpeak),实现远程监控;
2.报警功能添加:增加蜂鸣器与LED灯,当参数超出阈值时本地报警;
3.多传感器扩展:接入CO₂传感器、PM2.5传感器,构建更全面的环境监测网络;
用户交互优化:增加按键调节阈值,支持通过OLED菜单设置采样周期与通信波特率。
本设计成功实现了一套基于STM32L151低功耗微控制器和LoRa远距离通信技术的环境参数监测系统,
核心成果包括:
- 硬件架构:采用模块化设计,集成多传感器采集、本地显示、双通道数据传输(串口+LoRa),优化电源管理实现低功耗运行。
2.软件设计:
实现光照传感器非线性校正算法(500-10000Lux误差<3%)
开发SHT11高可靠性温湿度采集驱动(CRC校验)
构建中文点阵OLED显示界面
设计定时中断唤醒机制降低功耗
3.通信能力:验证LoRa在复杂环境下的1.2km可靠传输能力4.实测性能:满足设计精度要求(温±0.7℃/湿±0.4%RH/光±1.5%),平均功耗15mA
1.光照标定优化:当前转换公式在低照度(<200Lux)误差较大,需增加多点标定
2.外壳防护缺失:需设计IP54防护外壳以适应户外场景
3.通信协议简化:LoRa传输采用原始字符串,应升级为二进制协议提升效率
4.动态功耗调控:未实现根据电池电压动态调整采样频率的算法
本系统可向以下方向持续演进:
- 组网能力升级:部署LoRaWAN网关,支持百级节点大规模组网
- 边缘计算赋能:在STM32端实现简单决策(如异常数据过滤、阈值判断)
- AI模型集成:接入云端机器学习平台,实现环境参数预测与优化控制
4.标准化兼容:支持Modbus等工业协议,对接SCADA系统
>结论:该系统为物联网环境监测领域提供了一种低功耗、远距离、易部署的解决方案,在智慧农业、工业监控、智能家居等领域具有显著应用价值。通过持续的功能拓展与性能优化,有望成为环境物联网(EIoT)的基础感知单元。