【保姆级教程】基于STM32的物联网智能家居系统:远程监控+自动控制+机智云接入
> 你是不是也在做智能家居相关的作业?
> 温度、湿度、光照、土壤湿度……一堆传感器要采集;
> 还要远程控制加湿器、水泵、风扇,数据还要上云?
> 别慌!这篇文章带你从0到1实现一套完整的物联网智能家居系统,硬件方案、软件架构、核心代码、机智云接入,全部喂给你。
> 主控采用STM32F103C8T6,WiFi使用ESP8266-01s,云平台用机智云,手机APP远程查看和控制,多手机可同时接入。
> 建议先收藏,带你深入了解。
一、系统总体方案
1.1 系统架构图

1.2 核心功能列表
| 功能模块 | 详细描述 |
| 环境数据采集 | 温度、湿度(DHT11),光照强度(光敏电阻+ADC),土壤湿度(土壤传感器+ADC) |
| 本地显示 | 0.96寸OLED(IIC协议)实时显示所有传感器数据 |
| 远程监控 | ESP8266-01s连接WiFi,通过机智云平台上传数据,手机APP可查看 |
| 自动/远程控制 | - 继电器控制加湿器(低电平闭合) |
| - PWM控制水泵、风扇(通过迷你L298N) | |
| - GPIO直接控制LED | |
| 多设备接入 | ESP8266-01s支持点对多点连接,多个手机可同时查看和控制 |
| 阈值报警(可扩展) | 本框架预留接口,可自行添加阈值判断和报警 |
二、硬件架构与选型
2.1 硬件清单
| 硬件名称 | 型号/规格 | 数量 | 作用 |
| 主控 | STM32F103C8T6核心板 | 1 | 数据采集、逻辑控制、通信 |
| WiFi模块 | ESP8266-01s | 1 | 连接WiFi,上报机智云 |
| 温湿度传感器 | DHT11 | 1 | 检测温度和湿度 |
| 光敏电阻传感器模块 | 模拟输出(AO) | 1 | 检测光照强度 |
| 土壤湿度传感器 | 模拟输出(AO) | 1 | 检测土壤湿度 |
| OLED显示屏 | 0.96寸,IIC接口 | 1 | 本地数据显示 |
| 继电器模块 | 1路,5V,低电平触发 | 1 | 控制加湿器电源 |
| 迷你L298N电机驱动 | L298N迷你版 | 1 | 驱动水泵、风扇(PWM调速) |
| 水泵 | 5V微型水泵 | 1 | 灌溉/抽水 |
| 风扇 | 5V直流风扇 | 1 | 通风散热 |
| LED | 红/绿发光二极管 | 2 | 状态指示 |
| 电阻、杜邦线等 | / | 若干 | 连接 |
> 注:加湿器、水泵、风扇的工作电压均为5V,可由USB供电统一提供。
2.2 核心传感器介绍
1. DHT11 温湿度传感器
- 单总线通信,直接输出数字信号。
- 测量范围:温度0~50℃,湿度20~90%RH。
- 精度:温度±2℃,湿度±5%RH。
2. 光敏电阻传感器模块
- 模块上有LM393比较器,可输出模拟量和数字量。
- 本设计使用模拟输出AO,连接STM32的ADC引脚。
- ADC分辨率12位(0~4095),数值越小光照越强。
3. 土壤湿度传感器
- 两个探针插入土壤,利用土壤电阻变化输出模拟电压。
- 同样使用ADC采集,干燥时数值偏大(>3000),湿润时数值偏小(<1000)。
4. ESP8266-01s
- 串口通信(AT指令集或透传模式)。
- 本设计使用机智云固件,自动连接云平台,无需处理复杂AT指令。
- 支持点对多点:多个手机APP绑定同一设备,同时查看数据。
三、原理图

四、软件架构与开发环境
4.1 开发环境
- IDE:Keil MDK 5(安装包见资料,需破解)
- 固件库:STM32标准外设库 或 HAL库(本教程使用标准库)
- 调试器:ST-Link / J-Link
- 串口助手:用于调试ESP8266
- 机智云:开发者中心 + 手机APP
4.2 软件分层架构

