智能果皮箱 NB-IoT 联网上线记:从选卡到批量部署踩过的 5 个坑
最近两年我们在给一批 "城市智能果皮箱" 做联网改造,项目规模不大,一个试点城市 300 多台,但踩的坑比之前做几十个项目加起来都多。整理出来给后面做同类项目的同行参考。

一、设备硬件底子
先简单交代一下硬件平台,后面说坑的时候方便对照:
-
主控:STM32L4 低功耗 MCU,跑 FreeRTOS;
-
传感器:一只超声波测距模块,朝下装在箱体顶部,测箱内垃圾高度;
-
通信模组:移远 BC95,支持 NB-IoT Cat.NB2;
-
供电:顶部一块 5W 太阳能板 + 一节 3.6V 锂亚电池,目标是不接市电撑 3 年;
-
上报逻辑:平时每 15 分钟上报一次满溢率,检测到满溢立即上报一次事件。
选 NB-IoT 而不是 Cat.1,原因很直接:户外金属箱体、电池供电、小数据上报,NB 的 PSM 模式下待机电流是微安级,Cat.1 做不到。
二、踩过的 5 个坑
坑 1:APN 选错,模组死活附着不上
第一批样机我们直接插了张普通的 4G 物联卡,结果模组一直 CSCON: 10,0(附着失败),AT 日志反复 COPS: 0,0,"CHN-CMCC" 搜网成功但就是不附着。
查了半天发现:普通 4G 物联卡走的是 CMNET 或 CMNET 专用 APN,NB-IoT 设备必须走 CMNB-IOT(移动)或 3GNET-NB(电信)这种专用 APN。换卡、改 AT 指令 AT+CGDCONT=1,"IP","CMNB-IOT" 之后,5 秒内附着成功。这个坑每个新做 NB 项目的团队基本都会踩一次。
坑 2:不锈钢箱体是金属屏蔽罩
样机阶段一切正常,装到户外不锈钢箱体里之后,RSSI 直接从 -75dBm 掉到 -115dBm,大面积搜不到网。
原因很简单:不锈钢桶身就是个法拉第笼,模组 PCB 天线贴在箱体内部,信号全被屏蔽了。解决方案是把天线用同轴线外引到箱体顶部,贴在太阳能板旁边 —— 那里是整个箱子唯一没有金属遮挡的位置。改完之后 RSSI 回到 -85dBm 左右。
坑 3:PSM 参数没配对,电池两个月就见底
NB-IoT 最核心的优势就是低功耗,但这个优势是要靠参数配出来的。我们一开始没管模组的 PSM/eDRX 参数,让它默认跑,结果一台设备锂亚电池两个月就从 3.6V 掉到 3.0V 欠压。
后来照着模组手册把 PSM 请求周期开到 8 小时、eDRX 关掉,再把 MCU 在两次上报之间深度睡眠,平均待机电流从 15mA 压到了 80μA,电池寿命这才回到设计预期的 3 年。NB-IoT 的低功耗不是开箱即用的,是调出来的。
坑 4:卡欠费停机,模组疯狂重连把流量烧超
有一批设备上线一个月,后台发现某几张卡流量跑得异常高。拉日志一看:那张卡因为我们内部套餐配置问题停机了,模组检测不到网络,按照默认策略每 30 秒重连一次,每次重连都附着、读信号、被拒,一个月下来烧了 200MB 流量。
后来在固件里加了指数退避重连:第一次失败等 30 秒,第二次等 2 分钟,第三次等 10 分钟,最长 1 小时。同时在卡管理后台开了 "停机后不允许重连流量" 的策略,这种异常流量才压下来。
坑 5:北方冬季某运营商 NB 小区批量离线
项目上线第二个冬天,北方城市一个区的设备突然 30% 离线。我们查了现场,天线没松、电池有电、固件没崩,就是附着不上。最后找运营商对接人才知道:那个区的 NB-IoT 基站在冬季做了一次网络优化,把部分低优先级小区的载波关了,给 4G 数据业务让路。
这件事给我们最大的教训是:NB-IoT 设备的在网率,不取决于你的固件写得多好,还取决于运营商那边什么时候动网。所以现在我们选卡的时候,第一件事就是问清楚供应商能不能提供 "网络变动主动通知"、能不能批量切换 APN 或换网。
三、写在最后
智能果皮箱这种东西,硬件看着简单 —— 一个桶、一块太阳能板、一只超声波探头。真正难的是让它在户外无人值守跑三年。我们这 300 多台设备跑下来,80% 的现场问题最后都能追溯到通信环节:要么卡不对、要么信号差、要么参数没配好。
关于我们
北京乐讯通科技有限公司始创于 2019 年,持有工信部增值电信业务许可证(许可证编号:B2-20202271),通过 ISO9001 质量体系认证。公司深耕企业通信领域,主营短信平台与物联网卡两大核心业务,面向智慧市政、智慧环卫、户外无人值守类物联网项目,提供安全、稳定、可批量管理的蜂窝联网底座。官网:www.loktong.com。

浙公网安备 33010602011771号