LORA与无源供电:花房环境监测改造实战复盘
2026/9/9 17:57:00 网站建设 项目流程

最近帮一个朋友改造他家里的花房环境监测,原本的方案是每个角落放一个插电的温湿度计,结果线材扯得乱七八糟,插座不够用,二氧化碳探头还得单独供电,整个系统装完朋友说像盘丝洞。后来换成LORA温湿度二氧化碳三合一传感器配合无源供电方案,才真正把"环境监测"这件事做成了不用操心、也不用布线的状态。

这篇东西不是产品评测,更像是我自己从选型、设计、调试到落地整个过程的复盘,把LORA、三合一传感器、无源供电这些词背后的实际门道拆开讲清楚。如果你也在做类似的物联网环境监测项目,或者正被布线和供电问题折磨,这篇应该能给你省点弯路。

1. 布线噩梦与无源物联网的缘起:从一个真实项目说起

1.1 传统环境监测方案的三个痛点

先说我在朋友花房遇到的情况。花房面积其实不大,大概六十多平,但要测的点位不少:育苗区的温湿度、工具间的二氧化碳浓度、靠窗和靠墙的区域温差很大。最初我图省事,直接买了几套市面上常见的Wi-Fi温湿度计,再单独配了两个插电的二氧化碳检测仪。

第一个问题就是供电。Wi-Fi设备看着无线,实际每台都要插电源适配器。花房里的插座规划本来就不合理,三个角落根本没有插座,最后拖了三个插线板,地面上横七竖八全是线。更麻烦的是,花房湿度高,插线板和适配器长期暴露在潮湿环境里,本身就有安全隐患。

第二个问题是通信。后来我研究了一下,普通Wi-Fi温湿度计的采样和上报机制其实很粗糙,很多廉价设备是每五分钟才往云端push一次,而且Wi-Fi穿墙能力弱,花房门口的金属门框直接让两个角落的设备频繁掉线。掉线之后数据断档,设备又不会自动重连,只能手工重启。

第三个问题则是二氧化碳传感器的特殊性。市面上大部分二氧化碳检测仪都是NDIR原理(非色散红外),这个后面细说,功耗比温湿度传感器高一个数量级,基本不可能用电池长期供电。所以它在设计上就依赖USB供电,这直接导致它的安装位置被电源位置绑架,完全没法放在真正有代表性的监测点上。

这些痛点叠加起来,就形成了一个很尴尬的结论:想要多点位、高精度的环境监测,传统方案要么布线复杂,要么供电受限,要么数据断档。我意识到不能继续在"带插头"的思路上修修补补,得换个赛道。

1.2 什么是无源物联网,这次项目想解决的问题

无源物联网这几个字听起来玄乎,实际拆开很简单:就是终端节点不需要传统意义上的电池供电,或者只靠一颗超级电容/小容量电池,配合能量收集(太阳能、温差、射频取能)来维持运行。

但我得说句实话,真正意义上的"无源"在商用环境监测里并不常见,更常见的是"准无源"——太阳能板加超级电容,或者一颗一次性锂亚电池用三五年。这次我做的花房项目,就走的是太阳能板加超级电容的路线,白天收集光能,夜间靠电容余量维持,整体不需要外接电源线,也不需要频繁换电池。

这个项目想解决的问题其实是三个维度:

  • 供电上:把传感器从"必须挨着插座"的束缚中解放出来,让每个监测节点可以放在真正有代表性的位置。
  • 通信上:用LORA替代Wi-Fi,解决穿墙和覆盖问题,不再依赖家庭路由器。
  • 数据上:把温湿度、二氧化碳三项数据统一上报,而不是买三套互不联通的设备,为后续的联动控制(比如自动通风)打基础。

这套思路放到更广泛的场景(农业大棚、仓库、办公环境、甚至早产儿病房环境监测里)也是一样的逻辑。后面我会逐一拆解每个环节的选型和实现。

2. 选LORA不选Wi-Fi和NB-IoT背后的功耗与传播账

