前言
当物联网遇上人工智能,"万物互联"正在进化为"万物智联"。从智能音箱到工业预测性维护,从农业环境感知到智能家居自动化,AI 正在赋予 IoT 设备"思考"的能力。
沧州虎王科技在物联网平台建设中,深度探索了 AI 与 IoT 的融合实践。从边缘端的轻量级推理到云端的深度学习分析,我们正在构建一个"端-边-云"三级智能体系。本文将分享我们的技术方案和实践经验。
一、AI+IoT 的技术架构
1.1 端-边-云三级智能
┌──────────────────────────────────────────────────┐
│ 云端智能 │
│ ┌──────┐ ┌──────┐ ┌──────────────┐ │
│ │ 模型训练 │ │ 大数据分析 │ │ 预测性维护 │ │
│ │ 深度学习 │ │ 数据仓库 │ │ 异常检测 │ │
│ └──────┘ └──────┘ └──────────────┘ │
└──────────────────┬───────────────────────────────┘
│ MQTT/HTTPS
v
┌──────────────────────────────────────────────────┐
│ 边缘智能 │
│ ┌──────┐ ┌──────┐ ┌──────────────┐ │
│ │ 本地推理 │ │ 数据预处理 │ │ 实时决策 │ │
│ │ TinyML │ │ 特征提取 │ │ 规则引擎 │ │
│ └──────┘ └──────┘ └──────────────┘ │
└──────────────────┬───────────────────────────────┘
│ BLE/WiFi/Serial
v
┌──────────────────────────────────────────────────┐
│ 设备端智能 │
│ ┌──────┐ ┌──────┐ ┌──────────────┐ │
│ │ 传感器采集│ │ 简单过滤 │ │ 紧急告警 │ │
│ │ 数据采集 │ │ 阈值判断 │ │ 本地缓存 │ │
│ └──────┘ └──────┘ └──────────────┘ │
└──────────────────────────────────────────────────┘
1.2 各层级职责划分
| 层级 | 硬件平台 | AI 能力 | 延迟 | 典型任务 |
|---|---|---|---|---|
| 设备端 | ESP32/MCU | 阈值判断 | <1ms | 紧急停机、数据过滤 |
| 边缘端 | 树莓派/Jetson | 轻量推理 | 10-100ms | 图像识别、语音唤醒 |
| 云端 | GPU服务器 | 深度学习 | 100ms-1s | 模型训练、趋势预测 |
二、边缘端 TinyML 实践
2.1 ESP32 上的 TensorFlow Lite
TinyML 让 MCU 也能运行机器学习推理。沧州虎王科技在 ESP32 上部署了 TensorFlow Lite Micro:
#include "tensorflow/lite/micro/all_ops_resolver.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/micro/system_setup.h"
#include "model.h" // 训练好的模型头文件
// 全局变量
tflite::AllOpsResolver resolver;
tflite::MicroInterpreter* interpreter = nullptr;
TfLiteTensor* input = nullptr;
TfLiteTensor* output = nullptr;
// 内存池
constexpr int kTensorArenaSize = 8 * 1024;
uint8_t tensor_arena[kTensorArenaSize];
void setupTFLite() {
tflite::InitializeTarget();
// 加载模型
const tflite::Model* model = tflite::GetModel(anomaly_model_tflite);
// 构建解释器
static tflite::MicroInterpreter static_interpreter(
model, resolver, tensor_arena, kTensorArenaSize);
interpreter = &static_interpreter;
// 分配张量
interpreter->AllocateTensors();
input = interpreter->input(0);
output = interpreter->output(0);
}
// 异常检测推理
float detectAnomaly(float temperature, float humidity, float pressure) {
// 归一化输入
input->data.f[0] = (temperature - 25.0) / 10.0;
input->data.f[1] = (humidity - 50.0) / 20.0;
input->data.f[2] = (pressure - 1013.0) / 10.0;
// 运行推理
TfLiteStatus status = interpreter->Invoke();
if (status != kTfLiteOk) return -1;
// 输出为异常分数 (0=正常, 1=异常)
return output->data.f[0];
}
2.2 模型训练与转换
# Python 端训练异常检测模型
import tensorflow as tf
import numpy as np
# 构建简单的自编码器
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, input_shape=(3,), name='input'),
tf.keras.layers.Dense(2, activation='relu', name='encoder'),
tf.keras.layers.Dense(3, activation='sigmoid', name='output')
])
model.compile(optimizer='adam', loss='mse')
# 训练数据:正常工况下的传感器读数
train_data = np.array([
[25.1, 50.2, 1013.1],
[25.3, 49.8, 1013.2],
# ... 更多正常数据
])
model.fit(train_data, train_data, epochs=100, verbose=0)
# 计算重建误差作为异常分数
predictions = model.predict(train_data)
mse = np.mean(np.square(train_data - predictions), axis=1)
threshold = np.percentile(mse, 95) # 95% 分位数作为阈值
# 转换为 TFLite Micro 模型
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS]
tflite_model = converter.convert()
# 保存为 C 数组(用于嵌入 ESP32 固件)
with open('model.h', 'w') as f:
f.write('const unsigned char anomaly_model_tflite[] = {')
f.write(','.join(['0x%02x' % b for b in tflite_model]))
f.write('};')
f.write(f'\nconst int anomaly_model_tflite_len = {len(tflite_model)};')
2.3 实际应用:设备健康监测
class DeviceHealthMonitor {
public:
void begin() {
setupTFLite();
baselineError = loadBaselineError();
}
void check(float temp, float humi, float pressure) {
float anomalyScore = detectAnomaly(temp, humi, pressure);
if (anomalyScore > threshold) {
// 异常检测
Serial.printf("ANOMALY: score=%.3f, t=%.1f, h=%.1f, p=%.1f\n",
anomalyScore, temp, humi, pressure);
// 上报云端
mqttClient.publish("device/anomaly",
String(anomalyScore) + "," + String(temp) + "," +
String(humi) + "," + String(pressure));
// 本地告警
triggerAlarm();
}
}
private:
float threshold = 0.15;
float baselineError = 0;
void triggerAlarm() {
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
}
};
三、云端 AI 分析
3.1 时序数据预测
物联网设备产生的传感器数据天然是时间序列。沧州虎王科技使用 LSTM 网络进行温度趋势预测:
import tensorflow as tf
import numpy as np
class TemperaturePredictor:
def __init__(self):
self.model = self.build_model()
self.scaler = None
def build_model(self):
model = tf.keras.Sequential([
tf.keras.layers.LSTM(64, return_sequences=True,
input_shape=(24, 1)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.LSTM(32),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(6) # 预测未来6小时
])
model.compile(optimizer='adam', loss='mse')
return model
def prepare_data(self, temperatures, window=24):
"""将温度序列转换为滑动窗口样本"""
X, y = [], []
for i in range(len(temperatures) - window - 6):
X.append(temperatures[i:i+window])
y.append(temperatures[i+window:i+window+6])
return np.array(X), np.array(y)
def train(self, historical_data):
X, y = self.prepare_data(historical_data)
# 归一化
mean, std = X.mean(), X.std()
X = (X - mean) / std
y = (y - mean) / std
self.model.fit(X, y, epochs=50, batch_size=32,
validation_split=0.2, verbose=0)
def predict(self, recent_temperatures):
"""预测未来6小时温度"""
recent = np.array(recent_temperatures[-24:])
recent = (recent - mean) / std
prediction = self.model.predict(recent.reshape(1, 24, 1))
return prediction[0] * std + mean
3.2 异常检测服务
class IoTAnomalyDetector:
def __init__(self):
self.models = {} # 按设备类型缓存模型
def detect_anomalies(self, device_data):
"""
device_data: {
deviceId: 'esp32-001',
deviceType: 'temperature_sensor',
readings: [
{'timestamp': ..., 'temp': 25.3, 'humi': 50.1},
...
]
}
"""
device_type = device_data['deviceType']
readings = device_data['readings']
# 获取对应模型
model = self.models.get(device_type)
if not model:
model = self.load_model(device_type)
self.models[device_type] = model
# 检测每个数据点
anomalies = []
for reading in readings:
features = self.extract_features(reading)
score = model.score_samples([features])[0]
if score < model.threshold:
anomalies.append({
'timestamp': reading['timestamp'],
'score': float(score),
'features': features,
'reading': reading
})
return {
'deviceId': device_data['deviceId'],
'totalChecked': len(readings),
'anomalyCount': len(anomalies),
'anomalies': anomalies[:10] # 最多返回10个
}
四、智能规则引擎
4.1 规则引擎设计
沧州虎王科技 IoT 平台的规则引擎支持 AI 增强的条件判断:
class SmartRuleEngine {
constructor() {
this.rules = [];
this.mlClient = new MLInferenceClient();
}
// 注册规则
addRule(rule) {
this.rules.push({
id: rule.id,
name: rule.name,
condition: rule.condition, // 条件表达式
actions: rule.actions, // 执行动作
aiEnabled: rule.aiEnabled || false,
cooldown: rule.cooldown || 60, // 冷却时间(秒)
lastTriggered: 0
});
}
// 处理设备数据
async processData(deviceId, data) {
for (const rule of this.rules) {
if (this.inCooldown(rule)) continue;
let shouldTrigger = false;
if (rule.aiEnabled) {
// AI 增强判断:结合 ML 推理结果
const mlResult = await this.mlClient.infer(deviceId, data);
shouldTrigger = this.evaluateWithAI(rule.condition, data, mlResult);
} else {
// 传统规则判断
shouldTrigger = this.evaluate(rule.condition, data);
}
if (shouldTrigger) {
await this.executeActions(rule, deviceId, data);
rule.lastTriggered = Date.now();
}
}
}
evaluateWithAI(condition, data, mlResult) {
// 将 AI 预测结果加入条件上下文
const context = {
...data,
ai: {
anomalyScore: mlResult.anomalyScore,
prediction: mlResult.prediction,
confidence: mlResult.confidence
}
};
return this.evaluate(condition, context);
}
async executeActions(rule, deviceId, data) {
for (const action of rule.actions) {
switch (action.type) {
case 'notify':
await this.sendNotification(deviceId, action.message);
break;
case 'command':
await this.sendDeviceCommand(deviceId, action.command);
break;
case 'webhook':
await this.callWebhook(action.url, {deviceId, data, rule: rule.id});
break;
}
}
}
}
4.2 规则示例
// 规则1: 温度异常 + AI确认
engine.addRule({
id: 'temp-anomaly-ai',
name: '温度异常(AI增强)',
aiEnabled: true,
condition: 'data.temperature > 40 && data.ai.anomalyScore > 0.8',
actions: [
{type: 'notify', message: '设备${deviceId}温度异常,AI置信度${data.ai.confidence}%'},
{type: 'command', command: 'reduce_power'},
{type: 'webhook', url: 'https://api.czkree.com/alert/temp'}
],
cooldown: 300
});
// 规则2: 预测性维护
engine.addRule({
id: 'predictive-maintenance',
name: '预测性维护告警',
aiEnabled: true,
condition: 'data.ai.prediction.nextHourTemp > 55 && data.ai.confidence > 0.85',
actions: [
{type: 'notify', message: '设备${deviceId}预计1小时后温度超标,建议提前干预'},
{type: 'command', command: 'activate_cooling'}
],
cooldown: 600
});
五、沧州虎王科技 AI+IoT 实践案例
5.1 智能温室监控
沧州虎王科技为农业客户部署的智能温室系统:
系统组成:
- ESP32 + DHT22 + 光照传感器 + 土壤湿度传感器
- 边缘网关(树莓派):本地运行图像识别模型,检测作物生长状态
- 云端:训练作物生长预测模型,优化灌溉策略
AI 能力:
- 温湿度异常检测:TinyML 模型在 ESP32 上实时运行
- 病虫害识别:边缘端图像识别,准确率 92%
- 灌溉优化:云端 LSTM 模型预测未来 24 小时土壤含水量
5.2 工业设备预测性维护
系统组成:
- 振动传感器 + 温度传感器 + 电流传感器
- ESP32 采集高频数据,通过 MQTT 上报
- 云端运行异常检测模型 + 故障预测模型
AI 能力:
- 振动频谱分析:FFT + CNN 识别轴承故障类型
- 剩余寿命预测:基于历史数据的时序预测
- 自动工单:检测到异常自动生成维护工单
# 工业振动分析服务
class VibrationAnalyzer:
def __init__(self):
self.fft_size = 1024
self.model = self.load_cnn_model()
def analyze(self, vibration_data):
# 1. FFT 频域分析
freqs = np.fft.rfft(vibration_data, self.fft_size)
spectrum = np.abs(freqs)
# 2. 特征提取
features = self.extract_features(spectrum)
# 3. CNN 分类
prediction = self.model.predict(features.reshape(1, -1, 1))
fault_type = self.decode_prediction(prediction)
return {
'faultType': fault_type,
'confidence': float(prediction.max()),
'severity': self.assess_severity(spectrum, fault_type),
'recommendation': self.get_recommendation(fault_type)
}
六、技术选型与挑战
6.1 AI 框架对比
| 框架 | 适用平台 | 模型大小 | 推理速度 | 易用性 |
|---|---|---|---|---|
| TFLite Micro | ESP32/MCU | <100KB | 快 | 中 |
| TFLite | 树莓派 | <10MB | 中 | 高 |
| ONNX Runtime | 边缘服务器 | <100MB | 快 | 高 |
| PyTorch | 云端GPU | 不限 | 慢 | 高 |
6.2 关键挑战与解决
| 挑战 | 影响 | 解决方案 |
|---|---|---|
| MCU 内存限制 | 模型大小受限 | 量化压缩 + 网络剪枝 |
| 功耗约束 | 电池设备AI不可持续 | 间歇推理 + 事件触发 |
| 数据标注成本 | 训练数据不足 | 迁移学习 + 数据增强 |
| 模型更新 | 边缘设备模型迭代 | OTA 下发模型 + 热加载 |
总结
AI+IoT 不是简单的"1+1",而是需要从端到云的系统化设计。沧州虎王科技的实践经验表明:
- 边缘智能是趋势:TinyML 让 MCU 也能做推理,减少云端依赖
- 预测优于告警:从"事后告警"转向"事前预测"是 AI 的核心价值
- 渐进式部署:从规则引擎开始,逐步引入 ML 模型,不要一步到位
- 数据是基础:没有高质量的历史数据,再好的 AI 模型也无用
沧州虎王科技将继续深耕 AI+IoT 领域,推动物联网从"互联"走向"智联"。欢迎访问 hardware.czkree.com 了解更多产品和技术方案。