4.3 机智云接入流程(核心亮点)
1. 注册机智云账号,创建新产品“智能家居系统”,数据点定义如下:
| 数据点名称 | 标识名 | 读写类型 | 数据类型 | 备注 |
| 温度 | temperature | 只读 | 数值(0-50) | 单位℃ |
| 湿度 | humidity | 只读 | 数值(0-100) | 单位%RH |
| 光照强度 | light | 只读 | 数值(0-4095) | ADC原始值 |
| 土壤湿度 | soil | 只读 | 数值(0-4095) | ADC原始值 |
| 加湿器开关 | humidifier_switch | 读写 | 布尔值 | APP远程控制 |
| 水泵转速 | pump_speed | 读写 | 数值(0-100) | PWM占空比% |
| 风扇转速 | fan_speed | 读写 | 数值(0-100) | PWM占空比% |
2. 下载MCU代码包:机智云自动生成STM32标准库工程,包含串口解析、数据点上报、控制指令回调。
3. 烧录ESP8266固件:使用机智云固件(GAgent),让ESP8266自动连接云平台。烧录工具和固件在机智云官网下载。
4. 修改用户代码:在生成的`gizwits_product.c`中,填充传感器读取函数,并处理APP发来的控制指令。
五、关键代码展示
5.1 驱动层:DHT11读取
/*调用Read_DHT11读取温湿度,若成功则输出该信息*/
if( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS)//if( DHT11_Data.humi_deci)
{
DHT11_Hum = DHT11_Data.humi_int; //湿度
DHT11_Temp = DHT11_Data.temp_int; //温度
}
else
{
printf("Read DHT11 ERROR!\r\n");
}
5.2 驱动层:ADC采集(光敏+土壤)
float Get_LsensValue(void)
{
u16 temp = get_Adc_Value(0x05);
if(temp > 4000)
{
temp = 4000;
}
return 100 - temp / 4000.00 * 100;
}
float Get_SoilValue(void)
{
u16 temp = get_Adc_Value(0x04);
if(temp > 4000)
{
temp = 4000;
}
return 100 - temp / 4000.00 * 100;
}
5.3 驱动层:OLED显示(IIC协议)
OLED_ShowString(0, 0, "TEMP:", 16);
sprintf((char*)buff, ":%2dC", DHT11_Temp);
OLED_ShowString(32, 0, buff, 16); //显示温度
OLED_ShowString(70, 0, "HUM:", 16);
sprintf((char*)buff, ":%2d%%", DHT11_Hum);
OLED_ShowString(96, 0, buff, 16); //显示湿度
OLED_ShowString(0, 2, "Light", 16);
sprintf((char*)buff, ":%4d lux", gz_value);
OLED_ShowString(40, 2, buff, 16); //显示光照
OLED_ShowString(0, 4, "SOIL", 16);
sprintf((char*)buff, ":%4d%%", soil_value);
OLED_ShowString(40, 4, buff, 16); //显示
六、机智云APP配置与效果展示
6.1 手机APP配网步骤
1. 下载“机智云”APP,注册登录。
2. 给ESP8266-01s上电,长按模块上的按键(或拉低GPIO0)进入配网模式(指示灯快闪)。
3. APP中点击“添加设备” → 输入WiFi密码 → 选择“乐鑫” → 等待设备发现。
4. 绑定成功后,进入设备控制面板。
6.2 APP界面功能

七、常见问题与避坑(老司机经验)
| 问题现象 | 可能原因 | 解决方法 |
| ESP8266连不上机智云 | 固件未烧录或WiFi密码错误 | 重新烧录GAgent固件;确保WiFi为2.4GHz;关闭手机VPN。 |
| ADC采集数值跳动大 | 电源纹波或未做滤波 | 增加RC低通滤波,软件多次采样取平均。 |
| OLED不显示 | IIC地址错误或SCL/SDA接反 | 使用IIC扫描程序获取地址(常见0x78或0x7A);交换SDA/SCL试试。 |
| 继电器不吸合 | 驱动电流不足 | 确认PA3配置为推挽输出;继电器模块VCC需5V,不能接3.3V。 |
| 水泵/风扇不转 | PWM频率过高或L298N供电不足 | PWM频率设为1kHz;L298N的5V供电需与水泵、风扇共地且电流足够。 |
八、项目亮点与扩展方向
8.1 本项目亮点
- 真正的物联网:STM32 + ESP8266 + 机智云,数据上云,手机远程控制。
- 多设备并发:ESP8266-01s支持点对多点,多个家庭成员可同时监控。
- PWM精确控制:水泵、风扇无极调速,比简单的开关更智能。
- 完整软硬件:原理图、PCB、源码全部提供(获取方式见下文)。
8.2 可扩展功能(留作你的创新点)
- 增加火焰/烟雾传感器,实现火灾报警。
- 利用STM32内部RTC,实现定时自动灌溉。
九、完整资料获取方式
> 由于文章篇幅限制,完整工程源码(Keil工程、机智云数据点配置、ESP8266固件、AD原理图+PCB)无法全部贴出。
需要全套资料的同学:
- 方式1:评论区留言“智能家居系统”,我会私信发送百度网盘链接。
- 方式2:关注后私信我,直接获取。
资料包包含:
- ✅ STM32完整Keil工程(标准库版本,编译无报错)
- ✅ 机智云MCU代码包(含数据点定义)
- ✅ ESP8266 GAgent固件及烧录工具
- ✅ AD17原理图+PCB源文件
- ✅ 硬件接线图高清版
- ✅ 手机APP操作视频教程
另外,如果你需要全流程辅导,或者想定制其他功能(如增加传感器、改用阿里云),也可以私信联系我。本人已辅导过200+物联网/嵌入式实物,包教包会,不跑路。
十、总结与互动
�� 评论区聊聊:你在调试过程中遇到的最棘手的问题是什么?或者你想基于这个系统增加什么功能?点赞最高的,我下一期专门写一篇解决方案。
> 最后,希望这个系统能帮你顺利通过,也让你真正掌握物联网开发的完整流程。加油,未来的工程师!
版权声明:本文原创,转载请附原文链接。代码仅供学习参考,请勿直接用于商业用途。
更多推荐
所有评论(0)