基于STM32的花卉种植信息化监管系统设计(多传感器采集+自动联动+手机APP远程控制)
基于STM32的花卉种植信息化监管系统设计(多传感器采集+自动联动+手机APP远程控制)
养花这件事,十个人里八个靠"感觉":浇水看心情,晒太阳看天气,土是酸是碱全凭猜。可花卉对土壤湿度、光照强度、酸碱度、水质这些环境参数相当敏感,一个疏忽就是黄叶烂根。本文基于 STM32F103C8T6 设计一套花卉种植信息化监管系统:土壤湿度、光照、pH 值、水质浊度、环境温度五路传感器实时采集,OLED 本地显示 + ESP8266 上传机智云平台,手机 APP 随时查看;自动模式下光照不足自动开补光灯、土壤干了自动启水泵、温度超标自动开风扇,手动模式下 APP 远程控制设备并实时修改阈值,还有一个月历史数据云端查询,让养花从"凭经验"升级为"看数据"。
一、系统功能总览
| 功能模块 | 实现方式 | 作用 |
|---|---|---|
| 土壤湿度监测 | YL-69 电阻式传感器(ADC) | 实时采集土壤湿度,低于阈值自动启动水泵补水 |
| 光照监测 | BH1750 数字光强传感器(I2C) | 光照不足时自动开启 LED 补光灯 |
| pH 值监测 | E-201 酸碱检测模块(ADC) | 掌握土壤/营养液酸碱度,避免环境超适宜范围 |
| 水质监测 | SEN0189 红外浑浊度模块(ADC) | 监测浇灌用水浑浊度,输出百分比指标 |
| 温度监测 | DS18B20 数字温度传感器 | 温度过高时自动启动风扇降温 |
| 本地显示 | OLED12864(I2C,SSD1306) | 五路参数实时本地显示 |
| 云端管理 | ESP8266-01S + 机智云平台 + 手机 APP | 数据云端上传、远程控制、阈值调整、模式切换、历史数据查询 |
| 异常报警 | 蜂鸣器(低电平触发) | 参数越限本地声音提示 |
系统设计了自动与手动两种工作模式:自动模式下按预设阈值智能联动补光灯、水泵、风扇三类执行设备;手动模式下用户通过 APP 直接控制设备开关并实时修改阈值参数,两套模式可在 APP 上一键切换。
二、核心模块选型对比
2.1 主控模块选型
| 方案 | 芯片 | 特点 |
|---|---|---|
| 方案1 | STM32F103C8T6 | ARM Cortex-M3,72MHz,64KB Flash / 20KB SRAM,37 个 GPIO,自带 12 位 ADC,3 个 USART、2 个 I2C,低功耗,开发工具与社区资源丰富 |
| 方案2 | NXP LPC1768 | 同为 Cortex-M3,主频 120MHz,512KB Flash / 64KB SRAM,70 个 GPIO,性能更强 |
系统要采集四路模拟传感器 + 单总线温度 + I2C 光照与显示 + 串口 WiFi,STM32F103C8T6 的外设配置完全够用,性价比更高。选择方案1:STM32F103C8T6。
2.2 土壤湿度检测选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | YL-69 | 电阻式,双探针测土壤电阻转湿度值,成本低、接口简单、易于集成 |
| 方案2 | AM2120 | 电容式,耐用性与防水性更好,测量更稳定,但价格更高 |
花卉种植为常规周期性监测场景,预算敏感。选择方案1:YL-69,性价比之选。
2.3 光照检测选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | BH1750 | 数字光强传感器,直接输出数字信号免模数转换电路,线性度好,宽光照范围内读数稳定 |
| 方案2 | TSL2561 | 高精度数字光电传感器,宽动态范围,性能优异但成本更高 |
补光控制需要以 lux 为单位的稳定读数。选择方案1:BH1750,精度满足需求且成本占优。
2.4 pH 值检测选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | E-201 | 测量精度 ±0.1pH,量程 pH0~14,内置放大电路,抗电磁干扰能力强 |
| 方案2 | SEN0161 | 价格低、集成简单、免复杂校准,精度约 ±0.2pH |
土壤酸碱度直接影响花卉对养分的吸收,精度要求较高。选择方案1:E-201。
2.5 水质检测选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | SEN0189 | 红外 LED(850nm)+ 光电探测器测散射光强,模拟电压输出,对水体颜色变化不敏感,稳定性好 |
| 方案2 | SEN0176 | 激光光源,分辨率极高,可检测细微颗粒,适合精密水质监测 |
浇灌用水只需评估浑浊度趋势。选择方案1:SEN0189,成本低、稳定性好。
2.6 温度检测选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | LM35 | 模拟温度传感器,线性度好,范围 -55℃~+150℃,输出模拟电压需接 ADC |
| 方案2 | DS18B20 | 数字温度传感器,-55℃~+125℃ 高精度,单总线协议免模数转换,支持多传感器共线扩展 |
数字输出省去 ADC 占用,单总线便于后续多点测温扩展。选择方案2:DS18B20。
2.7 数据显示选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | OLED12864 | 128×64 自发光,对比度高、广视角、响应快,低功耗适合长期运行 |
| 方案2 | ILI9341 TFT | 240×320 彩色显示,信息量大,但功耗与成本更高 |
五路参数的数值显示用单色屏绰绰有余。选择方案1:OLED12864。
2.8 无线通信选型
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | ESP8266-01S | WiFi 802.11 b/g/n,室内覆盖 50-100 米,速率最高 72.2Mbps,集成调试简单,经济实用 |
| 方案2 | QCA4020 | 多协议模块(蓝牙5.0/WiFi/Zigbee/Thread),适合复杂异构网络场景 |
系统仅需 WiFi 单一通道上云。选择方案1:ESP8266-01S。
三、系统接线总表
| 模块 | 与 STM32F103C8T6 的连接 | 关键引脚说明 |
|---|---|---|
| YL-69 土壤湿度 | VCC→5V,GND→GND,OUT→ADC 输入引脚 | 双探针电阻信号经调理电路输出模拟电压 |
| BH1750 光照 | VCC→3.3V~5V,GND→GND,SCL→I2C 时钟,SDA→I2C 数据 | 数字输出,单位 lux |
| E-201 pH 传感器 | VCC→3.3V,GND→GND,OUT→ADC 输入引脚 | 模拟电压反映 pH 变化 |
| SEN0189 浊度模块 | VCC→5V,GND→GND,AO→ADC 输入引脚 | 850nm 红外散射,模拟输出 |
| DS18B20 温度 | VDD→3.3V,GND→GND,DQ→数字 IO | DQ 与 VDD 间并联 4.7kΩ 上拉电阻 |
| OLED12864 | VCC→3.3V,GND→GND,SCL→I2C 时钟,SDA→I2C 数据 | SSD1306 驱动 |
| ESP8266-01S | VCC/CH_PD/GPIO0/GPIO2→3.3V,GND→地,TXD/RXD 交叉接 USART2,RST 复位控制 | PA8 复位:拉低 500ms;5V 逻辑需电平转换 |
| 补光灯/水泵/风扇 | 控制端→GPIO(继电器驱动) | 自动模式按阈值联动,手动模式 APP 控制 |
| 蜂鸣器 | 正极→VCC,负极→三极管集电极,基极经限流电阻接 GPIO | 低电平触发:输出低电平三极管导通发声 |
| 时钟/复位 | HSE 8MHz 晶振(PLL 倍频至 72MHz)+ RTC 32.768kHz;NRST 接上拉电阻与复位按键 | 保证系统时钟与稳定复位 |
四、系统软件设计
4.1 主程序设计
系统上电后完成单片机、ESP8266、OLED 与各传感器的初始化,进入主循环:周期采集五路参数→OLED 实时显示→上传机智云平台供 APP 查看;自动模式下按阈值联动设备,手动模式下解析 APP 下发的控制指令与阈值修改。主程序骨架如下:
int main(void)
{
/* 系统初始化 */
Sys_Init(); // 时钟、GPIO、定时器
ADC_Init(); // ADC1/ADC2:湿度、pH、浊度通道
I2C_Init(); // BH1750 + OLED
DS18B20_Init(); // 单总线温度
OLED_Init(); // SSD1306 初始化
ESP8266_Init(); // PA8复位→STA模式→连WiFi→透传→TCP连接
while (1)
{
moisture = Get_SoilMoisture(); // ADC多次采样取平均→换算湿度
lux = BH1750_Read(); // I2C读两字节→原始值/1.2
ph = Get_PhValue(); // ADC平均→电压=ADC*3.3/4096→pH
turb = Get_Turbidity(); // ADC平均→电压→浊度百分比
temp = DS18B20_GetTemp(); // 复位→0x44→0xBE→(高<<8|低)*0.0625
OLED_ShowAll(moisture, lux, ph, turb, temp); // 本地显示
ESP8266_Report(); // 上传机智云
if (mode == AUTO) { // 自动模式联动控制
if (lux < LUX_TH) LED_Grow(ON); // 光照不足开补光灯
if (moist < MOI_TH) Pump(ON); // 土壤干启动水泵
if (temp > TEMP_TH) Fan(ON); // 温度过高开风扇
} else {
Process_APP_Cmd(); // 手动模式:解析APP指令
} // (含阈值修改与模式切换)
if (Param_Alarm()) Buzzer_On(); // 参数越限本地报警
}
}
4.2 模拟量采集程序(湿度/pH/浊度)
三路模拟传感器共用同一套 ADC 流程:使能 ADC 时钟与 GPIO 时钟→引脚配置为模拟输入→复位并初始化 ADC(独立模式、单通道、单次转换、右对齐)→使能并完成校准→配置通道与采样时间→软件触发转换,轮询 ADC_FLAG_EOC 标志位等待完成→读取结果。每路均多次采样取平均值以抑制噪声,再按各自量程换算:pH 通道按 电压 = ADC值 × 3.3 / 4096 得电压后计算 pH 值,浊度通道将电压转换为浑浊度百分比。
4.3 光照检测程序
BH1750 走 I2C 协议:初始化 I2C 接口并设置时钟频率→发送 0x01 Power On 命令启动传感器,检查 ACK 确认通信正常→发送模式设置命令进入光强测量状态→I2C 读取两字节光强数据(高 8 位在前)→按公式 光照值 = 原始数据 / 1.2 换算为 lux 单位的实际光强。
4.4 温度检测程序
DS18B20 单总线时序:DQ 配置输出,拉低约 480μs 后拉高发送复位脉冲,等待传感器返回 60-240μs 响应脉冲确认在线→发送 0x44 启动温度转换,轮询等待约 750ms~1s→再次复位后发送 0xBE 读取命令,DQ 切为输入模式接收两字节数据(低字节在前)→按 (数据[1]<<8 | 数据[0]) × 0.0625 计算实际温度。
4.5 无线通信程序
ESP8266 经 USART2(115200 波特率)通信:PA8 配置为推挽输出,拉低 500ms 复位模块,检查缓冲区 “ready” 确认复位成功→AT+CWMODE=1 设 STA 模式→AT+CWJAP 连接 WiFi,返回 OK 即成功→AT+CIPMUX 关闭多路连接→AT+CIPSEND 进入透传模式(检测缓冲区 \r\nOK\r\n\r\n>)→AT+CIPSTART 与机智云 TCP 服务器建立连接,缓冲区显示 CONNECT 确认。链路稳定后,传感器数据周期上传,APP 下发的模式切换、阈值调整、设备控制指令经同一链路回传执行。
五、系统实现与测试
5.1 功能测试
| 测试项目 | 测试方法 | 测试结果 |
|---|---|---|
| 数据采集 | 在不同环境条件下采集五路参数 | 传感器输出准确,OLED 实时显示,数据采集精准 |
| 自动联动控制 | 模拟光照不足/土壤干燥/温度过高条件 | 补光灯、水泵、风扇按阈值及时触发,响应迅速、逻辑正确 |
| 无线通信 | 串口助手验证模块状态,APP 查看数据 | WiFi 连接稳定,数据实时上传机智云并同步 APP |
| 远程控制 | APP 切换模式、调整阈值、控制设备 | 指令响应准确及时,远程监控与管理功能完整 |
| 历史数据查询 | APP 查询云端存储记录 | 一个月内历史数据可正常查询 |
5.2 硬件与软件调试
硬件焊接优先完成主控电源、地线、晶振与复位电路,再依次接入传感器、显示与通信模块,严格遵循电平匹配要求。软件在 Keil 中模块化开发,经 ST-Link 烧录调试:断点验证 ADC、I2C、串口初始化,串口助手监控采集数据,调整 OLED 刷新频率验证显示同步,并借助逻辑分析仪核验 I2C 与 UART 的信号时序,最终系统稳定运行。
六、总结
这套花卉种植信息化监管系统用五路传感器把花卉生长环境"翻译"成了看得见的数据:YL-69 盯土壤湿度、BH1750 盯光照、E-201 盯酸碱度、SEN0189 盯水质、DS18B20 盯温度,OLED 本地显示叠加 ESP8266 机智云上云,自动模式按阈值联动补光灯/水泵/风扇,手动模式 APP 远程掌控一切,一个月历史数据支撑长期复盘。系统选型兼顾精度与成本,软硬件测试验证了采集准确性与控制响应速度,为家庭花卉养护和智慧农业小场景提供了一个经济高效、可扩展的信息化监管样板。
七、资料内容完整工程资料(原理图、PCB、代码、元件清单)

八、资料获取方式

更多推荐


所有评论(0)