2.1 通信距离与穿透力的实际对比

很多第一次做物联网的人会默认选Wi-Fi,因为家里有路由器,手机也能看数据,感觉最省事。但实际用了就会发现,Wi-Fi是为高带宽低延迟设计的,不是为了低功耗广覆盖设计的。

我实测过一组数据,在花房这种钢结构加玻璃的环境里,普通2.4GHz Wi-Fi的穿墙衰减非常明显,隔一道金属门,信号强度能从-45dBm掉到-85dBm,直接低于很多设备的重连阈值。而LORA工作在Sub-1GHz频段(国内常用470-510MHz),频率低,绕射能力强,同样功率下穿墙能力比2.4GHz好很多。我用的SX1268模块,发射功率设为17dBm,在花房内最远对角大概30米距离,中间隔了三堵墙,信号依然在-105dBm以上,接收灵敏度足够解调。

再说一个更极端的例子,有一次我把一个节点放在花房外的工具棚里,距离主网关大概80米,中间还有一排铁皮仓库,Wi-Fi早就没戏了,LORA依然能稳定上报。这就是Sub-1GHz物理特性带来的优势,不是软件能弥补的。

2.2 功耗画像:干电池/无源场景的严苛要求

LORA的另一个核心优势是功耗。Wi-Fi模块工作电流动辄80-100mA,而且为了维持连接还要周期性唤醒,哪怕深度睡眠也得时不时听一下路由器的Beacon帧,这个电流对电池非常不友好。蓝牙BLE虽然功耗低,但通信距离太短,穿墙更差,不适合分布式多点监测。

LORA模块的接收电流大概在6-10mA,休眠电流可以做到2μA以下,发射电流取决于功率,17dBm时大概40-45mA,但一次上报只有几百毫秒。做过功耗计算就很清楚,LORA的"平均电流"被极低占空比拉下来了,非常适合靠电池或无源供电运行。

这里需要澄清一个容易混淆的点:最近AI圈子里还有个"LoRA微调"的概念,是Low-Rank Adaptation,用于大模型参数高效微调,跟LORA通信(Long Range)完全是两回事。搜索相关热词时经常混在一起,别搞混了。

2.3 LORA与LoRaWAN的关系,以及"轻量私有协议"路线的选择

很多人一开始也会纠结:我该用LoRaWAN还是直接用LORA模块自己写协议?

我的建议是:如果只是自己做一个中小规模的监测系统(比如几十个节点以内),没必要上LoRaWAN。LoRaWAN是一套完整的网络层协议,有服务器、有设备激活流程、有数据速率自适应,适合电信级运营或者超大规模部署。但它的复杂性也高,调试门槛不低,而且很多现成的LoRaWAN模块和网关价格偏高。

我这次做的是轻量私有协议:LORA模块工作在LoRa调制模式(Spreading Factor=7,带宽125kHz),自己定义了简单的数据帧格式,节点主动上报三合一数据,网关被动接收并通过串口转给树莓派,树莓派再通过MQTT上报到内部服务器。整个过程没有OTAA激活,没有网络服务器,协议极简。

好处很明显:数据链路完全可控,功耗也更好优化(可以按需决定休眠和醒来的时间)。坏处则是要自己做丢包处理、重传机制、多节点分时调度。如果你还在初期验证阶段,我建议直接走这条轻量路线,跑通业务逻辑后再考虑要不要上完整LoRaWAN。

3. 三合一传感头的选型与硬件细节从温湿度到二氧化碳

3.1 传感器选型:SHT30还是SHT40,CO2用NDIR还是电化学

三合一传感器就是把温度、湿度、二氧化碳三种传感器集成到一个节点里,但里面的水很深。

温湿度部分,我推荐用Sensirion的SHT系列,SHT30或者SHT40都行,区别在于SHT40的精度更高、功耗更低,价格也贵一点点。SHT30的典型精度是±0.2℃和±2%RH,对于大部分环境监测场景完全够用。SHT40则是新一代产品,I2C接口,温度精度±0.1℃。我自己用的是SHT30,一个是因为库存,另一个是它的驱动库无论在哪都能找到现成代码,开发快。

