周三下午,我的番茄苗又蔫了。
不是缺水,是浇多了。土壤传感器显示湿度85%,但我三天前才浇过。这种"凭感觉"的种植方式,让我在过去半年里养死了四盆罗勒。于是我决定:用代码解决这个古老问题。
ESP32 Garden 就此诞生。这是一个端到端的农业物联网监控系统,用30美元的硬件成本,把阳台变成了数据驱动的微型农场。
硬件架构:边缘计算的极简实践
核心选用ESP32微控制器。不为别的,就图它内置Wi-Fi,省掉额外的通信模块。处理性能对付传感器数据采集绰绰有余,功耗也足够低,USB供电就能跑。
传感器阵列四件套:
1. DHT11:空气温湿度,最基础的植物环境指标
2. 土壤湿度传感器:电容式,测的是土壤体积含水量,比电阻式耐用
3. 雨滴传感器:检测降水事件,雨天自动跳过浇水逻辑
4. SSD1306 OLED屏:本地实时读数,不用每次都掏手机看网页
户外部署有个现实问题:泥土和湿气是电路板的死敌。我设计了一个3D打印的小房子造型外壳,把ESP32和线材全包进去,只留传感器探头外露。STL文件开源在GitHub,支持免支撑打印。
软件栈:四个模块,各干各的
整个系统拆成四层,每层独立演进,互不影响。
第一层:固件(C++/Arduino)
ESP32跑一个轻量级Web服务器,但不渲染HTML——那太耗资源了。它只暴露一个REST端点 /json,被请求时返回结构化JSON:
{
"temperatura": 24.5,
"humedad_amb": 68,
"suelo": 42,
"lluvia": 0
}
这种设计让微控制器专注于一件事:采集数据。渲染和存储交给后面环节。
第二层:数据摄取服务(Python后台进程)
一个Python脚本作为守护进程运行,定时轮询ESP32的API,把读数写入时序数据库。这里的关键是"定时"——我设的是每5分钟一次,既能捕捉环境变化,又不会把Flash写坏。
第三层:桌面管理GUI(PyQt)
非必需,但方便。可以实时查看传感器状态、手动触发数据抓取、调试硬件连接。开发阶段救了我很多次。
第四层:Web可视化面板
历史数据用图表呈现,支持按天/周/月缩放。核心功能是"对比视图"——把土壤湿度曲线和浇水记录叠在一起看,一眼就能发现"浇完水多久开始干"的规律。
实际运行中的发现
系统跑了一个月后,几个反直觉的数据浮出水面。
我的番茄盆,表层土看着干裂,但传感器显示深层湿度还有35%。原来毛细作用让水分分布极不均匀,肉眼判断完全失效。调整成"深层湿度低于25%才浇水"后,烂根问题消失了。
另一个发现:雨天传感器偶尔会误报。不是硬件问题,是叶片滴水落在感应区。加了一个"连续30秒检测到降水才确认"的软件滤波,误触发率从每天2-3次降到零。
成本与扩展性
整套硬件BOM成本约30美元,其中ESP32开发板5美元,传感器套件8美元,3D打印耗材忽略不计。代码全开源,部署文档写到了"插哪根线、填哪个Wi-Fi密码"的粒度。
架构预留了扩展接口。JSON格式加了版本字段,后续增加CO2传感器或光照探头,老数据不会解析失败。微服务拆分也意味着,哪天ESP32算力不够了,可以无缝迁移到ESP32-S3或树莓派Pico W,只改固件层,上层逻辑不动。
这个项目最满意的不是技术实现,是种植结果的改善。同一批番茄种子,去年收成1.2公斤,今年到目前已经2.7公斤,而且没再出现过因浇水不当导致的植株死亡。
数据驱动的农业,不一定需要万亩良田。一个阳台、一块开发板、几行Python,就够了。
热门跟贴