基于物联网的珍贵花卉智能养护系统设计与实现
作者: 赵正光
摘要:为了降低花卉死亡率,本文设计并实现了一套基于LoRa 无线通信技术的智能花卉养护系统。该系统采用STM32F103作为主控芯片,移植FreeRTOS 实时操作系统进行任务管理,集成多种环境传感器,实现对花卉生长环境的实时监测。系统利用LoRa 技术将数据传输至终端,为养护花卉人员提供可视化的数据支持,并最终提供花卉养护指导。实验结果表明,该系统具备低功耗、远距离通信和高精度等优点,具有一定的应用价值。
关键词:物联网; 养护系统; 珍贵花卉; LoRa 无线通信技术; STM32; 传感器; FreeRTOS
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2025)06-0103-03开放科学(资源服务)标识码(OSID):
0 引言
近年来,随着人们生活水平的提高,花卉市场需求不断扩大,但因花卉养护不当而造成的经济损失也日益严重,高昂的植物养护成本已成为限制花卉行业高质量发展的主要障碍[1]。目前,在花卉养护领域,人们在日常生活中大多仍采取传统方式,培养在陶瓷或塑料等器皿内,手动浇水,且人工判断主观性强,缺乏实时数据支持。虽然近年来市场上出现了一些机械式半自动浇灌装置,但这些装置很难根据土壤湿度或植物习性来控制浇水量,且无法实现远程监控。因此,此类产品因功能单一和智能化不足等原因未能在市场上普及。
为了解决这些问题,本设计基于STM32F103的花卉养护系统[2],实现了对花卉光照强度、土壤温湿度、酸碱度、氮磷钾含量等环境数据的检测。检测结果通过LoRa组网无线通信进行传输并存储[3],使用者可通过OLED显示屏或上传至PC进行后台监控,从而确保花卉生长环境的稳定与健康。该系统具有低功耗、稳定性强以及远距离传输等优点,具有一定的实时性和智能性。
1系统整体方案设计
系统主要由主控单片机模块、各类数据监测传感器模块、无线通信模块、显示模块和存储模块构成,所有传感器和模块之间均可通过单片机进行交互通信。传感器主要采用BH1750光照传感器、YL-69土壤温湿度传感器、SN-3000-TR土壤酸碱度传感器[4]以及氮磷钾传感器[5]。无线通信模块选用能够进行长距离稳定传输的LoRa通信模块Ra-01及SX1278。此外,系统外置了W25Q128存储器模块和OLED显示模块,以增强系统的数据存储与可视化能力,从而确保花卉环境数据的真实性和完整性。图1所示为该系统的整体框架结构图。
1.1 单片机主控模块
该花卉养护系统采用基于ARM Cortex-M3内核的32 位微控制器STM32F103C8T6,封装类型为3L.Q6FVP,4具8,备其2主0K频B的可S达RA7M2M,配Hz有,供2个电看电门压狗范定围时为器(2.0独~立看门狗IWDG和窗口看门狗WWDG),1个24位向下计数的滴答定时器SysTick,并配备丰富的外设接口,可接入传感器模块,包括但不限于SPI、IIC、USART、ADC、USB等。此外,其GPIO能够配置为多种输入输出模式,满足该系统在低功耗和高效能应用场景下的需求。该主控芯片的原理图如图2所示。
1.2 数据采集模块
1)光照传感器模块。系统采用BH1750光照传感器,该模块是一款数字型光照强度传感器,具备接近视觉灵敏度的光谱灵敏度特性,能够较为精准地测量周围环境的真实光照强度,其测量范围为0~65535lx,最小误差为±20%,并且对红外线的影响很小。BH1750通过IIC通信协议与单片机主控模块进行通信。当进入光窗的光强度越大,光电流随之增大,从而使电压增大,通过电压大小判断光照强度。
2)温湿度传感器模块。系统采用YL-69温湿度传感器,该模块主要由两个金属板组成,金属板之间填充了土壤作为介质。当土壤中含有水分时,水分会在两个金属板之间形成一个电容,其大小与土壤中的水分含量成正比。传感器测量电容的变化,并将其转换为电压信号输出。在STM32主控芯片端,需要实现一个ADC模数转换器以处理接收到的模拟数据,将其转换为数字信号,从而实现对土壤湿度的测量。其测量范围为0%~100%RH,精度为±5%RH,工作温度范围为-10~70℃。
3)酸碱度、氮磷钾传感器模块。系统采用 SN-3000-TR集成传感器,该模块是一种多功能土壤数据检测传感器,能够检测土壤的酸碱度和氮磷钾含量。在检测酸碱度时,探头采用p电极,信号稳定且精度高。传感器的输人电源和信号输出三部分完全隔离确保了安全性。其最大功耗在5V DC供电下为0.4W量程为 3~9pH,分辨率为0.1,工作温度范围为-20-60℃,响应时间小于10秒。在检测氮磷钾含量时,最大功耗为0.15W,量程为0~1999mgkg,分辨率为1mgkg,工作温度范围为-20~60℃℃,响应时间小于10秒,通过RS485协议与主控芯片进行通信。
1.3数据传输模块
1)LoRa 无线通信模块。系统采用Ra-01 和SX1278模块,该模块是一款LoRa无线通信模块,具备标准的LoRa™调制解调器,支持多种调制方式,包括FSK、GFSK、MSK、LoRa™以及OOK等。其支持频段为141400d~B52m5。MH硬z件,工接口作方电面压,模为块3采.3V用,S灵PI敏接口度,低支持至半-双工通信,并具有CRC校验功能,能够处理高达256 字节的数据包引擎。天线接口兼容多种接法,如邮票孔/圆孔和IPEX等。
1.4 数据处理模块
1)OLED显示模块。0.96寸OLED显示屏模块是一种小型显示屏,采用高亮PM OLED材料,通常用于嵌入式系统或小型设备,能够方便地显示即时数据。其分辨率为128×64,控制芯片为SSD1306,显示区域可 达 到 21.744×10.846mm,像 素 尺 寸 为 0.159× 0.159mm,像素间距为0.175×0.175mm,正常显示时功耗为0.04W,供电电压为3.3~5V,工作温度范围为- 30~70℃,通过IIC协议与主控芯片进行通信。
2)存储模块。W25Q128是一款串行NOR型闪存芯片,具有4 I/O固定、UID和OTP特性,支持易失性和非易失性状态寄存器,具备块/扇区写保护及可编程输出驱动强度等功能。该芯片广泛应用于需要非易失性存储的嵌入式系统和设备中,能够永久保存数据,断电后数据仍然存在。其存储容量为128Mb(16MB),由36.565V3,6工页作组温成度,范每围页为包-含402~5865℃字,节通,过工S作PI电协压议与为主2.7控~芯片进行通信。
2 系统软件设计
2.1整体软件设计
该系统的软件设计主要包括系统初始化、花卉环境数据采集、通信和数据显示监控四个部分。为了保证系统的流畅性和实时性,我们移植了FreeRTOS实时操作系统,并在此基础上进行后续的代码开发。由于该系统为开源项目,用户可以登录官网下载源码,并将源代码添加到STM32工程中。然而,该源码无法直接使用,需要配置FreeRTOSConfig.h文件,以调整FreeR⁃ TOS的行为,包括任务堆栈大小、任务优先级、SysTick 时钟节拍等。同时,添加heap_4.c作为本系统的内存管理方法。由于全部代码部分选择使用Keil5软件进行开发,因此需要保留源码中FreeRTOS/portable/RVDs 文件夹中的ARMCM3文件夹,以便与Keil5工程项目接口对接。编程语言为C语言,使用STM32标准库辅助开发,完成代码后,将其烧录至STM32单片机,并在上电后即可正常使用。软件流程图如图3所示。
2.2传感器数据采集单元设计
1)光照传感器模块。该模块使用IIC与单片机进行通信,这里选择STM32的IIC1。首先,需要使能单片机PB端口的时钟,开启PB6和PB7,并配置为上拉推挽输出模式,默认速率设为快速模式,以确保SCL 时钟信号和SDA数据信号的正确连接和处理。当IIC 总线进行数据传送时,有三种类型的信号是必须要用到的:起始信号、终止信号以及回应信号。其中,SCL 拉高时,SDA线从拉高到拉低的变化代表起始信号;而当SCL拉高时,SDA线从拉低到拉高的变化则表示终止信号。在IIC传输数据过程中,需要借助SCL时钟线逐位传输8位数据,每传输完8位数据后,需要等待响应。数据采集流程大致如下。
初始化BH1750;
跳过ROM;
把数据写入暂存器,之后在暂存器中读取数据;精度转换,进行读取采集数据,保留一位小数;数据采集完毕。
2)温湿度传感器模块。该模块通过RS485与单片机进行通信,使用USART外设的TX和RX引脚连接到RS485芯片的A和B线,并将DE/RE引脚连接到RS485芯片的控制引脚。总线空闲时,线上为高电平。起始位为一位逻辑0信号帧,表示传输的开始。数据位可以为7位或8位。若启用校验位,则逻辑1的位数应为偶数或奇数,具体取决于所选的奇偶校验方式;若不启用校验,则该位由一位数据帧替代。停止位可以是一位或两位逻辑1,用以标志一个数据字符的传输完成。数据采集流程大致如下。
初始化YL-69;
IO拉高,YL-69响应;
IO拉高,延时,传输数据;
先低后高读取采集数据;
数据采集完毕。
3)酸碱度、氮磷钾传感器模块。该模块同样通过RS485与单片机进行通信,配置过程与之前相同。该模块采集到的数据来自电阻式压敏传感器,该传感器利用外部施加的压力改变电阻值,从而进行模拟压力采集,并生成模拟信号。在实际应用中,需要通过ADC模数转换器将模拟信号转换为数字信号进行采集。首先,需要对采集通道进行配置,这里选择的采集通道为ADC_CHANNEL_0,设置优先级为1,采样时间设定为3个周期。数据转换完成后,将及时更新监测结果。数据传输采集大致如下。
系统初始化;
转换模拟通道;
采集数据;
进行A/D转换,读取数据;
数据传输,结束检测。
系统如果检测到某项数据超过阈值,意味着当前的花卉生长环境可能会对花卉造成不良影响。本系统利用STM32通过三极管驱动LED发光二极管来提供视觉警示效果,并激活蜂鸣器实现声音报警,提醒养护人员及时处理应对措施。
2.3 LoRa 无线通信单元设计
LoRa 通常有三种工作模式:Class A、Class B 和Class C。三种工作模式的具体区别如下:
1)Class A 为最基本的工作模式,设备之间能够双向通信。设备在发送数据后,会等待一个由基站设定的时间窗口,以接收来自基站的响应。该模式功耗较低,但只能在特定的时间窗口内接收数据,因此其实时性有所限制。
2)Class B 在具备Class A特点的基础上,增加了定时广播的功能,能够更灵活地在时间窗口内接收数据,提高了实时性。
3)Class C 是三种工作模式中实时性最高的模式,但由于接收窗口几乎全程打开,其功耗也会非常高。该模式主要用于接收紧急信号或救援信号,需要稳定持续的电源供给。
由于本系统无须时刻打开接收窗口,且没有大规模的供电条件,因此选择使用Class B工作模式,该模式既具有低功耗特性,又能在一定程度上保障实时性。
在配置LoRa 之前,由于接口被占用的原因,需要禁止STM32 的JTAG,从而使PA15 可以复用为普通IO端口。首先使能PA 端口时钟,配置模式为下拉推挽输出,速率为50 MHz,抢占优先级设置为2。接着配置LoRa通信参数,将LORA_MD0 置为1进入配置模式,设置为一般传输模式和透明传输,设置发射功率为20 dBm,信道为24,空中速率为2.4 kbps,休眠时间为1秒,模块地址为2,波特率为115200,无校验模式,最后将LORA_MD0 置为0 以退出配置模式。