前言

作为一个“植物杀手”,我家的绿萝换过7盆,多肉养成了“干花”,阳台的薄荷永远蔫头耷脑。痛定思痛,我决定用技术向“植物杀手”宣战——造一盆能自己“喝水”、会“报告”状态的智能花盆!

历时2个月,从选型硬件到调通AI模型,这台搭载STM32+Kendryte K210双芯的小设备,不仅能自动监测温湿度、土壤墒情,还能通过摄像头识别叶片状态,判断是否缺肥、是否有病虫害。更妙的是,它会把数据同步到手机APP,连出差一周都不怕“后院起火”。

今天,我把整个开发过程拆解成硬件选型、双芯协作、AI赋能、落地调试四个章节,分享给同样想玩点“聪明硬件”的你。(文末附关键代码片段+实物图,建议收藏实操!)

一、需求拆解:智能花盆到底要“多聪明”?

项目初期,我列了份需求清单,既要避免功能冗余,又要解决核心痛点:

  • 基础监测​:温湿度、光照强度、土壤湿度(解决“浇多少水”“什么时候浇”的问题);
  • 智能干预​:根据土壤湿度自动启停水泵(告别手动浇水);
  • 进阶诊断​:通过叶片图像识别判断植物健康状态(比如黄叶可能是缺氮,黑斑可能是病害);
  • 远程交互​:手机APP实时查看数据,接收异常提醒(出差也能云养花)。

二、硬件选型:双芯架构,各司其职

为了平衡成本、算力和开发难度,我选择了STM32F405作为主控+Kendryte K210作为AI协处理器的双芯方案:

1. 主控:STM32F405(负责“体力活”)

  • 优势​:Cortex-M4内核,72MHz主频,丰富的外设(UART、I2C、PWM),适合驱动传感器和水泵;
  • 搭配模块​:
    • 土壤湿度传感器(YL-69,模拟量输出,需ADC采样);
    • SHT30温湿度传感器(I2C接口,精度±0.3℃/±2%RH);
    • BH1750光照传感器(I2C接口,测量范围1-65535 lux);
    • 继电器模块(控制5V小水泵,低电平触发)。

2. AI协处理器:Kendryte K210(负责“脑力活”)

  • 优势​:RISC-V 64位双核,内置KPU(神经网络加速器),支持轻量级CNN模型,算力6TOPS,专为边缘AI设计;
  • 任务​:运行MobileNetV2简化版模型,识别叶片图像中的异常特征(黄叶、黑斑、虫洞)。

硬件连接示意图(附实物图)

[插入硬件连线图:STM32与K210通过UART通信,STM32驱动传感器和水泵,K210外接OV2640摄像头]

三、软件设计:从驱动到AI,手把手调通

1. STM32底层驱动开发

  • 传感器数据读取​:用HAL库实现SHT30的I2C读取(注意校准温度补偿)、BH1750的连续测量模式;
  • 水泵控制逻辑​:设定土壤湿度阈值(比如<30%启动,>60%停止),通过继电器高低电平控制;
  • 与K210通信​:通过UART发送“拍照指令”,接收K210返回的识别结果(JSON格式:{"status": "healthy", "confidence": 0.92})。

关键代码片段(STM32读取SHT30)​​:

float read_sht30_temp(void) {  
  uint8_t data[6];  
  HAL_I2C_Master_Transmit(&hi2c1, 0x44<<1, (uint8_t[]){0x24, 0x00}, 2, 100);  
  HAL_Delay(50);  
  HAL_I2C_Master_Receive(&hi2c1, 0x44<<1, data, 6, 100);  
  uint16_t raw_temp = (data[0]<<8) | data[1];  
  return -45 + 175 * (float)raw_temp / 65535;  
}  

2. K210端:模型训练与部署

  • 数据集准备​:收集1000张健康/黄叶/黑斑叶片图片(用手机拍摄,统一尺寸224×224),用LabelImg标注;
  • 模型训练​:基于MaixPy的KPU训练工具,将MobileNetV2量化为INT8,模型大小压缩至1.2MB;
  • 部署到K210​:通过kflash_gui烧录固件,调用sensor.run()启动摄像头,kpu.run_yolo2()执行推理。

效果验证​:测试集准确率91%,识别耗时仅80ms(满足实时性需求)。

四、落地调试:那些踩过的坑与解决方法

  • 坑1​:土壤湿度传感器易受电解液腐蚀,测了3次就失效。
    → 换用镀金探头的FC-28传感器,定期用去离子水清洗,寿命延长至半年。

  • 坑2​:K210识别黄叶时误判(把光照不足的深绿叶认成黄叶)。
    → 在模型输入前增加直方图均衡化,提升图像对比度;同时在STM32端记录光照强度,作为辅助判断条件。

  • 坑3​:手机APP推送延迟高(有时5分钟才收到提醒)。
    → 改用MQTT协议替代HTTP,配合EMQ X轻量级服务器,延迟降至200ms以内。

五、成果展示与未来规划

现在,这台智能花盆已稳定运行1个月:

  • 手机APP实时显示温湿度、土壤状态(附APP界面截图);
  • 成功预警2次土壤过干(自动浇水后恢复);
  • 识别出1次黄叶(提示补充氮肥,一周后新叶萌发)。

未来计划升级:

  • 加入CO₂传感器(针对室内植物);
  • 训练更复杂的模型(识别具体病害类型);
  • 开源全部硬件图纸和代码(已经在整理,预计下月初发布到GitHub)。

结语

从一块电路板到会“思考”的智能设备,创造的过程远不止代码和焊接——它是“植物杀手”对生命的敬畏,是工程师对细节的偏执,更是“造物者”最朴素的浪漫。

如果你也想动手做个属于自己的智能花盆,欢迎在评论区交流!有任何问题,我可以把硬件清单、模型文件打包分享~

(文末互动:你养死过最“顽强”的植物是什么?评论区抽3位送STM32开发板!)

配图建议​:

  1. 硬件实物全景图(花盆+传感器+摄像头);
  2. 电路连接特写(STM32与K210、传感器接线);
  3. 手机APP数据界面(温湿度、土壤湿度曲线);
  4. K210识别结果示例(健康叶/黄叶对比);
  5. 开发过程工作照(焊接、调试、植物对比)。

活动标签​:#嵌入式 #硬件开发 #开源硬件 #AIoT实践派 #DIY智能设备


作者说​:本文完全原创,所有代码、硬件方案均可复现。开发中参考了《STM32 HAL库开发实战指南》《Kendryte K210 AIoT开发手册》,在此致谢!希望能抛砖引玉,和更多同好一起玩转智能硬件~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