二氧化碳部分,主流选择是NDIR(非色散红外)原理的传感器,典型代表是盛思锐的SCD30、SCD40、SCD41,以及Senseair的S8系列。NDIR的原理是:传感器内部有一个红外光源,照射到一段空气腔,另一端是红外探测器,探测器前面加了滤光片只让4.26μm波长的红外光通过——这个波长正好是二氧化碳分子的特征吸收峰。当空气中CO2浓度越高,被吸收的红外光越多,探测器接收到的信号就越弱,通过标定曲线反推出浓度。

这里有个关键的选型分叉:SCD30的功耗很高,工作电流在19mA以上,加热器更是耗电大户,不适合无源供电场景。而SCD40/SCD41是低功耗版本,SCD41的功耗可以做到0.5mA平均,甚至支持间歇测量模式。我这次用的就是SCD41,实际测下来,每两分钟测一次,平均电流大概在3-5mA,配合超级电容和太阳能板能扛得住。

我见过有人为了省成本选电化学式的CO2传感器,价格确实便宜,但电化学传感器有寿命问题,而且受温湿度影响大,需要频繁校准,长期监测项目强烈不建议。宁可多花几十块钱上NDIR。

3.2 CO2测量的温度补偿逻辑与标定方法

NDIR传感器最常被忽略的问题是温度补偿。红外吸收和气体密度都受温度影响,所以SCD41内部有温湿度传感器做实时补偿,但如果你把传感器放在阳光直射的位置,或者紧挨着发热器件,读数会出现明显偏移。

我踩过一次坑:把SCD41放在树莓派旁边,树莓派的CPU发热直接让传感器周围温度比环境高了5℃以上,CO2读数比实际的要高。后来我把传感器单独拉出来,用排线连接放到通风处,读数才恢复正常。所以说,三合一传感器的"三合一"不代表可以乱放,物理布局仍然很重要。

标定方面,SCD41支持背景校准(FRC,Forced ReCalibration)和自动自校准(ASC,Automatic Self-Calibration)。如果你所在位置有稳定的新鲜空气来源(比如空旷的室外或通风良好的室内),可以定期用FRC把传感器校准到420ppm左右。我在花房里找了个通风窗附近的位置,固定400-450ppm的值做了FRC校准,后面读数的漂移明显减小。

3.3 硬件设计中的排线、屏蔽与电源隔离细节

把传感器和MCU做在一起不是不行,但最好把CO2传感器通过排线或接插件引出来,放到外壳外面或独立通风道里。原因上面说了,怕热源干扰,另一个原因是CO2传感器需要和空气充分接触,如果密封在塑料外壳里,容易形成"局部微气候",读数滞后甚至错误。

电源隔离也一样重要。SCD41的测量峰值电流虽然只有几十mA,但瞬间电流变化会对模拟电路和LORA射频产生干扰。我在PCB上做了简单处理:MCU和传感器用LDO稳压供电,LORA射频部分单独用一颗高效率的DC-DC(比如TPS62740)供电,两者地线单点连接,这样能明显减少射频发射瞬间对传感数据的影响。

4. 无源供电与功耗预算把每一μA都花在刀刃上

4.1 整机功耗拆分:休眠电流、唤醒采集、射频发射

"无源"不等于"不耗电",而是"每一点的耗电都需要精打细算"。

我算过整个节点的功耗组成,按一次完整的上报周期来看:

  • 节点绝大部分时间处于休眠,MCU(用的是STM32L0系列,足够低功耗)的stop mode电流大约5μA,LORA模块处于sleep模式,电流约1.6μA,传感器全部关断。这部分合计不到7μA。
  • 每两分钟唤醒一次,MCU起来先读取SHT30,耗时约10ms,电流约1mA;再启动SCD41测量,SCD41的测量周期按手册设置,一次完整测量约10秒左右,期间平均电流3-5mA。
  • 数据打包,LORA以17dBm发射,持续约200ms,电流约45mA(SX1268实测大致这个水平)。
  • 发完后回到休眠。

