> 你是不是也在做智能家居相关的作业?  

> 温度、湿度、光照、土壤湿度……一堆传感器要采集;  

> 还要远程控制加湿器、水泵、风扇,数据还要上云?  

> 别慌!这篇文章带你从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+物联网/嵌入式实物,包教包会,不跑路。

 十、总结与互动

�� 评论区聊聊:你在调试过程中遇到的最棘手的问题是什么?或者你想基于这个系统增加什么功能?点赞最高的,我下一期专门写一篇解决方案。

> 最后,希望这个系统能帮你顺利通过,也让你真正掌握物联网开发的完整流程。加油,未来的工程师!

版权声明:本文原创,转载请附原文链接。代码仅供学习参考,请勿直接用于商业用途。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