第 13 篇:量产 Checklist——从原型到产品,一条都不能少
原型跑通了,Demo 给老板看了。下一步:把面包板上的飞线变成能卖的产品。中间隔着十几道工序,这篇给你一个完整的 Checklist。
1. 硬件量产流程
原型验证 → 原理图设计 → PCB Layout → 打样 →
PCBA 贴片 → 外壳设计 → 开模 → 组装 → 测试 → 包装
PCB 设计要点
| 检查项 | 常见坑 |
|---|---|
| 天线区域净空 | ESP32 模块天线下方不能铺铜,否则信号-10dB |
| 电源去耦 | 每个 VDD 脚放 100nF + 10μF,位置靠近引脚 |
| 强电隔离 | 220V 侧和低压侧开槽隔离,爬电距离 ≥6mm |
| 继电器反接保护 | 继电器线圈并联续流二极管(1N4148) |
| 烧录接口 | 预留 UART0 的 TX/RX/IO0/EN 测试点 |
| ESD 保护 | USB 口、按键、对外接口加 TVS 管 |
外壳设计
方案 A:公模(淘宝买现成外壳)→ 成本 ¥2-5,适合小批量(<1000)
方案 B:3D 打印 → 成本 ¥15-30,适合验证
方案 C:开模注塑 → 模具费 ¥3000-8000,单件 ¥1-2,适合大批量
建议:先公模验证市场,日销 >100 再开模。
2. WiFi 配网——三种方案齐上
产品不能写死 SSID。需要让用户方便地配网。
| 方案 | 用户体验 | 稳定性 | 推荐度 |
|---|---|---|---|
| BLE 配网 | ★★★★★ 极好 | ★★★★★ | ⭐⭐⭐ 首选 |
| SmartConfig | ★★★ 一般 | ★★★ 70%成功率 | ⭐⭐ 备选 |
| AP 模式 | ★★ 麻烦 | ★★★★★ | ⭐ 兜底方案 |
推荐组合:BLE 为主 + AP 模式作为兜底(长按按键 5 秒进入 AP 模式)
3. OTA 升级——必须稳定
量产设备必须支持 OTA,否则一个 Bug 就召回。
OTA 策略:
1. 双分区(ota_0 / ota_1)→ 升级失败自动回滚
2. 从服务器下载前先比对版本号
3. 校验 MD5/SHA256 → 避免下载损坏
4. 分批推送(先推 1% 设备 → 观察 → 全量)
5. 保留降级能力(旧版本固件在服务器永久存档)
4. 安全——IoT 产品的命门
2016 年 Mirai 僵尸网络感染了数百万 IoT 设备,就是因为默认密码没改。
| 安全措施 | 必须/建议 | 说明 |
|---|---|---|
| MQTT 用户名密码 | ✅ 必须 | 每个设备独立密码,不要用同一个 |
| TLS 加密 | ✅ 必须 | MQTT over TLS (8883端口) |
| OTA 固件签名 | ⚠️ 建议 | 防止恶意固件刷入 |
| 关闭调试口 | ✅ 必须 | 量产固件关闭 UART 日志 |
| Flash 加密 | ⚠️ 建议 | 防止固件被读出反编译 |
| 安全启动 | ⚠️ 建议 | 防止非授权固件启动 |
| 默认密码 | ✅ 必须 | AP 配网模式加密码 |
最小安全方案(小产品够用):
// 1. MQTT 用 TLS
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = "mqtts://your-broker.com:8883",
.broker.verification.certificate = server_cert_pem_start,
.credentials = {
.client_id = device_unique_id(),
.username = device_unique_id(),
.authentication.password = device_password(),
},
};
// 2. 关闭调试日志
esp_log_level_set("*", ESP_LOG_NONE); // 量产版本,关掉所有日志
// 3. AP 配网加密码
wifi_config_t ap_cfg = {
.ap = {
.ssid = "SmartSocket_Setup",
.password = "setup123456",
.max_connection = 1,
},
};
5. 云平台——从自建到商业
| 方案 | 成本 | 适用规模 |
|---|---|---|
| Docker 自建 | 服务器 ¥100/月 | < 1000 设备 |
| EMQX Cloud 免费版 | ¥0 | < 5 设备 |
| 阿里云 IoT | ¥0.01/设备/月 | 不限 |
| 腾讯云 IoT | ¥0.01/设备/月 | 不限 |
| 涂鸦智能 | 按模块收费 | 快速出产品 |
建议路线:Docker 自建(验证)→ 阿里云/腾讯云 IoT(量产)
6. 量产测试——治具 + 自动化
100 台还能手动测,1000 台必须自动化。
# 产测脚本(Python)
import paho.mqtt.client as mqtt
import serial
import time
def test_device(serial_port):
"""单个设备测试"""
ser = serial.Serial(serial_port, 115200, timeout=5)
# 1. 上电 → 等待启动日志
line = ser.readline().decode()
assert "WiFi connected" in line, "WiFi 连接失败"
# 2. 连 MQTT → 等状态上报
client = mqtt.Client()
client.connect("192.168.1.100", 1883)
msg_received = False
def on_message(client, userdata, msg):
nonlocal msg_received
data = json.loads(msg.payload)
assert 200 < data["voltage"] < 250, f"电压异常: {data['voltage']}"
msg_received = True
client.on_message = on_message
client.subscribe("device/test/status")
client.loop_start()
# 等 10 秒
time.sleep(10)
assert msg_received, "MQTT 数据未上报"
return True # PASS
7. 认证——合规才能卖
| 认证 | 适用范围 | 费用(参考) |
|---|---|---|
| SRRC | 所有带无线电的产品 | ¥2-5 万 |
| 3C | 220V 市电产品(插座类) | ¥3-8 万 |
| CE (出口欧盟) | 出口欧洲 | ¥1-3 万 |
| FCC (出口美国) | 出口美国 | ¥1-3 万 |
| RoHS | 出口欧盟 | ¥0.3-0.5 万 |
对于 ESP32 产品:如果用乐鑫官方模组(ESP32-C3-MINI-1),模组本身已过 SRRC 和 FCC → 整机认证会简化很多。
8. 量产 Checklist 汇总
□ 原理图 Review(至少 2 人交叉检查)
□ PCB 天线净空区域检查
□ 强电爬电距离检查
□ EMC 预测试(传导、辐射)
□ BLE 配网 + AP 配网均测试通过
□ OTA 升级 + 自动回滚测试通过
□ 连续运行 72 小时不重启
□ 产测脚本跑通 50 台
□ 说明书 + 包装设计完成
□ 认证申请提交
□ 售后流程建立
下一篇:专栏总结——你已经是 IoT 全栈工程师了
第 13 篇:量产 Checklist——从原型到产品,一条都不能少
原型跑通了,Demo 给老板看了。下一步:把面包板上的飞线变成能卖的产品。中间隔着十几道工序,这篇给你一个完整的 Checklist。
1. 硬件量产流程
原型验证 → 原理图设计 → PCB Layout → 打样 →
PCBA 贴片 → 外壳设计 → 开模 → 组装 → 测试 → 包装
PCB 设计要点
| 检查项 | 常见坑 |
|---|---|
| 天线区域净空 | ESP32 模块天线下方不能铺铜,否则信号-10dB |
| 电源去耦 | 每个 VDD 脚放 100nF + 10μF,位置靠近引脚 |
| 强电隔离 | 220V 侧和低压侧开槽隔离,爬电距离 ≥6mm |
| 继电器反接保护 | 继电器线圈并联续流二极管(1N4148) |
| 烧录接口 | 预留 UART0 的 TX/RX/IO0/EN 测试点 |
| ESD 保护 | USB 口、按键、对外接口加 TVS 管 |
外壳设计
方案 A:公模(淘宝买现成外壳)→ 成本 ¥2-5,适合小批量(<1000)
方案 B:3D 打印 → 成本 ¥15-30,适合验证
方案 C:开模注塑 → 模具费 ¥3000-8000,单件 ¥1-2,适合大批量
建议:先公模验证市场,日销 >100 再开模。
2. WiFi 配网——三种方案齐上
产品不能写死 SSID。需要让用户方便地配网。
| 方案 | 用户体验 | 稳定性 | 推荐度 |
|---|---|---|---|
| BLE 配网 | ★★★★★ 极好 | ★★★★★ | ⭐⭐⭐ 首选 |
| SmartConfig | ★★★ 一般 | ★★★ 70%成功率 | ⭐⭐ 备选 |
| AP 模式 | ★★ 麻烦 | ★★★★★ | ⭐ 兜底方案 |
推荐组合:BLE 为主 + AP 模式作为兜底(长按按键 5 秒进入 AP 模式)
3. OTA 升级——必须稳定
量产设备必须支持 OTA,否则一个 Bug 就召回。
OTA 策略:
1. 双分区(ota_0 / ota_1)→ 升级失败自动回滚
2. 从服务器下载前先比对版本号
3. 校验 MD5/SHA256 → 避免下载损坏
4. 分批推送(先推 1% 设备 → 观察 → 全量)
5. 保留降级能力(旧版本固件在服务器永久存档)
4. 安全——IoT 产品的命门
2016 年 Mirai 僵尸网络感染了数百万 IoT 设备,就是因为默认密码没改。
| 安全措施 | 必须/建议 | 说明 |
|---|---|---|
| MQTT 用户名密码 | ✅ 必须 | 每个设备独立密码,不要用同一个 |
| TLS 加密 | ✅ 必须 | MQTT over TLS (8883端口) |
| OTA 固件签名 | ⚠️ 建议 | 防止恶意固件刷入 |
| 关闭调试口 | ✅ 必须 | 量产固件关闭 UART 日志 |
| Flash 加密 | ⚠️ 建议 | 防止固件被读出反编译 |
| 安全启动 | ⚠️ 建议 | 防止非授权固件启动 |
| 默认密码 | ✅ 必须 | AP 配网模式加密码 |
最小安全方案(小产品够用):
// 1. MQTT 用 TLS
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = "mqtts://your-broker.com:8883",
.broker.verification.certificate = server_cert_pem_start,
.credentials = {
.client_id = device_unique_id(),
.username = device_unique_id(),
.authentication.password = device_password(),
},
};
// 2. 关闭调试日志
esp_log_level_set("*", ESP_LOG_NONE); // 量产版本,关掉所有日志
// 3. AP 配网加密码
wifi_config_t ap_cfg = {
.ap = {
.ssid = "SmartSocket_Setup",
.password = "setup123456",
.max_connection = 1,
},
};
5. 云平台——从自建到商业
| 方案 | 成本 | 适用规模 |
|---|---|---|
| Docker 自建 | 服务器 ¥100/月 | < 1000 设备 |
| EMQX Cloud 免费版 | ¥0 | < 5 设备 |
| 阿里云 IoT | ¥0.01/设备/月 | 不限 |
| 腾讯云 IoT | ¥0.01/设备/月 | 不限 |
| 涂鸦智能 | 按模块收费 | 快速出产品 |
建议路线:Docker 自建(验证)→ 阿里云/腾讯云 IoT(量产)
6. 量产测试——治具 + 自动化
100 台还能手动测,1000 台必须自动化。
# 产测脚本(Python)
import paho.mqtt.client as mqtt
import serial
import time
def test_device(serial_port):
"""单个设备测试"""
ser = serial.Serial(serial_port, 115200, timeout=5)
# 1. 上电 → 等待启动日志
line = ser.readline().decode()
assert "WiFi connected" in line, "WiFi 连接失败"
# 2. 连 MQTT → 等状态上报
client = mqtt.Client()
client.connect("192.168.1.100", 1883)
msg_received = False
def on_message(client, userdata, msg):
nonlocal msg_received
data = json.loads(msg.payload)
assert 200 < data["voltage"] < 250, f"电压异常: {data['voltage']}"
msg_received = True
client.on_message = on_message
client.subscribe("device/test/status")
client.loop_start()
# 等 10 秒
time.sleep(10)
assert msg_received, "MQTT 数据未上报"
return True # PASS
7. 认证——合规才能卖
| 认证 | 适用范围 | 费用(参考) |
|---|---|---|
| SRRC | 所有带无线电的产品 | ¥2-5 万 |
| 3C | 220V 市电产品(插座类) | ¥3-8 万 |
| CE (出口欧盟) | 出口欧洲 | ¥1-3 万 |
| FCC (出口美国) | 出口美国 | ¥1-3 万 |
| RoHS | 出口欧盟 | ¥0.3-0.5 万 |
对于 ESP32 产品:如果用乐鑫官方模组(ESP32-C3-MINI-1),模组本身已过 SRRC 和 FCC → 整机认证会简化很多。
8. 量产 Checklist 汇总
□ 原理图 Review(至少 2 人交叉检查)
□ PCB 天线净空区域检查
□ 强电爬电距离检查
□ EMC 预测试(传导、辐射)
□ BLE 配网 + AP 配网均测试通过
□ OTA 升级 + 自动回滚测试通过
□ 连续运行 72 小时不重启
□ 产测脚本跑通 50 台
□ 说明书 + 包装设计完成
□ 认证申请提交
□ 售后流程建立
下一篇:专栏总结——你已经是 IoT 全栈工程师了