news 2026/4/18 13:57:04

【单片机毕业设计】基于STM32与蓝牙的智能盆栽灌溉系统设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【单片机毕业设计】基于STM32与蓝牙的智能盆栽灌溉系统设计

1. 项目背景与核心功能

家里养绿植的朋友应该都有过这样的体验:出差几天回来,发现心爱的盆栽要么干枯发黄,要么积水烂根。传统的定时浇水方式很难适应不同植物的需求,而手动浇水又太依赖人的记忆。这就是为什么我们需要一个能自动感知土壤湿度、远程控制的智能灌溉系统。

这个毕业设计项目使用STM32F103C8T6单片机作为大脑,搭配蓝牙模块实现手机远程操控。实测下来,系统可以稳定实现三大核心功能:

  • 智能监测:通过土壤湿度传感器实时检测含水量,精度能达到±3%RH
  • 自动灌溉:当湿度低于设定下限时自动启动水泵,超过上限自动停止
  • 远程控制:用手机蓝牙连接后,可以查看实时数据、手动开关水泵、调整阈值

我去年帮学生调试这个项目时,发现加上OLED显示屏后体验提升明显。屏幕不仅能显示当前湿度和阈值,还能直观看到水泵工作状态,比单纯用LED指示灯友好得多。

2. 硬件设计详解

2.1 核心部件选型

主控芯片选择STM32F103C8T6是经过实际对比的。相比STC89C52,它的优势非常明显:

参数STM32F103C8T6STC89C52
主频72MHz11.0592MHz
Flash64KB8KB
RAM20KB512B
ADC通道10位精度×16通道需外接ADC芯片
开发环境Keil MDK/STM32CubeIDEKeil C51

蓝牙模块推荐HC-05,价格便宜(约15元)且稳定。我在测试时发现,它的有效传输距离在无障碍环境下能达到8米,完全满足家庭使用。注意要买带底板的那种,直接引出VCC、GND、TXD、RXD四个引脚,接线更方便。

2.2 传感器电路设计

土壤湿度传感器建议用YL-69,它的探针做了镀金处理,比普通不锈钢的更耐腐蚀。接线时要注意:

// STM32引脚配置 #define SOIL_SENSOR_PIN PA0 // 接AO引脚 void ADC_Init() { RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; ADC1->CR2 = ADC_CR2_ADON; // 其他配置省略... }

实测中发现一个常见问题:传感器长期插在土里会导致电解腐蚀。解决办法有两种:要么采用间歇供电(测量时才通电),要么选用电容式传感器(如SEN0193)。

3. 软件实现关键点

3.1 湿度控制逻辑

主控制程序采用状态机设计,这是我在多个项目中验证过的稳定方案:

typedef enum { STATE_NORMAL, STATE_DRY, STATE_WATERING, STATE_TOO_WET } SystemState; void ManageWatering() { static SystemState state = STATE_NORMAL; uint16_t humidity = GetSoilHumidity(); switch(state) { case STATE_NORMAL: if(humidity < HUMI_MIN) { StartPump(); state = STATE_WATERING; } break; case STATE_WATERING: if(humidity > HUMI_MAX) { StopPump(); state = STATE_NORMAL; } break; // 其他状态处理... } }

3.2 蓝牙通信协议

为了让手机APP能稳定通信,我设计了一套简单的协议格式:

[HEAD][LEN][CMD][DATA][CHECKSUM]

其中:

  • HEAD固定为0xAA
  • LEN是DATA长度
  • CMD包括0x01(读取数据)、0x02(设置阈值)等
  • CHECKSUM是异或校验

在STM32端,用串口中断接收数据:

void USART1_IRQHandler() { if(USART1->SR & USART_SR_RXNE) { uint8_t ch = USART1->DR; // 解析协议... } }

4. 低功耗优化技巧

很多同学忽略了一个问题:系统要长期插电工作,功耗很重要。通过实测发现几个优化点:

  1. 传感器供电控制:用MOS管控制传感器电源,测量时才通电
  2. STM32睡眠模式:在空闲时进入Stop模式,功耗从25mA降到0.5mA
  3. 蓝牙模块配置:AT+ROLE=0设置从模式,AT+PSAV=1开启低功耗

我的测试数据显示,优化后系统待机电流从58mA降到了3.2mA,用2000mAh的充电宝可以连续工作25天。

5. 常见问题解决方案

在实验室带学生做这个项目时,最常遇到三个问题:

问题1:蓝牙连接不稳定

  • 检查天线是否完全展开
  • 避开2.4G干扰源(如WiFi路由器)
  • 修改AT+UART=115200,0,0提高波特率

问题2:水泵启动导致系统复位

  • 在继电器线圈加续流二极管
  • 给STM32加1000μF电容
  • 电源线要足够粗(建议18AWG)

问题3:土壤湿度读数跳变

  • 在软件中做滑动滤波
#define FILTER_LEN 5 uint16_t FilterValue(uint16_t new_val) { static uint16_t buf[FILTER_LEN]; static uint8_t index = 0; buf[index++] = new_val; if(index >= FILTER_LEN) index = 0; uint32_t sum = 0; for(int i=0; i<FILTER_LEN; i++) sum += buf[i]; return sum / FILTER_LEN; }

6. 扩展功能建议

如果想拿高分,可以考虑这些加分项:

  1. 多盆栽管理:用74HC595扩展IO,控制多个水泵
  2. 历史数据记录:加SPI Flash存储30天数据
  3. 微信小程序控制:换ESP8266模块,成本只增加10元
  4. 光照联动:加BH1750传感器,根据光线调整浇水策略

去年有个学生加入了植物生长灯控制,在答辩时演示自动补光功能,最后拿了优秀毕业设计。其实硬件上只是多了个MOS管驱动电路,但展示效果很好。

7. 实物制作注意事项

打PCB时推荐用嘉立创的SMT贴片服务,比自己焊接省事很多。几个实用建议:

  • 板子尺寸控制在10×10cm内(打样5元)
  • 所有IO口引出测试点
  • 电源走线宽度不小于0.3mm
  • 预留SWD调试接口

测试时一定要先烧录这个死循环程序,确认所有电源电压正常:

while(1) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); HAL_Delay(500); }

最后提醒大家,答辩前准备个漂亮的亚克力外壳,淘宝定制大概30元,比裸板演示专业得多。记得在侧面开孔露出土壤传感器,方便评委观察。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:59:26

通义千问3-VL-Reranker-8B在短视频推荐系统中的落地实践

通义千问3-VL-Reranker-8B在短视频推荐系统中的落地实践 【一键部署镜像】通义千问3-VL-Reranker-8B多模态重排序服务 镜像地址&#xff1a;https://ai.csdn.net/mirror/qwen3-vl-reranker-8b?utm_sourcemirror_blog_title 短视频平台每天产生数千万条新内容&#xff0c;用户…

作者头像 李华
网站建设 2026/4/18 8:12:36

STM32CubeMX|HAL库实战:软件模拟IIC通信的时序优化与调试技巧

1. 软件模拟IIC通信的核心挑战 在嵌入式开发中&#xff0c;IIC通信是最常用的总线协议之一。但很多开发者在使用STM32硬件IIC时都遇到过各种问题&#xff1a;从机无响应、数据错乱、死锁等。这些问题往往源于硬件IIC对时序的严苛要求。相比之下&#xff0c;软件模拟IIC虽然速度…

作者头像 李华
网站建设 2026/4/18 9:42:50

RTX 4090显存优化:造相-Z-Image防爆策略解析

RTX 4090显存优化&#xff1a;造相-Z-Image防爆策略解析 你有没有遇到过这样的情况&#xff1a;刚在RTX 4090上加载Z-Image模型&#xff0c;输入提示词点下生成&#xff0c;还没看到图&#xff0c;控制台就跳出一长串红色报错——CUDA out of memory&#xff0c;显存直接爆掉&…

作者头像 李华
网站建设 2026/4/17 11:58:38

毕业设计实战:Python驱动的大规模气象数据分析与动态可视化平台

1. 项目背景与需求分析 最近几年&#xff0c;气象数据分析和可视化变得越来越重要。不管是农业种植、物流运输&#xff0c;还是城市管理&#xff0c;准确的天气信息都能帮我们做出更好的决策。我去年做毕业设计时&#xff0c;就遇到了一个实际问题&#xff1a;传统的气象预报系…

作者头像 李华
网站建设 2026/4/18 5:31:13

ccmusic-database音乐AI实战:Python调用CQT+VGG19_BN模型避坑指南

ccmusic-database音乐AI实战&#xff1a;Python调用CQTVGG19_BN模型避坑指南 1. 这不是普通的音频分类——它把听歌变成了“看图识物” 你有没有试过&#xff0c;把一段30秒的钢琴曲丢给AI&#xff0c;几秒钟后它告诉你&#xff1a;“这是古典室内乐&#xff0c;置信度87%”&…

作者头像 李华