把这些时间加权平均,一个周期(2分钟)的总消耗大约在2-3mAh/天左右(取决于SCD41的测量时间)。这个数字意味着什么?如果你用一颗1000mAh的锂亚电池,理论上可以跑一年以上;如果用电容加太阳能,只要白天晒几个小时就能补齐每天消耗的2-3mAh。

我做功耗实测用的是万用表串联10Ω采样电阻,用示波器抓电压波形,算出了平均电流,这个方法比听技术手册靠谱得多。强烈建议有条件的话都实测一遍,因为不同模块的功耗差异真的很大。

4.2 采集周期与上报策略的设计

无源场景下,采集周期是功耗的最大变量。SCD41如果设成每分钟测量一次,功耗会比每五分钟一次高不少。我测试后觉得,环境监测场景下二氧化碳浓度和温湿度的变化是慢变量,两到五分钟上报一次完全够用,没必要追求秒级刷新。

另外要注意的是"唤醒即上报"并不明智。如果网关刚好在重启,节点发出去的数据就丢了,而重传机制又增加功耗。我采用了一个简单的策略:节点每次唤醒后,先随机延时0-2秒(避免多节点同时醒来的冲突),再采集数据,然后发送。如果发送失败,连续重试两次,间隔各增加一个随机退避。这样既降低了碰撞概率,也不会在信号差的时候无休止重试。

对于分时复用,很多LORA项目初期只有几个节点,随便错开就行,一旦节点超过十几二十个,就得考虑固定时隙表。我参考LORA多子机分时复用的常见做法,把每个节点的唤醒时刻做了错峰配置,比如节点A在第0秒唤醒,节点B在第20秒,节点C在第40秒,依此类推,避免同频同时发送。实测下来整个系统的丢包率控制在2%以内。

4.3 超级电容与太阳能板的搭配计算

我的节点供电方案是:一块5.5V/100mA的太阳能板(面积大概名片大小),一颗2.7V/100F的超级电容,再加一颗2.7V/50F的备用电容串联(串联后耐压5.4V,容量25F,等效ESR加倍),配一个BQ25570能量收集管理芯片,把太阳能板的输出稳定在3.3V给系统供电。

为什么要串电容?单颗超级电容耐压一般只有2.7V,低于系统需要的3.3V,所以需要两颗串联。串联后容量减半,但耐压翻倍。BQ25570的作用是把太阳能板那不太稳定的电压提升到3.3V并管理充放电,防止过充和欠压。

计算一下能量:25F电容充到5V,电量是0.5 × 25 × 25 = 312.5焦耳,换成mAh大约是312.5 / (3.7 × 3.6) ≈ 23mAh(粗略算),而系统每天消耗2-3mAh,所以只要一天里有半天能晒到太阳,电容储存的能量就足够系统跑下来。夜间电容电压会缓慢下降,我设了2.8V的欠压保护阈值,低于这个值就强制休眠,等第二天太阳出来再恢复。

这里要提一个常见的坑:太阳能板标称100mA是在标准光照(1000W/m²)下的电流,实际阴天可能只有标称的十分之一。所以如果项目要常年运行,太阳能板面积不能省,至少比功耗预算高出五倍以上才保险。

5. 部署实测与通信调试避坑记录

5.1 天线、PCB走线与阻抗匹配的实务经验

搜索热词里"lora模组板载天线怎么画"和"lora芯片参考pcb文件"都是高频问题,说明很多人卡在这里。如果用的是带IPEX座子的LORA模块,外接弹簧天线或胶棒天线,基本不需要操心天线设计;但如果想把天线做在板上,就要小心了。

