目录
[① 感知层(Perception Layer)](#① 感知层(Perception Layer))
[② 边缘计算层(Edge Intelligence)](#② 边缘计算层(Edge Intelligence))
[③ 网络层(Network Layer)](#③ 网络层(Network Layer))
[④ 云端决策层(Cloud Decision Layer)](#④ 云端决策层(Cloud Decision Layer))
[⑤ 执行层(Actuation Layer)](#⑤ 执行层(Actuation Layer))
[二、决策系统在 IoT 中到底放在哪里?](#二、决策系统在 IoT 中到底放在哪里?)
[五、和传统 IoT 的本质区别](#五、和传统 IoT 的本质区别)
[🎯 目标场景:ESP32 智能散热控制器](#🎯 目标场景:ESP32 智能散热控制器)
[🧠 一、系统总体架构](#🧠 一、系统总体架构)
[🔌 二、硬件组成](#🔌 二、硬件组成)
[🔄 三、软件逻辑流程](#🔄 三、软件逻辑流程)
[🧮 四、模糊控制算法(嵌入式精简版)](#🧮 四、模糊控制算法(嵌入式精简版))
[1️⃣ 三角隶属函数](#1️⃣ 三角隶属函数)
[2️⃣ 模糊化输入](#2️⃣ 模糊化输入)
[3️⃣ 模糊规则推理](#3️⃣ 模糊规则推理)
[4️⃣ 解模糊(重心法简化版)](#4️⃣ 解模糊(重心法简化版))
[⚙️ 五、ESP32 主程序框架](#⚙️ 五、ESP32 主程序框架)
[🌐 六、如何升级成"真正 IoT"](#🌐 六、如何升级成“真正 IoT”)
[🧩 七、你这个架构已经具备的能力](#🧩 七、你这个架构已经具备的能力)
我会从 工程全景视角 讲清楚:从传感器到云端,从数据到决策,再到控制闭环。
一句话理解
基于决策系统的物联网 = 感知世界 → 理解状态 → 做出判断 → 反向控制世界
核心不是"联网",而是
✅ 感知 + 推理 + 决策 + 执行 的闭环自动系统
一、整体架构(工业标准分层)
一个真正"有决策能力"的 IoT 系统通常分为 五层:
bash
① 感知层 → ② 边缘计算层 → ③ 网络层 → ④ 云端决策层 → ⑤ 执行层
(传感器) (本地智能) (数据传输) (全局智能) (控制设备)
我们逐层拆解它们"在决策系统中的角色"。
① 感知层(Perception Layer)
作用:给决策系统提供"证据"
设备:
-
温度、湿度、压力传感器
-
摄像头、麦克风
-
振动、电流、电压传感器
-
GPS、加速度计
👉 本质:
把物理世界变成数据流(Data Stream)
但问题是:
-
噪声大
-
数据不完整
-
精度有限
这就是为什么需要 模糊逻辑和贝叶斯。
② 边缘计算层(Edge Intelligence)
作用:第一层本地决策(快速、低延迟)
设备:
-
ESP32
-
树莓派
-
工业网关
-
边缘服务器
在这一层通常运行:
| 技术 | 作用 |
|---|---|
| 模糊逻辑 | 处理传感器连续状态(如"有点热") |
| 轻量级 ML | 异常检测 |
| 规则系统 | 快速响应 |
例子:
bash
温度偏高 + 湿度大 → 立即提高风扇转速
特点:
✅ 实时
✅ 不依赖网络
❌ 计算能力有限
👉 边缘层解决"现在怎么办"
③ 网络层(Network Layer)
作用:让"局部智能"变成"全局智能"
技术:
-
MQTT(IoT最常用)
-
HTTP/REST
-
5G / WiFi / LoRa
传输内容:
-
传感器数据
-
边缘判断结果
-
设备状态
这一层本身不做决策,但决定:
决策系统是否能看到"全局信息"
④ 云端决策层(Cloud Decision Layer)
这是 真正的"大脑"
运行的就是你前面学的那些:
| 决策技术 | 用途 |
|---|---|
| 贝叶斯网络 | 故障概率推断 |
| 机器学习 | 模式识别、预测 |
| 强化学习 | 最优控制策略 |
| 数据融合 | 多设备综合判断 |
例子:
-
单台机器振动正常
-
但全厂 20 台机器振动趋势一起上升
👉 云端发现:系统性风险
这是边缘设备永远看不到的。
👉 云端解决"未来怎么办"
⑤ 执行层(Actuation Layer)
决策必须改变世界,否则就不是决策系统。
执行设备:
-
电机
-
阀门
-
风扇
-
灯光
-
机械臂
-
报警系统
闭环形成:
bash
环境变化 → 传感器 → 决策系统 → 控制设备 → 环境改变
这叫 闭环控制 IoT(Closed-loop IoT)
二、决策系统在 IoT 中到底放在哪里?
很多人以为"决策系统 = 云端 AI",其实不是。
| 决策类型 | 位置 | 技术 |
|---|---|---|
| 即时控制决策 | 边缘层 | 模糊逻辑、规则 |
| 概率风险决策 | 云端 | 贝叶斯 |
| 长期优化决策 | 云端 | 机器学习 |
| 安全应急决策 | 本地硬件 | 规则触发 |
👉 一个成熟 IoT 系统 = 分层决策系统
三、一个完整案例(工业设备预测维护)
场景:智能工厂电机监控
感知层
-
温度
-
振动
-
电流
边缘层(模糊控制)
实时判断:
bash
IF 振动 偏大 AND 温度 偏高 → 状态 = "异常趋势"
立即动作:
-
降低转速
-
本地报警
云端(贝叶斯决策)
汇总历史数据:
P(故障∣振动趋势,温度趋势,电流波动)P(\text{故障} | 振动趋势, 温度趋势, 电流波动)P(故障∣振动趋势,温度趋势,电流波动)
输出:
- 未来 7 天故障概率 63%
决策:
-
自动生成维修工单
-
调整生产计划
四、技术栈如何选型(工程落地)
| 层 | 推荐技术 |
|---|---|
| 传感器 | ESP32 / STM32 |
| 边缘决策 | Python / C + 模糊逻辑 |
| 通信 | MQTT |
| 云平台 | AWS IoT / Azure IoT |
| 云端决策 | Python + 贝叶斯 + ML |
| 可视化 | Dashboard |
五、和传统 IoT 的本质区别
| 传统 IoT | 决策型 IoT |
|---|---|
| 只上传数据 | 自动做判断 |
| 人工看报表 | 系统主动决策 |
| 被动响应 | 主动预测 |
| 单点控制 | 全局优化 |
六、总结成一句工程认知
搭建基于决策系统的 IoT,本质是把"感知 → 理解 → 判断 → 行动"的智能流程嵌入到物理世界的循环中,并按"边缘实时 + 云端全局"进行分层部署。
下面我会把模糊决策系统 ,落到 ESP32 本地控制 上。
🎯 目标场景:ESP32 智能散热控制器
功能
ESP32 实时读取:
-
🌡 温度传感器
-
📳 振动传感器
通过 模糊逻辑决策系统 控制:
- 🌀 风扇转速(PWM 控制)
特点:
✅ 本地决策(断网也能运行)
✅ 连续控制(不是开/关)
✅ 抗噪声
✅ 可扩展上传云端
🧠 一、系统总体架构
bash
┌──────────────┐
│ 温度传感器 │
└──────┬───────┘
│
┌──────▼───────┐
│ 振动传感器 │
└──────┬───────┘
│
【 ESP32 边缘决策核心 】
│
┌───────▼────────┐
│ 模糊逻辑控制器 │
└───────┬────────┘
│
┌──────▼───────┐
│ PWM 风扇控制 │
└──────────────┘
🔌 二、硬件组成
| 模块 | 作用 | 示例 |
|---|---|---|
| ESP32 | 控制核心 | ESP32 DevKit |
| 温度传感器 | 环境检测 | DHT22 / DS18B20 |
| 振动传感器 | 设备状态 | SW-420 / MPU6050 |
| 风扇 | 执行设备 | 5V PWM 风扇 |
| MOS 管 | 放大驱动 | IRLZ44N |
🔄 三、软件逻辑流程
ESP32 主循环做 4 件事:
bash
1️⃣ 读取传感器
2️⃣ 模糊化(计算隶属度)
3️⃣ 规则推理
4️⃣ 解模糊 → 输出 PWM
🧮 四、模糊控制算法(嵌入式精简版)
在 ESP32 上我们不用 numpy,而是轻量化实现。
1️⃣ 三角隶属函数
cpp
float triangular(float x, float a, float b, float c) {
if (x <= a || x >= c) return 0.0;
else if (x < b) return (x - a) / (b - a);
else return (c - x) / (c - b);
}
2️⃣ 模糊化输入
cpp
void fuzzifyTemperature(float t, float &low, float &mid, float &high) {
low = triangular(t, 0, 0, 30);
mid = triangular(t, 20, 35, 50);
high = triangular(t, 40, 70, 70);
}
void fuzzifyVibration(float v, float &small, float &mid, float &large) {
small = triangular(v, 0, 0, 3);
mid = triangular(v, 2, 5, 8);
large = triangular(v, 6, 10, 10);
}
3️⃣ 模糊规则推理
cpp
void inference(float t_high, float t_mid, float v_mid, float v_large,
float &out_low, float &out_mid, float &out_high) {
out_low = 0;
out_mid = min(t_mid, 1.0 - v_large);
out_high = max(t_high, max(v_mid, v_large));
}
(规则可按需求继续扩展)
4️⃣ 解模糊(重心法简化版)
cpp
float defuzzify(float low, float mid, float high) {
float numerator = 0;
float denominator = 0;
for (int x = 0; x <= 100; x += 5) {
float mu_low = min(low, triangular(x, 0, 0, 40));
float mu_mid = min(mid, triangular(x, 30, 50, 70));
float mu_high = min(high, triangular(x, 60, 100, 100));
float mu = max(mu_low, max(mu_mid, mu_high));
numerator += x * mu;
denominator += mu;
}
if (denominator == 0) return 0;
return numerator / denominator;
}
⚙️ 五、ESP32 主程序框架
cpp
#define FAN_PIN 18
void setup() {
ledcSetup(0, 25000, 8); // PWM 通道
ledcAttachPin(FAN_PIN, 0);
Serial.begin(115200);
}
void loop() {
float temperature = readTemperature(); // 你自己的传感器函数
float vibration = readVibration();
float t_low, t_mid, t_high;
float v_small, v_mid, v_large;
fuzzifyTemperature(temperature, t_low, t_mid, t_high);
fuzzifyVibration(vibration, v_small, v_mid, v_large);
float out_low, out_mid, out_high;
inference(t_high, t_mid, v_mid, v_large, out_low, out_mid, out_high);
float fan_percent = defuzzify(out_low, out_mid, out_high);
int pwm = map(fan_percent, 0, 100, 0, 255);
ledcWrite(0, pwm);
Serial.printf("Temp: %.2f Vib: %.2f Fan: %.1f%%\n", temperature, vibration, fan_percent);
delay(1000);
}
🌐 六、如何升级成"真正 IoT"
你现在的是本地智能设备,再加一步就是完整 IoT:
ESP32 再做:
cpp
MQTT.publish("device/fan_speed", fan_percent);
MQTT.publish("device/temp", temperature);
云端可以:
-
监控趋势
-
做贝叶斯故障预测
-
远程更新模糊规则
🧩 七、你这个架构已经具备的能力
| 能力 | 是否具备 |
|---|---|
| 实时控制 | ✅ |
| 连续决策 | ✅ |
| 本地智能 | ✅ |
| 抗噪声 | ✅ |
| 可云端扩展 | ✅ |
这就是工业边缘智能设备的雏形