
2025年,75%的数据将在边缘侧处理。AIoT不再是概念,而是正在发生的现实。本文分享如何用ESP32+AI打造一个能自我学习的智能家居系统。
买了一堆智能设备,结果发现:
所谓的"智能",其实只是"遥控"+“定时”+“联动”。
真正的智能应该是什么样的?
设备能够学习我的习惯,预测我的需求,自动做出最优决策。
这就是"AI物联网自进化平台"想要解决的问题。
用户设置规则 → 设备执行规则 → 永远不变设备观察用户行为 → 学习行为模式 → 预测用户需求 → 自动执行 → 持续优化举个例子:
传统模式:
自进化模式:
技术 | 现状 | 适用场景 |
|---|---|---|
TinyML | ESP32可运行简单神经网络 | 行为识别、异常检测 |
强化学习 | Q-learning可在单片机运行 | 策略优化 |
时序预测 | 简单LSTM可量化部署 | 用电预测、作息预测 |
硬件 | 价格 | 功能 |
|---|---|---|
ESP32开发板 | ¥25 | 主控,支持WiFi/蓝牙 |
PIR人体感应 | ¥8 | 检测人体存在 |
BH1750光照传感器 | ¥10 | 检测环境光照 |
继电器模块 | ¥8 | 控制灯光/电器 |
DHT22温湿度 | ¥15 | 检测温湿度 |
总计 | ¥66 | 完整的学习系统 |
根据"从小处着手"的原则,我选择从智能照明这个最简单的场景开始。
硬件:
├── ESP32开发板 × 1
├── 人体感应传感器 × 1
├── 光照传感器 × 1
└── 继电器模块 × 1(控制灯)
软件功能:
├── 1. 采集:记录开灯/关灯时间 + 环境光照 + 人体存在
├── 2. 学习:分析用户作息规律(时序统计)
└── 3. 执行:根据学习结果自动开关灯
交互:
└── 串口输出当前状态和学习结果(MVP阶段)// 核心学习逻辑(伪代码)
struct TimeSlot {
int hour;
int minute;
int lightOnCount; // 这个时间段开灯的次数
int totalCount; // 这个时间段的总记录次数
float probability; // 开灯概率
};
TimeSlot timeSlots[24]; // 24个小时的时间槽
void recordUserAction(bool lightOn) {
int currentHour = getCurrentHour();
timeSlots[currentHour].totalCount++;
if (lightOn) {
timeSlots[currentHour].lightOnCount++;
}
// 更新概率
timeSlots[currentHour].probability =
(float)timeSlots[currentHour].lightOnCount /
timeSlots[currentHour].totalCount;
}
bool shouldAutoTurnOn() {
int currentHour = getCurrentHour();
bool isPersonPresent = readPIRSensor();
bool isDark = readLightSensor() < DARK_THRESHOLD;
float probability = timeSlots[currentHour].probability;
// 如果有人 + 光线暗 + 历史概率>80%,自动开灯
return isPersonPresent && isDark && probability > 0.8;
}┌─────────────────────────────────────────────────────┐
│ ESP32 主控 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ PIR传感器│ │光照传感器│ │继电器模块│ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 数据采集层 │ │
│ │ - 人体存在检测 │ │
│ │ - 环境光照检测 │ │
│ │ - 用户手动操作记录 │ │
│ └─────────────────────┬───────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 学习引擎 │ │
│ │ - 时间序列统计 │ │
│ │ - 行为模式识别 │ │
│ │ - 概率模型更新 │ │
│ └─────────────────────┬───────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 决策引擎 │ │
│ │ - 基于概率的自动控制 │ │
│ │ - 异常情况处理 │ │
│ │ - 用户反馈学习 │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘验证项 | 标准 | 时间 |
|---|---|---|
功能验证 | 能采集数据并记录到日志 | 第1周 |
学习验证 | 7天后能识别出用户作息规律 | 第2周 |
执行验证 | 能根据规律自动开关灯 | 第3周 |
体验验证 | 自己在家用1个月,觉得有用 | 第4-8周 |
用户群 | 特点 | 获客渠道 |
|---|---|---|
智能家居极客 | 愿意折腾,追求最优方案 | GitHub、少数派、什么值得买 |
Home Assistant用户 | 有自建能力,追求定制化 | HA社区、论坛 |
物联网开发者 | 想学习AIoT,需要案例 | 掘金、CSDN、B站 |
即使最后不商业化,也能获得:
这些技能在就业市场很吃香。
AI物联网自进化平台是一个"慢热"的方向:
优点:
缺点:
建议:
本文是「程序员副业」系列的第三篇。三个方向分析完毕,接下来就是行动了。
如果你对AIoT感兴趣,欢迎一起探索。
名称 | 规格 | 价格 | 购买链接建议 |
|---|---|---|---|
ESP32开发板 | ESP32-DevKitC | ¥25 | 淘宝/拼多多 |
PIR人体感应 | HC-SR501 | ¥8 | 淘宝/拼多多 |
光照传感器 | BH1750 | ¥10 | 淘宝/拼多多 |
继电器模块 | 5V单路 | ¥8 | 淘宝/拼多多 |
杜邦线 | 公对母/公对公 | ¥5 | 淘宝/拼多多 |
面包板 | 400孔 | ¥5 | 淘宝/拼多多 |
USB数据线 | Micro USB | ¥5 | 淘宝/拼多多 |
总计 | ¥66 |
# 1. 安装Arduino IDE
# 下载地址:https://www.arduino.cc/en/software
# 2. 安装ESP32支持
# 在Arduino IDE中添加开发板管理器URL:
# https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
# 3. 安装必要的库
# - WiFi(内置)
# - ArduinoJson
# - PubSubClient(MQTT)
# 4. 连接硬件
# ESP32 GPIO4 → PIR OUT
# ESP32 GPIO21 → BH1750 SDA
# ESP32 GPIO22 → BH1750 SCL
# ESP32 GPIO5 → 继电器 IN
# ESP32 3.3V → 传感器 VCC
# ESP32 GND → 传感器 GND