我这次用的是外置天线方案,但之前踩过板载天线的坑:在某次原型验证中,我把天线走线画在PCB边缘,没有参考厂商的reference layout,结果天线旁边铺了一整片地铜,谐振频率完全偏离470MHz,通信距离从80米掉到不到10米。后来老老实实按芯片手册的参考设计,把天线净空区留出来,天线周围的地铜挖掉,并按手册的π型匹配电路预留了元件位,实测才恢复正常。

无论用哪种天线,LORA模块周围不要放开关电源和高速数字线,这些干扰源会直接影响接收灵敏度。我在PCB布局时把DC-DC放在板子一角,LORA模块放在另一角,中间用GND过孔墙隔开,实测接收灵敏度比之前的随意布局好了大约3dB。

5.2 多节点并发、丢包重传与网关接收端的表现

这套系统我在花房实际部署时放了8个节点,都是三合一传感器,分布在花房各处,外加一个网关节点。刚开始用默认配置,所有节点都是整点唤醒,结果一开机就出现了严重的碰撞——连续几分钟内多节点同时上报,网关收发的数据大量丢包。

改成随机退避加热偏移之后,丢包率明显下降。具体的做法是:每个节点的唤醒时刻在其配置的时间点基础上叠加一个0-5秒的随机偏移,并且每次上报前先做一个15ms左右的空闲信道检测(CAD),发现有信道占用就再退避。用这个方案,8个节点的数据完整率在95%以上。

网关端我用的是树莓派加一颗SX1268模块(同型号收发异机),通过SPI连接。树莓派上跑了一个简单的Python服务,接收串口数据后解析帧格式,然后通过MQTT推到本地服务器。同时把原始数据存了一份CSV到树莓派上,防止网络抖动丢数据。

5.3 现场部署中的环境因素、遮挡物与陈年铁皮的教训

现场部署最大的变数其实不是电子设计,而是环境本身。花房里有很多金属支架和浇水管道,LORA信号绕射能力强不代表完全无感于金属遮挡。我实测过,节点被放在一个铁皮工具柜里面,信号从-95dBm掉到-115dBm以下,直接不可用。后来把节点移到柜子外面,信号立刻恢复。

另外一个教训是玻璃和阳光的关系。太阳能板贴在花房玻璃内侧,听着挺合理,但玻璃会阻挡紫外线,太阳能板效率大打折扣,而且玻璃反射导致太阳光倾斜入射时电流非常低。我最后把太阳能板装到了花房外侧朝南的屋檐下,既能晒到太阳又不会被雨淋,充电效率直接翻倍。

湿度也是大问题。花房内部湿度经常在80%以上,电路板直接暴露在这种湿度下容易结露。我这次用了三防漆涂刷PCB,外壳用带透气膜的结构(防水透气阀),这样既能平衡内外气压,又能阻止水滴进入。这个细节如果你不做,个把月后传感器数据就会开始飘。

6. 从数据到决策:环境监测系统的真正价值所在

6.1 数据校准与多传感器的交叉验证

数据采集只是第一步,环境监测系统的价值在数据质量。我部署完8个节点后,先做了一次72小时的并行运行,把所有节点放在同一个位置,看彼此之间读数的一致性。结果发现温度差在±0.5℃以内,湿度差在±3%RH以内,但CO2读数差异较大,最高的节点和最低的节点差了将近80ppm。

造成CO2差异的原因有三个:一是SCD41本身的个体差异,二是传感器在PCB上的散热处理不同,三是现场局部空气流动差异。针对个体差异,我用校准确认命令(FRC)把每个节点的读数校准到同一个基准,具体做法是找一个空气流通的稳定时段,把各节点采集到的CO2数据与一台高精度参考仪器对比,算出每个节点的偏置值写入固件的校准参数里。

交叉验证的意义在于:如果你只有一个传感器点,某次数据异常你根本不知道是传感器坏了还是环境真的变了。有了多个点位的平行监测,你可以迅速判断出是事件性的环境变化(比如有人打开了窗户,CO2骤降),还是传感器失效(只有单个点突变而邻近点位不变)。

