Cat.1 典型应用场景
场景一:智能 POS 机
需求分析
业务需求:
- 支付交易:每笔交易数据量 < 10KB,要求 < 3秒完成
- 语音通话:客服热线、语音提示
- 远程管理:固件升级、参数配置
- 稳定性:7×24小时不间断运行
技术需求:
- 速率:1Mbps 以上(Cat.1 的 10Mbps 绰绰有余)
- 时延:< 100ms
- 语音:VoLTE 支持
- 功耗:有线供电,功耗不敏感推荐方案
模组:EC200U-CN(Cat.1 bis,单天线,低成本)
SIM:物联网专用 SIM(运营商物联网套餐)
天线:内置 FPC 天线(节省空间)
接口:UART(AT 指令控制)关键代码示例
c
// POS 机 Cat.1 模组初始化
void cat1_init(void) {
// 等待模组启动
delay_ms(5000);
// 配置 APN
at_send("AT+CGDCONT=1,\"IP\",\"cmnet\"\r\n");
// 激活数据连接
at_send("AT+CGACT=1,1\r\n");
// 配置 TCP 连接(支付服务器)
at_send("AT+QIOPEN=1,0,\"TCP\",\"pay.example.com\",443,0,1\r\n");
}
// 发起支付请求
int pos_payment(const char *order_data, int len) {
char cmd[64];
snprintf(cmd, sizeof(cmd), "AT+QISEND=0,%d\r\n", len);
at_send(cmd);
// 等待 > 提示符
at_wait_prompt();
// 发送支付数据
at_send_raw(order_data, len);
// 等待响应
return at_wait_response("SEND OK", 5000);
}场景二:共享单车
系统架构
┌─────────────────────────────────────────┐
│ 共享单车终端 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ Cat.1 模组│ │ GNSS 模组│ │ 蓝牙 │ │
│ │ EC200U │ │ LC29H │ │ BLE │ │
│ └──────────┘ └──────────┘ └───────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ MCU 主控 │ │ 电子锁 │ │ 电池 │ │
│ │ STM32 │ │ │ │ 管理 │ │
│ └──────────┘ └──────────┘ └───────┘ │
└─────────────────────────────────────────┘
↓ Cat.1 网络
┌─────────────────────────────────────────┐
│ 共享单车云平台 │
│ 用户管理 / 订单管理 / 位置追踪 / 运维 │
└─────────────────────────────────────────┘功能实现
python
# QuecPython 实现(EC600M)
import utime
import gnss
import dataCall
import request
class BikeController:
def __init__(self):
self.bike_id = "BIKE_001"
self.server_url = "https://api.bikeshare.com"
self.lock_status = "locked"
def get_location(self):
"""获取 GPS 位置"""
gnss.init()
gnss.on(1)
utime.sleep(30) # 等待定位
location = gnss.getLocation()
return {
"lat": location[0],
"lng": location[1],
"speed": location[2]
}
def report_status(self):
"""上报状态到云平台"""
location = self.get_location()
data = {
"bike_id": self.bike_id,
"location": location,
"lock_status": self.lock_status,
"battery": self.get_battery_level(),
"timestamp": utime.time()
}
response = request.post(
self.server_url + "/status",
json=data
)
return response.status_code == 200
def unlock(self, user_id):
"""开锁"""
# 验证用户权限
resp = request.post(
self.server_url + "/unlock",
json={"bike_id": self.bike_id, "user_id": user_id}
)
if resp.json()["authorized"]:
self.lock_status = "unlocked"
# 控制电子锁开锁
self.control_lock(False)
return True
return False场景三:工业数据采集网关
架构设计
现场设备层:
PLC(Modbus RTU)→ RS485 总线
传感器(4-20mA)→ ADC 采集
仪表(Modbus TCP)→ 以太网
网关层(Cat.1 模组):
协议转换:Modbus → MQTT
数据缓存:本地 Flash 存储
远程通信:Cat.1 上传云端
云平台层:
MQTT Broker → 数据处理 → 数据库 → 可视化Modbus 转 MQTT 实现
python
# QuecPython 工业网关示例
import umodbus
import umqtt
import ujson
class IndustrialGateway:
def __init__(self):
# 初始化 Modbus RTU(RS485)
self.modbus = umodbus.ModbusRTU(
port=2, # UART2
baudrate=9600,
parity='N',
stopbits=1
)
# 初始化 MQTT 客户端
self.mqtt = umqtt.MQTTClient(
client_id="gateway_001",
server="broker.emqx.io",
port=1883
)
self.mqtt.connect()
def read_plc_data(self, slave_id, start_addr, count):
"""读取 PLC 保持寄存器"""
try:
data = self.modbus.read_holding_registers(
slave_id, start_addr, count
)
return data
except Exception as e:
print("Modbus error:", e)
return None
def publish_data(self, device_id, data):
"""发布数据到 MQTT"""
payload = ujson.dumps({
"device_id": device_id,
"data": data,
"timestamp": utime.time()
})
topic = f"factory/device/{device_id}/data"
self.mqtt.publish(topic, payload)
def run(self):
"""主循环"""
while True:
# 读取 PLC 数据
plc_data = self.read_plc_data(1, 0, 10)
if plc_data:
self.publish_data("PLC_001", plc_data)
utime.sleep(5) # 每5秒采集一次场景四:智能门锁
方案对比
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Cat.1 | 速率高,实时性好 | 功耗较高 | 有线供电门锁 |
| NB-IoT | 超低功耗 | 时延高(1-10s) | 电池供电,低频使用 |
| Wi-Fi | 速率高,成本低 | 需要 Wi-Fi 覆盖 | 家用门锁 |
| BLE | 超低功耗 | 需要手机蓝牙 | 近场开锁 |
推荐方案(公寓楼宇门锁)
主通信:Cat.1(EC200U-CN)
- 远程开锁指令接收
- 开锁记录上传
- 固件远程升级
辅助通信:BLE
- 手机近场开锁(无网络时备用)
- 配置参数
供电:有线供电(220V 转 5V)
- 无需考虑功耗