资讯动态

ESP32土壤湿度监测系统实战:从传感器选型到Node-RED可视化

发布时间:2026/10/3 6:49:38 来源:尧图企业网站定制
放假前我把三盆绿萝浇透水两周后回来其中两盆叶尖发黄。不是缺水是水太多导致烂根。这些年养植物要么旱死要么涝死浇水全靠手指戳土表面干了不代表里面干了表面湿乎乎的底下的根系可能早就缺水了。后来我给自己定了个目标做一套IOT土壤监测系统让数据替我做判断什么时候该浇水、浇多少不再靠猜。这套系统说白了三层传感器节点负责采集土壤湿度和温度通过WiFi把数据送出去然后在一个本地页面上展示实时数值和趋势曲线顺便在土壤干过头的时候提醒我一声。硬件用了ESP32加几只电容式I2C土壤传感器软件走MQTT协议仪表盘用Node-RED搭建全程没有用任何云平台数据全部留在本地。这个方案成本不高一套下来两三百块钱而且所有零件都能买到现成的模块不需要自己焊复杂电路。如果你也在搞阳台种植、大棚育苗或者单纯对物联网采集链路感兴趣这篇文章里踩过的坑和总结的规律应该能帮你少走不少弯路。1. 为什么我要做这套系统浇水问题背后的真实需求1.1 手指戳土法为什么总是不靠谱先聊一个扎心的现实绝大多数人判断土壤干湿用的是手指戳土法指尖往下探一截觉得干了就浇水。但这个方法有两个先天缺陷。第一土壤水分不是均匀分布的。花盆表面那两三厘米晒得发白底下五六厘米可能还是湿的反过来表面看起来正常根系层因为排水不畅早就积水了。手指能探到的深度有限你摸到的永远是表层状态而植物真正依赖的是根区的湿度。第二不同深度、不同位置的土壤含水量差异很大。同一个花盆向阳面和背阴面、盆边和盆心蒸发速度和根系密度完全不同只摸一处根本代表不了整体。我做过一个测试同一盆土分别在表层0~2厘米、中间5厘米、底部10厘米放了三只传感器测出来的容积含水量分别是28%、46%、61%。表层看着快要干透根系层却还有充足水分。如果这时候听表层的一瓢水下去底部就会积涝。这套数据让我彻底信服了一个结论——不测量就没有判断依据靠体感和经验只能得到一个模糊的平均状态。1.2 数据要回答的问题远比该不该浇水多设计了这套系统之后我才发现一个土壤监测系统真正有价值的地方在于它能回答一串连续的追问当前土壤含水量到底是多少这是最基础的需要实时数值而不是有点干还行这种模糊描述。湿度变化的趋势是往上还是往下浇水之后土壤含水量应该快速上升再缓慢下降如果浇完水数值纹丝不动说明水根本没渗进根系层土可能板结了。一次浇水能维持多久记录每次浇水前后的数据就能算出这盆土在当前的季节、光照条件下大概几天需要补一次水。出门在外前这些数据对安排托管浇水特别有用。连阴天和大太阳天的蒸发差异到底有多大天气预报对植物的影响通过土壤湿度曲线看得一清二楚。我在项目边界上也做了一个明确取舍这套系统只做监测和预警不做自动浇灌。自动灌溉涉及电磁阀、水泵、管道和漏水保护故障面一下子变大了很多。先老老实实把数据链路跑通让数据指导人去浇水比一开始就搞全自动靠谱得多。2. 传感器和主控选型这些坑在图纸阶段就该避开2.1 电容式还是电阻式一个决定寿命的问题市面上常见的土壤湿度传感器分两大类电阻式和电容式。如果你去电商平台搜土壤传感器几块钱甚至一两块钱一个的就是电阻式的十来块以上的多半是电容式很多还带I2C接口。电阻式传感器的原理很简单两根金属探针插进土里利用土壤作为电阻湿度越高导电性越好测到的电压就越低。听起来合理但实际用起来问题很大。土壤中的水分并非纯水而是含有各种盐类的电解质溶液。当直流电通过探针持续流过电极时会发生电解反应金属离子被慢慢析出探针几个月内就会腐蚀发黑读数逐渐漂移最后干脆没法用。我自己用坏过好几个都是同一个死法读数越来越高取出来一看探针已经锈得不像样了。电容式传感器走的是另一条路。它不直接接触土壤导电而是把一圈铜箔包裹在防护层里利用土壤作为电介质的介电常数变化来感知水分。空气的介电常数大约是1干土大概在3~5而水的介电常数高达80。土壤里水分越多整个电容值变化就越明显电路把这种电容变化转换成频率或电压变化再经过ADC变成数字值。因为探针不参与导电就没有电解腐蚀问题寿命比电阻式的长很多。虽然不能像专业仪器那样精确到绝对含水量但作为趋势监测完全够用。所以我的结论很干脆别省这几块钱电容式是底线。2.2 为什么选ESP32而不是Arduino主控这块我一开始纠结过Arduino Uno家族最普及、资料最多但它是5V逻辑电平板上没有无线模块要联网就得外挂ESP8266或者串口WiFi模块两条板子之间还得做电平转换接线和调试都很繁琐。ESP32就不一样了3.3V逻辑WiFi和蓝牙都是内置的双核160~240MHz处理MQTT协议绰绰有余价格跟一块Arduino板子差不多。更重要的是ESP32支持深度睡眠deep sleep这对以后想用电池供电的户外场景是刚需。所以我最终选了ESP32开发板具体是ESP32 DevKitC那种最常见的板子IO口够用插上USB线就能烧录。2.3 I2C版传感器到底比模拟版好在哪土壤传感器接口又分两种模拟输出和I2C数字输出。模拟输出的传感器比如老款YL-69、DFRobot SEN0193只有一个模拟电压引脚接到主控的ADC上由主控自己完成模数转换和映射。这种方案便宜、代码直观但有个现实问题每只传感器要占一个ADC引脚板上ADC还可能有精度差异接多路得数引脚、走线很折腾。另外模拟量在长距离传输时非常容易受干扰线稍长一点读数就飘。I2C版本把ADC芯片集成在模块内部土壤的模拟信号在探头端就已经被量化成数字通过SDA/SCL两根线走I2C总线传输抗干扰能力好得多而且一条总线上最多可以挂几十个同地址的设备只要解决地址冲突扩展起来特别方便。我做了一个表格供你参考对比项电阻式模拟版电容式模拟版电容式I2C版售价3~8元8~15元15~40元寿命短容易电解腐蚀长长接线VCC/GND/AOUTVCC/GND/AOUTVCC/GND/SDA/SCL多路扩展占ADC引脚占ADC引脚总线挂载改地址即可抗干扰弱弱强精度低中中且数字输出多路扩展这里有一个特别容易忽视的坑同型号I2C传感器的默认地址都一样比如重型模块常见的是0x20或者0x22两只一模一样的探头直接挂同一根总线上I2C通信会冲突什么都读不出来。解决办法有几条路一是买那种带地址拨码开关的模块通过拨码改地址二是利用模块的某个引脚接不同的电平来切换地址三是实在不行就分时供电——每次只给一只探头通电测完再给另一只通电把同时在线变成轮流在线。我最终用的是第三种方案代码里按顺序给每个传感器上电、读取、断电逻辑简单还顺便解决了省电问题一举两得。3. 布线、布点和电源设计决定读数可信度的细节工程3.1 探头安装姿势别把整个模块埋进土里很多人拿到传感器直接往土里一插就完事了我一开始也这么干结果第一批探头读数越来越怪。问题出在安装方式上——模块的电路板部分沾上水和泥土后焊盘很快就爬上了电解质导致漏电流。正确做法是只有探针部分入土电路板露在外面悬空固定在花盆边缘或支架上。如果是室外场景电路板要做好防水处理用热熔胶封边或者干脆把模块装进一个小防水盒里只让探针伸出来。接线端子千万别裸露在可能溅水的位置我用的是带O型端子的防水航空插头虽然成本高一点但野外雨天是真能救命。埋探针的时候注意别太贴盆壁盆壁附近水分蒸发最快读数偏移明显也别和根系缠在一起换盆翻土的时候容易扯断线。理想位置是植物根系的活跃区域外围探针水平朝上或略微倾斜埋在土里深度约5~8厘米。3.2 测量时序供电与采样必须分离这是我从第一版固件里踩出来的教训。最初我把所有传感器的VCC直接接在ESP32的3.3V电源上测量的时候直接发起I2C读操作结果是数据波动特别大同一个探头在同一状态下连续读出的数值能差上几百个原始值。原因不难理解传感器内部ADC工作时需要稳定的基准电压而ESP32的3.3V在WiFi发射的时候会有明显压降和纹波。I2C读取瞬间恰好碰上WiFi射频开关读数就被污染了。解决方案是把传感器电源单独控制测量前先稳定供电读完立刻断电。具体做法是用一个ESP32的GPIO引脚控制MOS管或直接用高电平驱动的三极管开关把传感器VCC接在开关后面只在采样前的500毫秒内打开电源让内部电路充分稳定后再发起I2C读取读完之后关闭电源。这样做还有个额外好处不采样的时候传感器完全断电电流损耗趋近于零整机功耗被压下去一大截。时序大致是这样的从深度睡眠唤醒 → 打开WiFi并连接到路由器 → GPIO拉高给传感器供电 → 延时500毫秒 → 发起I2C读取 → 关闭传感器电源 → 通过MQTT发送数据 → 进入下一轮深度睡眠。整体一轮耗时不到10秒和过去一直通电的工作方式相比功耗下降了至少一个数量级。每次测量时WiFi是关还是开最好固定下来先开WiFi再读传感器或者先读再开WiFi都行但别在读取过程中让WiFi做重活否则采样窗口里的读数容易带杂音。3.3 为什么一个测量点不够单只传感器代表不了整片土壤。我的花盆直径30厘米单测一个点的时候读数一会儿高一会儿低后来才知道那是盆内空间不均匀造成的。不同位置的土质紧实度、根系密度、光线照射角度都不一样湿度曲线差异能到10个百分点以上。后来我在每个监测单元上挂了3只传感器两只在根系活跃区两侧对称位置一只放在盆底排水孔上方的土壤里用来判断盆底是否积水。读数上报的时候我会在Node-RED里对三路数据做平均和极差统计如果三只探头的数据差异超过15%我会收到一条提示消息——那通常意味着浇水不均匀或者局部积水了比单纯看平均值有价值得多。多探头布点本质是用冗余换可靠性。3.4 电池和太阳能供电的计算思路如果传感器布在户外拉电源线是很麻烦的我选择了电池加太阳能板的方案。电池用一节18650锂电池容量约2400mAh充电用TP4056模块最大充电电流设为500毫安太阳能板选6V 2W的单晶小板足够在晴天维持充电。先说功耗估算ESP32深度睡眠电流约10微安几乎可以忽略每次唤醒后WiFi连网加发送数据最长耗时约6秒期间平均电流约120毫安WiFi峰值瞬时能到300毫安但平均下来没那么夸张。按15分钟采样一次计算一个周期平均电流大概是120mA x 6s / 900s 0.01mA ≈ 0.81mA。周期长度翻倍平均电流还能再减半。2400mAh ÷ 0.81mA ≈ 2962小时大约123天。当然实际运行会打折扣因为WiFi重试、电池自放电、低温影响都会吃一部分容量但按这个量级去配太阳能板日均充电量远大于放电量连续多云天撑一周也没问题。这里有个经验测量间隔不要低于10分钟再密集的采样对园艺场景没什么意义只会白白消耗电池和网络流量如果场景固定间隔1小时都够用。4. 固件端逻辑从原始ADC读数到一条可靠的消息4.1 I2C读取的代码骨架固件这部分我用的Arduino框架。需要说明的是市面上的I2C电容式土壤传感器没有一个统一的寄存器标准每个厂家定义的数据地址和格式都可能不同所以代码里那几行寄存器地址一定要以你自己买的那块模块的说明书为准。下面这段代码的逻辑是通用的先通过I2C总线向探头内部寄存器发起读取请求把返回的字节拼成一个16位无符号整数。#include Wire.h #include WiFi.h #include PubSubClient.h #define SOIL_I2C_ADDR 0x20 // 根据模块实际地址修改 uint16_t readSoilRaw() { Wire.beginTransmission(SOIL_I2C_ADDR); Wire.write(0x00); // 寄存器首地址按模块文档修改 Wire.endTransmission(false); Wire.requestFrom(SOIL_I2C_ADDR, (uint8_t)2); uint16_t raw 0; if (Wire.available() 2) { uint8_t hi Wire.read(); uint8_t lo Wire.read(); raw (hi 8) | lo; // 高字节在前 } return raw; }要注意一个问题有些模块的字节序是低位在前有些是高位在前。怎么判断把探头拿到空气中读一个值关掉再开电源再读一次如果两次读数差距很大说明你的拼接顺序错了交换高低字节试试。这类对着手册确认字节序和寄存器地址的工作在I2C设备调试里是没办法跳过的占了我当时一大半的排错时间。4.2 从原始值到百分比两点映射法读到的原始值只是一个无量纲的ADC数字可能落在0~2000区间可能落在0~65535区间看芯片的ADC位数。它本身没有物理意义要变成土壤含水率百分比就需要标定映射。一般做法是最简单的线性两点映射分别测出干土时的原始值和饱和泥浆时的原始值然后用线性插值算出百分比。公式长这样干土基准值 dryBase 在充分晾干的土里测得的原始值 饱和基准值 wetBase 在吸水饱和的泥浆里测得的原始值 含水率% 100 * (dryBase - 当前原始值) / (dryBase - wetBase)注意方向问题我用的电容式模块是湿度越大原始读数越低干土读数高湿土读数低。如果你的模块方向相反把分子改成当前原始值 - dryBase就行。算完之后最好用约束函数把结果限制在0~100之间因为极端情况下的读数可能越界float moisturePercent 100.0 * (dryBase - raw) / (dryBase - wetBase); moisturePercent constrain(moisturePercent, 0.0, 100.0);为什么不用网上那些所谓万能公式直接换算因为每只探头内部电容的初始值、出厂校准偏差都不一样同型号探头插在同一盆土里原始读数可能差出几百。硬套别人公式的结果就是仪表盘上的数值和实际手感完全对不上。每只探头单独标定一次5分钟的事效果天差地别。具体标定步骤我在第6章详细说。4.3 MQTT消息设计和发送策略数据采集好之后下一步是发出去。我用MQTT协议broker跑在一台树莓派上topic格式为soil/field1/node01/readings按地点/区域/节点/数据类型分层命名这样以后加传感器节点就不需要改动任何接收端逻辑。JSON消息内容大概长这样{ device: node01, ts: 1692000000, moisture: 42.3, soil_temp: 23.1, battery: 3.87, rssi: -61 }发送的时候有两个细节值得注意。第一MQTT的QoS用1至少一次就够丢包的话重发但别上QoS 2只传输一次那套握手机制在弱信号环境下会加重网络负担。第二发布时把retain标志位设为true。这样新上线的仪表盘或订阅端可以马上从broker拿到每台传感器最近一次的状态不用等下一次上报才能看到数据这个体验差异很大。char payload[160]; snprintf(payload, sizeof(payload), {\device\:\node01\,\ts\:%lu,\moisture\:%.1f,\soil_temp\:%.1f,\battery\:%.2f,\rssi\:%d}, (unsigned long)time(nullptr), moisturePercent, soilTemp, batteryVolt, WiFi.RSSI()); client.publish(soil/field1/node01/readings, payload, true);WiFi断线重连的逻辑也要写稳。我用WiFi.setAutoReconnect(true)加定时检查在loop()里每10秒测一次如果WiFi.status() ! WL_CONNECTED就主动执行WiFi.reconnect()MQTT那边同样client.connected()返回假就重连。不要在主程序里做长延时阻塞用millis()计时器和轮询的方式组织代码才能让重连逻辑及时响应。5. 数据接收端与可视化不写前端也能看得懂数据5.1 MQTT broker选型树莓派上的轻量方案数据发出来总得有人收。我选择在树莓派4B上运行Mosquitto作为MQTT broker。运行非常简单一条命令安装改一行配置允许匿名访问内网环境下然后订阅topic就能看到数据流sudo apt install mosquitto mosquitto-clients -y mosquitto_sub -h 127.0.0.1 -t soil/# -v为什么不用云平台虽然阿里云、AWS IoT之类的平台功能很全但免费层有限制数据不在自己手里而且公网传输物联网数据需要考虑安全的管道和证书认证对个人项目来说复杂度有点高。家庭内网环境里跑一个本地broker数据全在局域网内流动快、稳、没有月费。真要远程查看数据可以用内网穿透或者搭建一个带密码的MQTT加Web仪表盘网关不过那是另一篇文章的话题了。5.2 Node-REDDashboard最小可用的可视化方案仪表盘我用的是Node-RED理由很实在它在树莓派上安装方便可视化流程拖拽节点就能编写逻辑不需要懂前端三件套。数据流很简单mqtt in节点订阅soil/#主题 →json节点解析payload →split节点按设备拆分 → 分别存入SQLite节点做历史记录同时把实时值传递到chart节点和gauge节点展示。仪表盘上我放了两种类型的卡片每台传感器的实时含水率用仪表盘显示最近24小时的湿度曲线用折线图显示。折线图的y轴范围固定为0~100%这样一眼就能看出水分变化的绝对幅度不会因为图表自适应缩放产生错觉。这一点很容易被忽略——折线图如果不固定坐标轴看起来波动很大很吓人其实只是5个百分点的变化。历史数据我用SQLite存储每个设备一张表只存时间戳和含水率。查询最近7天的曲线SQL写五行就够了出远门前看一眼趋势大概就知道这盆花还能撑几天。5.3 阈值告警从被动看图到主动提醒光有可视化还不够数据得在关键时刻叫人才有用。我在Node-RED里叠加了一个简单的判断逻辑根据植物类型和季节设定下限阈值和上限阈值实测数据低于下限时发送一条消息到手机上的通知应用我用的Pushover和Bark双通道提示该浇水了高于上限时提示可能过湿需要停止浇水并检查排水。阈值不是写死的我把它们放在几个Dashboard的输入框里直接在页面上拖滑条就能调整。这个设计让我在不同植物、不同季节切换时不需要进后台改代码。这里还要提一个必须注意的地方阈值告警要设置持续超标而不是一次超标立即触发。不然植物浇完水后数据短暂波动一下通知就轰炸一遍烦得很。我在Node-RED里加了一个窗口逻辑连续三次采样都低于阈值才触发告警每次告警后至少4小时不能再重复报警。这个改动看似简单直接决定了这套系统是好帮手还是烦人精。6. 校准实务便宜传感器能不能信取决于你做了什么6.1 干土基准和饱和基准的具体标定方法很多买了电容式土壤传感器的人发现读数跟实际差距很大就直接下结论说这种传感器是垃圾。其实绝大多数是没做标定的问题。便宜传感器是可以用的前提是每只探头单独标定。具体做法如下第一步测干土基准值。拿一份普通园土在通风处自然晾晒三天以上或者用烤箱80℃烘烤几小时注意别引燃有机物让土壤达到尽可能干的状态。把探头插进干土等读数稳定记录连续10次测量的平均值这就是干土基准值。我在环境温度25℃左右测的一组数据是原始读数1980左右。第二步测饱和基准值。把同一份土壤加水拌成饱和泥浆水加到泥浆表面微微渗水但探针区域完全被湿土包裹的状态。静置半小时让水分均匀渗透再读取10次平均值。我在同样条件下测到的是520左右。第三步记录标定参数。把每只探头的干基、湿基两个值烧录进固件配置文件或者写在一个小纸条上贴到模块旁边。千万不要试图把所有探头用同一组参数。我实测过三只同型号新探头干土读数最大差到400多换算成含水率能差出20个百分点这个误差足以让整个监测系统失灵。6.2 温度漂移低成本补偿做法电容式传感器的另一个现实问题是温度影响介电常数。水温、土温变化会导致同样含水量的土壤读数出现波动冬天夏天同一个探头读数能差几个百分点。解决思路有两个层次。如果是精度要求不高的趋势监测直接忽略温度漂移只要标定时的环境温度跟使用温度差距不太大偏差都在可接受范围内。如果追求更稳定就在探头附近加一个DS18B20或者把模块自带的环境温度数据一起上报然后在软件里做线性补偿根据实测结果以25℃为基准每偏离1℃修正0.2个百分点。这个系数我自己在户外测出来的具体到你的土壤类型和传感器型号可能有差异但思路是一样的——记录温度和湿度数据后期用软件修正历史曲线不要在硬件上较劲。6.3 探头个体差异与重复性测试标定做完之后还有一个步骤经常被跳过重复性测试。把同一只探头从土里拔出再插回原处连续读取20次记录最大最小值如果波动超过5个百分点说明要么接线接触不良要么探头本身已经老化数据可信度就很低了需要重新插拔检查或者更换。我自己的记录新探头重复性波动大概在±1.5个百分点用了半年后波动扩大到±4个百分点左右。这不是说传感器坏了是内部电路老化加探针表面污损累积导致的。定期把探头取出来用软毛刷和清水清理探针表面的盐垢能明显改善重复性。6.4 别被相对值骗了最后强调一个容易误读的地方经过两点映射得到的百分比只是该探头的相对含水率不是严格意义上的土壤容积含水量VWC。它和标准仪器测出的绝对VWC之间可能差几个百分点但趋势曲线和数据变化规律是高度一致的。对个人植物养护场景我要的是现在比上周干了多少浇完水多久渗透到根区这些相对变化才是决策依据。如果你的目标是给科研或精准农业提供精确的绝对含水率预算至少得翻十倍以上考虑专业级的FDR传感器或张力计而不是这种百元以内的模块。7. 长期运行的经验稳定跑过两个种植季后我的几个建议7.1 OTA升级改代码不用拆传感器了探头埋在土里之后固件更新如果都要拆下来接线体验会非常糟糕。我第一版系统就是每次改代码都要把传感器从土里拔出来、打开盒子、连上USB线烧录一个星期折腾两三次就想弃坑了。后来我加了OTAOver-The-Air无线升级用Arduino自带的ArduinoOTA库几十行代码就能实现。核心要点是OTA的鉴权密码一定要设这玩意儿默认不设密码的话局域网里任何人都能往你的板子里刷固件。设置了密码之后每次改完代码选择网络端口烧录一分钟搞定完全不用碰硬件。还有一个坑必须提醒OTA升级不是一劳永逸的如果固件本身有让WiFi反复重启的bug升级过程中设备断了板子会处于半砖状态。所以新固件先在自己本地的板子上测一遍再推给正在运行的系统。7.2 定期校准半年不做数据就慢慢失真土壤传感器是消耗品即使电容式的寿命比电阻式长很多长期埋在潮湿土壤里还是会老化和漂移。我现在的维护节奏是每季度一次取出所有探头清理探针表面的盐垢和泥土在空气里测一次读数对比新探头的空气基准值如果偏差超过数组记录值的10%就需要重新标定重新做干土和湿土两点标定更新固件配置检查电池电压、太阳能板表面灰尘、接线接头是否有松动。这个维护流程看起来很琐碎但实际上每次只需要半小时却能保证仪表盘上的数据一直靠谱。监测系统的价值建立在数据可信度之上数据一旦失真整套系统就变成了昂贵的摆设。7.3 常见故障的排查顺序跑了两个种植季我总结了一套标准的故障排查顺序遇到问题从前往后试基本不慌现象大概率原因排查方式所有传感器都不上报WiFi掉线或MQTT broker挂了先看树莓派上mosquitto_sub能不能收到再检查设备端WiFi信号单个节点数据断断续续节点电池电压过低登录broker查消息看battery字段是否低于3.3V单个探头读数突然暴涨探针污损或线头接触不良清理探针、重新插拔接头读数持续缓慢漂移探头老化需要重新标定取出来做干湿两点标定空气中读数异常大I2C总线冲突或字节序不对检查地址冲突交换高低字节试验其中低压问题出现最频繁。ESP32在板载稳压器工作正常的情况下3.3V输出在输入降到3.6V以下就开始不稳WiFi连接失败率直线上升。我在代码里对电源电压做了监测每次上报都带电池电压字段低于3.55V就在仪表盘上显示红色警告提醒该充电或者检查太阳能板了。7.4 谨慎扩展自动灌溉功能很多人在做实数据监测后下一步就想加自动浇水。我的看法是不要急。自动灌溉看着简单其实涉及水泵启停、电磁阀、滴灌管路、漏水保护、停电恢复策略任何一个环节掉链子都是整个花盆被淹或者植物干死的代价。真要上自动灌溉先做几个保障一是电磁阀和水泵的启停必须能在本地手动切换和远程手动控制二是每次自动浇水前检查排水是否通畅连续雨天要自动跳过浇水三是所有浇水事件都要记录日志。我自己现在还是手动浇水但会根据系统提示选择浇水量这是风险和收益最平衡的状态。7.5 用了一年以后这套系统到底值不值说点主观感受。数据监测系统真正改变的不是我浇水的动作而是我对土壤状态的认知方式。以前浇水是凭感觉的赌博现在看到湿度曲线缓慢下降到一个阈值心里很有底地给花浇水出门前看一眼趋势曲线就知道哪盆需要临行前补一次水哪些盆不用管。这种确定性是花几百块钱和几个周末的时间换来的。如果你也想做一套我建议先从一个节点、两只探头开始跑通数据链路再做扩展别一开始就追求大而全。技术的价值在于解决问题不在于设备数量多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