首页 / 资讯中心 / 文章详情

LoRa频段选择、穿墙链路预算与STM32WL落地

LoRa频段选择、穿墙链路预算与STM32WL落地 ★ FEATURED ARTICLE
无线这块LoRa算是被问得最多的一个方向。我这两年接过好几个咨询问题几乎一模一样客户拿着一个园区或者农田的项目说想上个低功耗广域网络一问具体怎么落地全卡在三个地方——频段选哪个、宣传的“穿墙几公里”到底靠不靠谱、芯片方案上STM32WL还是别的。这三个问题其实是一条线上的频段决定了物理层的基本盘穿墙绕射是链路预算里的账STM32WL是把账算完之后的工程实现。这篇就把这条线从头到尾捋一遍尽量给到能直接拿去用的数字、公式和代码骨架不绕圈子。1. 先把LoRa摆到正确的位置它到底解决什么问题1.1 一次园区抄表项目的选型复盘前阵子帮一个园区做水电表远程抄读的方案评估现场情况挺典型六栋楼最远的表箱离中心机房大概1.2公里中间隔着两栋钢筋混凝土楼还有一片地下车库入口。客户一开始想用WiFi因为“现成的网络不要钱”实际一测就傻眼了——穿两堵墙信号从-45dBm掉到-85dBm再远一点直接掉线而且几百个表要连APAC的承载和掉线重连根本扛不住。换成蓝牙Mesh也不行节点多了之后跳数上去时延和可靠性都是问题而且需要部署大量中继节点供电又成了新麻烦。最后落到LoRa原因很朴素它的物理层天生就是为“低速率、长距离、极低功耗”设计的单个网关能覆盖整个园区终端用电池能撑好几年数据量小但要求稳定上报的场景几乎是量身定做。这里要强调一个容易被忽略的判断标准LoRa解决的不是“带宽”问题而是“覆盖成本”问题。当你的终端数量在几十到几千之间单次上报数据在几十字节以内部署地点又没有现成的网络基础设施那么每减少一个中继节点、每延长一年电池寿命都是实打实的成本节省。反过来如果业务需要传图片、传音频、做实时控制那就别在LoRa上浪费时间直接上Cat-1或者WiFi。1.2 扩频调制与链路预算远距离的真实来源很多人对LoRa的第一印象是“能传很远”但说不清为什么。核心在于线性调频扩频这个调制方式。简单类比普通窄带调制像是用一支很细的笔在纸上写一个字笔尖很尖但纸一抖就糊了LoRa是把同一个信息用一条扫频的“斜坡”铺开在很宽的带宽上摊薄接收端再用匹配的方式把它收拢回来。信号被摊薄之后单个频点上的噪声就很难把它盖住所以它在负信噪比下还能解调。这个能力用一个指标衡量最直观接收灵敏度。以常用的125kHz带宽为例扩频因子从SF7到SF12灵敏度大概从-123dBm一路降到-137dBm左右每提升一级扩频因子换来约2.5dB的灵敏度增益代价是符号时间翻倍、速率减半。SF12的时候单符号时间超过30毫秒这就是为什么LoRa的速率只有几百bps到几十kbps——距离是用时间换来的。把发射端的功率、天线增益、接收端的灵敏度和各种损耗串起来就是链路预算。这个账后面第3章会详细算这里先给个概念一个20dBm发射、-137dBm灵敏度的组合理论上允许的路径损耗超过150dB这是它能在几公里外还收到包的物理基础。普通2.4GHz的芯片同样条件下允许的路径损耗要少20dB以上差距就在这。1.3 和同类无线技术的横向对比选型的时候经常被拿来比较的几个技术我整理成下面这张表数据是常见配置下的典型值具体会因芯片和配置浮动技术典型频段典型速率视距距离终端功耗是否需要基础设施适合场景LoRaSub-1GHz0.3–37.5kbps2–15km极低uA级休眠需自建网关抄表、传感、农业、资产追踪窄带蜂窝物联网授权频段几十kbps依赖基站低依赖运营商有覆盖的城市场景WiFi2.4/5GHz数十Mbps50–100m高需AP局域网、高带宽蓝牙低功耗2.4GHz1–2Mbps10–50m低点对点或网关穿戴、近场配置私有FSKSub-1GHz1–100kbps0.5–2km低自建简单遥控、短距传感表格里最值得说的一行是“是否需要基础设施”。LoRa的网关是可以自己架的一个网关放在楼顶就能覆盖几公里这在没有蜂窝覆盖的郊区、厂区、农场上就是决定性的。而窄带蜂窝物联网虽然省事但你得赌运营商在那片区域有优化过的覆盖室内和地下往往是盲区。另外要提醒一点LoRa不是协议栈的全部它只是物理层。上面还有LoRaWAN这一层负责入网、加密、ADR、帧格式。如果你只是做点对点或者小规模星型网络完全可以用芯片原生的点对点模式省掉协议栈的开销和内存占用如果要接标准网关、做大规模组网那LoRaWAN该上还得上。这两条路的工程复杂度差得挺远选型阶段就要定下来。2. Sub-1GHz频段对比选频段本质是在选物理约束和规则边界2.1 主流频段盘点与天线尺寸的硬约束LoRa工作在免授权的Sub-1GHz频段常见的有433MHz、470–510MHz、868MHz、915MHz这几个区段。国内项目基本集中在470–510MHz这个范围欧洲用868北美用915。这个差异不是随便定的背后是各地的频谱规划实际做产品时必须以目标销售地区的无线管理要求为准不能拿一个频段打全球。频段带来的第一个硬约束是天线尺寸。四分之一波长单极天线的长度约等于75除以频率MHz单位是厘米。算一下433MHz对应约17.3厘米470MHz约16厘米868MHz约8.6厘米915MHz约8.2厘米。这个差别在产品设计上非常要命——一个要装进烟感大小外壳里的传感器16厘米的天线根本塞不进去只能用螺旋天线或者陶瓷天线而这两者的效率又要打折扣。我见过一个项目结构件已经开模了才发现470MHz的PCB天线净空不够最后只能改成外置的短棒天线外观和防水等级全部重做。所以频段的选择要和结构设计同步进行别等到射频调试阶段才发现没地方放天线。2.2 穿透力与频率的关系不是越低越好“频率越低穿墙越好”这句话对了一半。从物理上讲频率越低绕射能力越强、材料吸收越小所以433MHz在穿透砖墙、穿过植被时确实比868MHz有优势。但这里有几个反直觉的地方。第一穿透损耗的主要来源不是“频率高低”而是材料的含水率和金属含量。混凝土墙体在干燥状态下的穿透损耗可能只有10dB出头但如果是含水率高的承重墙或者内部有钢筋网损耗可以到25dB以上甚至更多。这种情况下你从868换到433改善的幅度可能只有3–5dB还不如把网关挪个位置、把天线架高两米来得实在。第二频率低意味着天线效率更难做高。在同样的物理尺寸下433MHz的天线电长度不够辐射电阻低匹配网络损耗大实际辐射出去的功率反而可能不如868MHz。所以“低频率一定传得远”是个伪命题得看整体的天线效率和辐射功率。第三低频率意味着更长的波长对安装位置更敏感。波长长的时候障碍物相对尺寸变小绕射更明显这是好事但同时也意味着近场区域的耦合更强天线靠近金属、人体、地面的影响更大。我一个客户把节点装在金属表箱里面433MHz的版本比868MHz的版本衰减还多原因是表箱的缝隙尺寸刚好对433形成了谐振吸收。2.3 功率、带宽与驻留时间的三角平衡选频段还要考虑发射功率的天花板。不同频段允许的最大发射功率不一样国内470–510MHz的限值相对保守很多模组出厂默认配置在14dBm左右部分场景可以到17dBm甚至20dBm但具体能用到多少必须查清楚当地的限值要求超了就是违规发射。功率之外还有两个常被忽略的参数带宽和驻留时间。带宽越窄同样的发射功率下功率谱密度越高灵敏度也越好但速率下降驻留时间则是一些地区对单次发射占用信道时长的限制用来保证多个设备公平共享频段。这两个参数直接决定了你的网络容量——一个网关能带多少个节点很大程度上取决于每个节点的空中时间。举个实际算例SF10、BW125、编码率4/5、前导码8个符号一个20字节的有效载荷空中时间大约是370毫秒。如果节点的上报周期是5分钟那么单节点的占空比大约是0.12%。理论上一个信道能容纳的节点数远不止几百个但实际中要考虑碰撞概率、网关的并发解调能力多信道多扩频因子以及重传带来的额外负载。经验值是单网关在合理配置下带500–1000个低频上报节点是可以做到的超过这个量就要考虑加网关或者做分区分频。2.4 选型决策表把上面这些揉在一起我给一个偏工程化的决策参考考量维度433MHz470–510MHz868/915MHz天线尺寸1/4波长约17cm小型化困难约15–16cm约8–9cm易集成绕射能力强较强一般建筑穿透好好中等国际通用性一般区域性明显欧美主流速率上限较低中等较高适合场景农田、林区、远距低速国内表计、园区出口产品、高速率需求我的建议是先定市场再定频段最后定天线。做国内项目就老老实实走470–510MHz做出口就按目标地区的频段做多版本硬件射频前端做兼容设计BOM上留两个匹配网络位置。天线方案在产品定义阶段就要和结构一起评审别留到最后。3. 穿墙与绕射把玄学拆成可以算的物理题3.1 自由空间损耗与菲涅尔区链路预算的起点是自由空间路径损耗公式很好记FSPL(dB) 32.44 20·log10(d_km) 20·log10(f_MHz)拿470MHz、1公里来算32.44 0 20×log10(470) 32.44 53.44 85.9dB。868MHz、1公里则是91.2dB。同样距离下高频多损耗5.3dB这就是前面说的频率影响的量化体现——注意只有5dB远没有很多人想象的那么大。但自由空间损耗有个大前提收发之间完全无遮挡而且第一菲涅尔区是空的。菲涅尔区是什么想象收发两点之间连一条线围绕这条线的一个椭球体空间无线电波主要在这个椭球里传播。第一菲涅尔区的半径可以用公式估算r 17.32 × √(d1·d2 / (f·D))其中d1、d2是障碍物到两端的距离kmD是总距离kmf是频率GHzr的单位是米。举个数470MHz、总距离1公里、障碍物在正中间r 17.32 × √(0.5×0.5/(0.47×1)) 17.32 × √0.532 12.6米。也就是说中点位置需要一个半径12.6米的“管道”保持通畅否则就开始产生额外衰减。这个数字在实际部署里意义重大天线架高两米和三米差别可能就是几十dB。因为抬高天线让菲涅尔区避开地面和障碍物比单纯加功率有效得多。我在农田项目上做过对比同样的节点天线从离地1.2米抬到2.5米通信距离从2.8公里提升到6公里以上功率一点没动。3.2 绕射损耗的估算方法现实中没有那么多视距绕射是绕不开的。工程上常用的是刀刃绕射模型把障碍物简化成一条无限薄的刀刃计算绕射参数v再查表得损耗。v h × √(2/λ × (1/d1 1/d2))h是障碍物高出收发连线的距离λ是波长。当v ≤ 0障碍物在连线以下损耗接近0v1时约6dBv2时约13dBv3时约18dB。这个模型的实用价值在于告诉你**“擦边”有多贵**。如果障碍物刚好挡住视距线一点点损耗就已经是6dB挡住得越多损耗涨得越快。所以在现场勘测时尽量让收发连线离障碍物顶端留出余量哪怕是半米收益都很明显。另外城市环境里绕射往往不是单次而是多次绕射叠加模型会低估损耗。经验做法是在刀刃模型基础上再加5–10dB的余量或者在密集城区直接用对数距离路径损耗模型反推。3.3 建筑穿透损耗的经验取值穿墙的损耗没有精确公式靠实测积累。下面是我自己项目里统计的经验值供参考470MHz附近混凝土结构障碍类型典型附加损耗木门、石膏板隔墙2–4dB单层砖墙6–10dB混凝土承重墙20cm12–18dB钢筋混凝土墙含钢筋网18–28dB楼层间上下各一层15–20dB金属表箱内安装15–30dB视缝隙而定地下车库入口20–35dB这张表最重要的用法是做预算时按最坏情况取值。比如你的节点装在金属表箱里表箱又在混凝土墙后面那就要预留40dB以上的穿透损耗。很多项目“实验室好好的、现场就丢包”问题基本都出在这里——实验室测的是视距现场穿的是三重障碍。注意表中数值是统计中位数个体差异可能非常大。特别是金属箱体和含钢筋的墙体谐振和屏蔽效应会导致某些位置损耗远超预期。务必做现场抽测不要拿表格当定论。3.4 一次完整的链路预算算例下面用一个完整算例把前面这些东西串起来。场景园区抄表节点装在金属表箱内网关在楼顶直线距离约1公里中间隔一栋混凝土楼。发射侧模组输出14dBm天线增益2dBi馈线和匹配损耗1dB实际EIRP约15dBm。接收侧网关天线增益3dBi接收灵敏度取SF9/BW125的-129dBm等效接收电平-126dBm。允许的最大路径损耗 15 - (-126) 141dB。扣减项金属表箱15dB混凝土墙15dB人体和植被影响预留5dB衰落余量10dB。合计45dB。真正留给路径传播的损耗 141 - 45 96dB。现在用对数距离模型反推距离PL FSPL(1km) 10·n·log10(d)FSPL(1km)在470MHz是85.9dB。假设郊区环境n3.096 85.9 30·log10(d) → log10(d) 0.337 → d ≈ 2.2km。假设密集城区n4.096 85.9 40·log10(d) → log10(d) 0.2525 → d ≈ 1.8km。这个结果和实际项目中的数据比较接近金属箱体加穿墙的场景可靠通信距离往往只有一两公里而不是宣传材料上的“十几公里”。宣传数字通常是视距、空旷、SF12、低速率条件下的极限值不具备工程参考意义。3.5 天线高度与安装位置最容易被低估的变量链路预算里天线高度是以“影响其他项”的方式发挥作用的所以特别容易被忽略。前面菲涅尔区的例子已经说明抬高天线能让传播路径避开地面反射和低矮障碍损耗可能一下降十几dB。几个实操经验网关天线尽量上屋顶或铁塔离女儿墙至少1米避开金属屋面直接放置会形成镜像干扰。终端天线如果装在设备内部要注意和电池、金属外壳、PCB地平面的距离净空区域至少留出5毫米以上实在做不到就用外置天线。还有一点很关键尽量避免天线与人体长期近距离接触。人体含水量高对Sub-1GHz的吸收很明显手持设备贴近身体时损耗可以达到10dB以上。穿戴类产品要么把天线做到背离身体的一侧要么接受距离下降的现实在预算里提前扣掉这部分。4. STM32WL方案拆解从一个裸片到能跑起来的节点4.1 芯片架构与资源盘点STM32WL系列是少数把MCU和Sub-1GHz射频收发器集成在同一颗芯片里的方案。以常见的双核型号为例内部是一颗Cortex-M4做主核跑应用一颗Cortex-M0专门处理射频和低功耗相关的任务两者通过共享内存和硬件信号量通信。这种架构的好处是射频时序不受主核负载影响坏处是调试时要同时关注两个核的状态尤其是低功耗唤醒路径。资源方面 flash从64KB到256KB不等RAM最大64KB。听起来不大但跑一个点对点协议绰绰有余跑完整LoRaWAN协议栈加应用逻辑也够用前提是别乱开缓冲区。射频部分支持LoRa、(G)FSK、(G)MSK、BPSK发射功率最高可到22dBm不同型号和频段有差异接收灵敏度在LoRa模式下可以到-137dBm左右。外设上比较实用的是多路定时器做低功耗唤醒和长周期任务、LPUART低功耗串口休眠时可收数据、RTC、ADC、比较器以及内置的SMPS降压转换器。SMPS这个要重点说——它能把电池电压高效降到内核电压显著降低运行电流但它的开关噪声对射频有影响布局布线和滤波要格外小心。4.2 最小系统与射频前端的设计要点硬件设计上有几个坑我必须提前说。供电部分芯片支持宽电压输入但如果用电池供电比如锂亚电池3.6V或者纽扣电池必须考虑电池内阻随容量下降而上升的问题。发射瞬间的峰值电流可能到100mA以上如果电池内阻大电压会瞬间跌落导致复位。解决办法是在电源引脚附近放足够容量的去耦电容至少10uF100nF组合必要时加一颗大容量钽电容做能量缓冲。射频匹配网络芯片的射频输出阻抗不是标准的50欧姆需要外加匹配网络。这个网络的具体参数和PCB叠层、走线长度强相关不能照抄参考设计必须用网络分析仪实测调。我见过直接抄参考设计的板子输出功率只有设计值的一半接收灵敏度也差了好几个dB原因就是匹配没调对。射频开关与滤波如果要做收发共用天线需要射频开关如果频段靠近其他业务比如广播、对讲建议加声表滤波器。滤波器会带来插入损耗通常1–2dB做链路预算时要算进去。晶振与TCXOLoRa对频率精度有要求普通晶振在温度变化大的环境里可能漂移超限。户外产品建议用TCXO虽然贵一点但能省掉大量现场排查的麻烦。用TCXO时要注意供电配置芯片有专门的TCXO电源控制引脚软件里要正确使能。4.3 软件工程路径CubeMX生成加SubGHz驱动软件这块标准路径是用CubeMX做初始化配置生成工程骨架再叠加SubGHz的射频驱动中间件。配置顺序建议这样第一步时钟树。HSE用32MHz外部晶振或者TCXO系统主频按需配置射频部分有独立的时钟需求CubeMX里会自动处理。注意如果用了TCXO要在射频配置里把TCXO供电打开并设置正确的电压。第二步射频参数。在CubeMX的无线配置界面里选择频段、调制方式、扩频因子、带宽、编码率、前导码长度、发射功率、PA选择低功率PA还是高功率PA。这些参数会生成对应的初始化结构体后期也可以在运行中动态调整。第三步引脚分配。射频开关的控制引脚如果有、TCXO电源引脚、天线开关引脚这些都要在生成代码前分配好否则后面改起来牵扯很多。第四步低功耗配置。根据需要开启STOP2模式配置唤醒源RTC、LPUART、外部中断。这里要注意进入STOP2之前必须让射频进入睡眠状态否则电流下不去。生成代码之后射频驱动一般以中间件库的形式提供核心是几个函数指针结构体分别对应初始化、设置信道、配置发送、配置接收、发送数据、接收数据、进入睡眠、读取状态。实际调用前要先完成射频初始化包括时钟源选择、PA配置、频段设置。4.4 一段能跑的收发代码框架下面给一个点对点收发的骨架基于常见的HAL和SubGHz中间件风格函数签名以实际使用的SDK版本为准这里重点看参数和调用顺序#include radio.h #include subghz_phy_version.h #define RF_FREQUENCY 470000000 /* Hz */ #define TX_OUTPUT_POWER 14 /* dBm */ #define LORA_BANDWIDTH 0 /* 0:125kHz, 1:250kHz, 2:500kHz */ #define LORA_SF 9 /* 扩频因子 7~12 */ #define LORA_CR 1 /* 1:4/5, 2:4/6, 3:4/7, 4:4/8 */ #define LORA_PREAMBLE_LEN 8 #define BUFFER_SIZE 32 static uint8_t TxBuffer[BUFFER_SIZE]; static uint8_t RxBuffer[BUFFER_SIZE]; volatile uint8_t rxDone 0; /* 射频事件回调 */ void OnRxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) { memcpy(RxBuffer, payload, size); rxDone 1; /* 打印 rssi / snr 用于现场评估 */ } void OnTxDone(void) { /* 发送完成可以切回接收 */ Radio.Rx(0); /* 0 表示持续接收 */ } void OnRxTimeout(void) { } void OnRxError(void) { } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); /* 1. 射频初始化时钟源、PA、频段 */ Radio.Init(NULL); /* 2. 设置信道频率 */ Radio.SetChannel(RF_FREQUENCY); /* 3. 配置调制解调器与收发参数 */ Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SF, LORA_CR, 0, LORA_PREAMBLE_LEN, 0, false, 0, false, 0, 0, true, 0, 0, false, true); Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, LORA_SF, LORA_CR, LORA_PREAMBLE_LEN, false, true, 0, 0, false, 3000); /* 4. 进入接收 */ Radio.Rx(0); while (1) { if (rxDone) { rxDone 0; /* 处理数据 */ } /* 周期性发送示例由RTC唤醒或定时器触发 */ if (/* 触发条件 */) { memcpy(TxBuffer, hello, 5); Radio.Standby(); Radio.Send(TxBuffer, 5); /* 发送完成后在 OnTxDone 回调里切回接收 */ } /* 空闲时进入低功耗 */ __WFI(); } }几个实际调试中容易出问题的地方Radio.SetChannel传入的频率要按芯片支持的频段范围来470MHz在多数型号的覆盖范围内但PA的选择会影响可用功率上限高功率PA在部分频段有额外限制要看数据手册。Radio.Rx(0)的参数0表示无限超时一直挂着接收。如果要做占空比接收这里传毫秒值超时后会触发OnRxTimeout回调可以在回调里重新开接收或者进入睡眠。发送前一定要先Radio.Standby()直接从接收态切到发送态在某些情况下会失败。发送完成后切回接收这个流程不能省否则节点会一直停留在待机状态收不到下行。RSSI和SNR这两个值现场调试时非常有用。RSSI反映信号强度SNR反映信号质量。如果RSSI不错但SNR很差说明有同频干扰或者本底噪声高如果RSSI很低那是纯粹的覆盖问题。养成在日志里记录这两个值的习惯后面排查省事一大半。4.5 低功耗设计的几刀电池寿命是这个方案的核心卖点也是最容易翻车的地方。我见过标称“五年电池寿命”的产品实测三个月就没电拆开一看休眠电流1.2mA。下面是从mA到uA的几刀。第一刀关掉不需要的外设时钟。GPIO、ADC、定时器、串口用不到的统统在进入低功耗前关闭时钟。GPIO配置成模拟输入或者按外部电路要求设置浮空的输入引脚会有漏电流。第二刀射频模块进睡眠。STM32WL的射频部分有独立的睡眠模式调用Radio.Sleep()之后电流能降到微安级。注意睡眠和待机是两回事睡眠保留配置唤醒快待机功耗更低但需要重新配置。第三刀用STOP2而不是SLEEP。STOP2模式下内核和大部分外设掉电只有RTC、LPUART和少量唤醒源工作电流可以做到1–2uA。唤醒源配置成RTC定时比如每5分钟醒一次上报数据。第四刀缩短唤醒后的工作时间。唤醒之后不要做无谓的事情直接采集、组包、发送、回睡。把传感器上电稳定的时间也算进去很多传感器的预热时间比发射本身还长。第五刀检查硬件漏电。这一刀最容易被忽略。上拉电阻、分压采样电路、LED指示灯这些在休眠时都可能产生几十微安的漏电。分压电阻如果是10k量级两节串联常接在电池上漏电就是180uA。改成MOS管控制通断或者用大阻值1M以上加分时采样能省下来一大截。实测的经验数据一个配置合理的STM32WL节点休眠电流做到2–5uA是现实的发射时峰值电流在80–120mA14dBm输出发射持续时间按空中时间算。用一节3600mAh的锂亚电池按每小时上报一次、每次空中时间200ms计算年耗电量大概在几十毫安时量级理论寿命远超五年——但这只是理论实际要考虑电池自放电、温度影响、以及电容漏电打对折比较稳妥。5. 参数调优与现场实测5.1 扩频因子、带宽、编码率的组合取舍这三个参数决定了速率、灵敏度和抗干扰能力的平衡。给一张实用对照表470MHzBW125CR4/520字节载荷扩频因子速率(bps)灵敏度(dBm)空中时间(ms)适用场景SF75470-123约56近距离、高频上报SF83125-126约100园区内、中等距离SF91760-129约180常规推荐值SF10980-132约370穿墙、中远距离SF11440-134.5约700远距离、低频上报SF12290-137约1300极限距离、极低速率带宽的选择更直接125kHz是默认值抗噪和灵敏度平衡好250kHz速率翻倍但灵敏度降约3dB500kHz再翻倍再降3dB适合高密度快速上报但距离明显缩短。编码率影响纠错能力4/5开销最小速率最高4/8纠错最强但速率降约40%。一般环境用4/5或4/6就行电磁环境恶劣的工业现场可以上4/7。我的常规建议是先用SF9跑通现场测RSSI和SNR再决定往哪个方向调。不要一上来就SF12那样虽然距离远但空中时间太长节点容量和响应速度都会受影响。5.2 拉距测试怎么做才有参考价值实验室里的距离测试基本没有参考价值。现场测试要按这个流程来选一个典型点位把网关固定好实际安装位置然后带着节点沿几个方向走每走一段记录一次RSSI、SNR和丢包率。每个点位至少发20个包统计成功率。走到丢包率超过10%的位置标记为边界。测试时要记录环境信息天气雨雪对Sub-1GHz有影响尤其是植被遮挡时、时段避免和人流高峰冲突、天线朝向极化方向要一致都是垂直极化。这些信息在后期分析异常时很有用。另外要做回环测试节点发、网关收然后网关发、节点收双向都测。很多项目只测上行结果下行控制指令发不下去原因是网关的发射功率或天线配置和节点不匹配。5.3 功耗实测与电池寿命估算功耗测量别用万用表平均电流根本测不准。正确做法是用带电流 profiling 功能的工具或者串一个小采样电阻用示波器看波形。重点看三个值休眠电流、接收电流、发射峰值电流和持续时间。电池寿命估算的公式平均电流 (休眠电流 × 休眠时间 接收电流 × 接收时间 发射电流 × 发射时间) / 总周期代入实测值算再按电池容量打折。锂亚电池的实际可用容量在低温和大电流脉冲下会明显缩水-20度环境下可能只有标称容量的60%。如果产品要在户外使用这个折减必须算进去。6. 常见问题与排查实录6.1 距离远不及预期这是最高频的问题。排查顺序建议从物理层往上走。先看天线。用网络分析仪测一下驻波比如果大于2匹配肯定有问题。没有仪器的话用替代法换一根确认好的天线对比能排除天线本身的问题。再看供电。发射瞬间电压跌落会导致功率下降甚至复位。示波器抓一下发射时的电源波形纹波超过200mV就要加电容。然后看安装。天线是不是贴着金属、是不是被人体遮挡、是不是装在密闭金属箱里。这三条能解释大部分“距离短”的案例。最后看参数。确认双方的扩频因子、带宽、编码率、同步字完全一致。同步字不一致会导致能收到信号但解不出来表现为“有RSSI但没数据”这个坑我踩过。6.2 间歇性丢包与失联间歇性问题最难查因为复现困难。几个常见原因同频干扰。周围有其他LoRa设备或者同频段的其它业务表现为SNR很低甚至为负。用频谱仪扫一下或者临时改个频点对比测试。电源不稳。电池内阻上升导致发射时电压跌落发射失败但接收正常表现为“有时能发有时不能”。换个新电池对比一下。温漂。晶振精度不够温度变化后频率偏移超出容限。用TCXO可以根治判断方法是看失联是否和温度相关。看门狗复位。程序跑飞后重启期间丢失上报。查复位原因寄存器能区分是看门狗、掉电还是引脚复位。6.3 休眠电流下不去按这个顺序查先断开射频部分的供电看电流是否下降确认是不是射频没进睡眠再逐个断开外设定位漏电来源最后检查GPIO状态所有未使用的引脚配置成模拟输入所有输出引脚确认电平不会对外部电路形成灌电流。有个隐蔽的坑调试器连接状态下测的电流不准必须拔掉调试器、用独立供电测量。还有一些开发板上的电平转换芯片、LED、USB转串口芯片会持续耗电测之前要确认这些不影响。6.4 排查速查表现象优先排查项典型原因完全收不到频段、同步字、天线参数不一致、天线未接有RSSI无数据扩频因子、编码率、同步字解调参数不匹配近距离正常远距离丢包天线高度、遮挡、发射功率链路预算不足白天正常夜间丢包温度、电源晶振温漂、电池内阻休眠电流偏大GPIO、外设时钟、射频睡眠浮空引脚、外设未关偶发复位电源、看门狗、堆栈发射瞬间电压跌落下行收不到网关发射配置、节点接收窗口收发切换时序错误最后分享一个我觉得很值钱的习惯把每一次现场测试的RSSI、SNR、距离、环境、参数配置全部记到一个表里。做得多了你会发现很多“玄学”问题在数据积累到一定量之后会自己浮现出规律。我最初做Sub-1GHz项目时靠的就是几十次拉距测试的记录才慢慢摸清楚不同墙体结构、不同安装方式下的实际损耗区间。这些数字在任何手册上都查不到只能自己一点点攒。
阅读完成 · 觉得有帮助?
咨询建站