6.2 环境监测的典型业务场景扩展:农业大棚、仓储、办公、早产儿病房

做完了花房的项目,这套方案其实可以直接平移到很多行业场景。

农业大棚是最贴近的应用场景。棚内温湿度直接影响作物生长,CO2浓度则直接关系到光合作用效率,很多大棚种植户会在夜间和密闭条件下喷施CO2气肥,浓度过高又会对人产生健康风险。用这套LORA无源监测节点,可以多点位监测棚内CO2分布,再配合卷帘、风机、补光灯的联动控制,实现真正的闭环管理。

仓储和冷链也是强场景。仓库面积大、金属货架多、结构复杂,Wi-Fi基本没法覆盖全面,LORA就很合适。而且仓库里往往没有太多电源插座,无源节点可以布置在货架顶部等真正需要监测的位置,不用迁就插座位置。

办公环境方面,室内CO2浓度超过1000ppm会明显影响专注力,会议室、教室、医院候诊室都是典型的高浓度场景。用这套系统可以随时发现问题点位,指导新风系统的运行策略。

还有一个比较特别的场景是早产儿病房。这类场所对环境要求极其严格,温湿度和CO2都要精确控制,而且病房内不方便布线和堆放太多设备。LORA通信不会干扰医疗设备,无源节点也能降低用电风险,很适合用于新生儿环境监测。

6.3 后续可扩展方向:联动控制、边缘计算、多传感器融合

这套系统的下一步扩展我有几个相对靠谱的方向。

联动控制是马上能做的事。现在节点数据已经上报到树莓派了,树莓派可以加几路继电器控制通风扇、补光灯和加湿器。比如CO2超过1000ppm就自动开通风扇,湿度低于40%就开加湿器,温度高于30℃就开遮阳网。这些规则用Node-RED就能很快搭出来。

边缘计算也很值得做,在树莓派上加一些简单的阈值判断和数据平滑滤波,网关本地就能完成异常识别,不需要所有的数据都传云端。这样即使广域网断了,本地联动策略仍然能正常运行。

更长远一点,可以尝试多传感器融合,比如结合光照传感器、土壤湿度传感器,构建更完整的植株生长环境画像。LORA本身支持大规模组网,节点数量扩展到几十个没有本质障碍,加入光照、土壤等传感器也就是改一下帧格式的事。

另外工业级场景下,LORA定位也是一个热门方向。我现在没有实测过,但从原理上说,利用多个固定网关接收同一个节点的信号时到达时间差(TDOA)或者信号强度(RSSI),可以粗略估计传感器位置。有一些LoRa定位项目做过单网关多节点的RSSI定位实验,精度大概在几米到十几米范围,这比GPS在室内强得多。如果你做的系统需要定位传感器位置,比如仓库里要知道哪个角落的设备掉了,这个方向可以研究。

7. 最后分享一点我个人实操中的体会

这次项目从开始到落地花了大概三周。回头看看,最难的不是电路设计,也不是传感器选型,而是"环境"本身。传感器在实验室里读数很准,一进花房就会被湿度、太阳直射、铁皮遮挡、局部微气候各种因素干扰。所以如果你也在做类似的项目,我建议把一多半的调试时间留给现场部署测试,而不是把精力都花在实验室的完美数据上。

选型上,LORA加三合一传感器加超级电容太阳能供电的组合,是目前做小规模低功耗环境监测能拿到的最好平衡。LORA解决通信覆盖,三合一传感器解决参数集成,无源供电解决部署自由度,三者缺一不可。如果你把其中任何一环换成别的方案,都会在别的地方付出代价。

最后还有个容易被忽略的项目管理细节:传感器出厂后多多少少都有校准偏差,尤其是CO2浓度,批次之间差异明显。项目上线前一定要做一次多点校准和交叉验证,把各个节点的底数拉齐,否则后续数据分析和联动策略都会建立在不可靠的数据上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询