文章目录
- 一、前言
- 1.1 项目介绍
- 【1】项目开发背景
- 【2】设计实现的功能
- 【3】项目硬件模块组成
- 【4】设计意义
- 【5】国内外研究现状
- 【6】摘要
- 1.2 设计思路
- 1.3 系统功能总结
- 1.4 开发工具的选择
- 【1】设备端开发
- 【2】上位机开发
- 【3】云平台与HomeAssistant开发
- 1.5 参考文献
- 1.6 系统框架图
- 1.7 系统原理图
- 1.8 实物图
- 1.9 模块的技术详情介绍
- 二、硬件选型
- 2.1 STM32开发板
- 2.2 ESP8266 WIFI
- 2.3 SHT30模块
- 2.4 BH1750光敏传感器
- 2.5 MQ2烟雾传感器
- 2.6 火焰检测模块
- 2.7 步进电机
- 2.8 OLED显示屏
- 2.9 海凌科V20语音识别模块
- 2.11 喇叭
- 2.10 stlink下载器
- 2.11 树莓派4B
- 2.12 硬件焊接材料
- 三、部署华为云物联网平台
- 3.1 物联网平台介绍
- 3.2 开通物联网服务
- 3.3 创建产品
- (1)创建产品
- (2)填写产品信息
- (3)产品创建成功
- (4)添加自定义模型
- 【1】创建服务ID
- 【2】LED1 卧室灯 布尔类型
- 【3】LED2 客厅灯 布尔类型
- 【4】BH1750 环境光检测 浮点数
- 【5】SW1 风扇开关 布尔类型
- 【6】SW2 空调开关 布尔类型
- 【7】SW3 窗帘开关 布尔类型
- 【8】SW4 电视开关 布尔类型
- 【9】SHT30_T 环境温度 浮点数
- 【10】SHT30_H 环境湿度 浮点数
- 【11】MQ2 烟雾检测 浮点数
- 【12】BEEP 蜂鸣器 布尔类型
- 【13】FLAME 火焰监测 布尔类型
- (5)创建完成
- 3.4 添加设备
- (1)注册设备
- (2)根据自己的设备填写
- (3)保存设备信息
- (4)设备创建完成
- (5)设备详情
- 3.5 MQTT协议主题订阅与发布
- (1)MQTT协议介绍
- (2)华为云平台MQTT协议使用限制
- (3)主题订阅格式
- (4)主题发布格式
- 3.6 MQTT三元组
- (1)MQTT服务器地址
- (2)生成MQTT三元组
- 3.7 模拟设备登录测试
- (1)填入登录信息
- (2)打开网页查看
- (3)MQTT登录测试参数总结
- 3.8 项目凭证
- 3.9 创建IAM账户
- 3.10 获取影子数据
- 3.11 修改设备属性
- 四、Qt开发入门与环境搭建
- 4.1 Qt是什么?
- 4.2 Qt版本介绍
- 4.3 Qt开发环境安装
- 4.4 开发第一个QT程序
- 4.5 调试输出
- 4.6 QT Creator常用的快捷键
- 4.7 QT帮助文档
- 4.8 UI设计师使用
- 4.9 按钮控件组
- 4.10 布局控件组
- 4.11 基本布局控件
- 4.12 UI设计师的布局功能
- 五、上位机开发
- 5.1 Qt开发环境安装
- 5.2 新建上位机工程
- 5.3 切换编译器
- 5.4 编译测试功能
- 5.5 设计UI界面与工程配置
- 【1】打开UI文件
- 【2】开始设计界面
- 5.6 设计代码
- 5.5 编译Windows上位机
- 5.6 配置Android环境
- 【1】选择Android编译器
- 【2】创建Android配置文件
- 【3】配置Android图标与名称
- 【4】编译Android上位机
- 5.7 设备仿真调试
- 六、语音识别模块固件设计与烧录
- 6.1 前言
- (1)模块介绍
- (2)模块购买
- 6.2 修改自定义语音识别词汇
- 6.2.1 登录官网
- 6.2.2 定制SDK固件
- (1)点击创建产品
- (2)添加产品
- (3)选择产品,点击开发中心
- (4)选择创建SDK
- (5)配置SDK信息
- (6)前端信号处理
- (7)引脚配置
- (8)添加自定义的唤醒词
- (9)离线命令词与应答语自定义
- (10)免唤醒词设置
- (11)发音人配置
- (12)欢迎语播报设置
- (13)配置完成
- 6.3 烧录固件
- (1)板子接线
- (2)打开软件工具
- (3)选择烧录的文件
- 七、 ESP8266-WIFI模块调试过程
- 7.1 接电脑USB口调试
- 7.2 ESP8266的STA+TCP客户端配置
- 八、STM32代码设计
- 8.1 硬件连线说明
- 8.2 硬件原理图
- 8.3 硬件组装过程
- 8.4 硬件实物图
- 8.5 KEIL工程截图
- 8.6 程序下载
- 8.7 程序正常运行效果
- 8.8 取模软件的使用
- 8.9 WIFI模块与服务器通信
- (1)组合JSON格式数据字符串
- (2)判断ESP8266是否已连接MQTT服务器
- (3)通过MQTT协议上传数据
- (4)串口打印调试信息
- **总结:**
- 8.10 WIFI模块-初始化
- (1)初始化OLED屏幕显示内容,提示正在初始化ESP8266
- (2)尝试多次初始化ESP8266模块
- (3)初始化成功,提示用户并设置运行状态
- (4)初始化失败,显示错误计数信息
- (5)使用标签AA作为网络连接阶段的起始跳转点
- (6)显示WiFi连接信息
- (7)连接WiFi和TCP服务器
- (8)连接成功处理
- (9)连接失败处理,区分错误类型
- (10)MQTT初始化流程开始(标签AA2)
- (11)尝试连接MQTT服务器,最多5次
- (12)连接失败,显示失败信息并延时
- (13)连接成功后显示提示
- (14)订阅主题SET_TOPIC
- (15)订阅失败处理
- (16)订阅成功处理
- (17)清屏完成所有初始化工作
- 总结
- 8.13 硬件初始化代码
- (1)释放JTAG端口,设置为SWD,仅保留下载调试功能
- (2)初始化板载LED
- (3)初始化板载按键
- (4)初始化串口1(USART1)
- (5)初始化环境光传感器 BH1750
- (6)蜂鸣器初始化
- (7)初始化温湿度传感器 SHT30 引脚
- (8)初始化串口2:
- (9)初始化定时器2:配合串口2做接收超时处理
- (10)初始化串口3:用于连接语音识别模块
- (11)初始化定时器3:配合串口3做接收超时处理
- (12)初始化ADC:用于烟雾传感器 MQ2 数据读取
- (13)初始化步进电机(窗帘控制)
- (14)初始化模拟电器控制接口(风扇、空调等)
- (15)初始化 OLED 显示屏
- (16)OLED 清屏(黑屏)
- 总结:
- 8.14 项目的主循环核心代码
- (1)按键检测及OLED翻页控制:
- (2)定时轮询任务:每次 `time_cnt > 200` 时执行
- (3)温湿度采集:
- (4)光照强度采集(BH1750):
- (5)烟雾浓度采集(MQ2):
- (6)火焰检测(FLAME):
- (7)报警控制(蜂鸣器):
- (8)组合所有设备状态为 JSON 格式字符串:
- (9)MQTT上传至云服务器:
- (10)OLED数据显示刷新:
- (11)串口2接收处理:WIFI模块返回数据解析(MQTT下发命令处理)
- (12)命令响应:
- (13)串口3接收处理:语音控制模块返回数据解析
- (14)系统延时与计数器更新:
- 8.15 APP下发命令处理
- (1)判断是否有来自 WIFI 模块(USART2) 的数据接收完成:
- (2)在接收缓存结尾添加字符串终止符 '\0':
- (3)调试输出接收的数据内容和长度:
- (4)判断是否收到有效长度的数据帧:
- (5)识别是否为“属性设置请求”命令:
- (6)设备控制:解析卧室灯(LED1)的开关命令:
- (7)设备控制:解析客厅灯(LED2)开关命令:
- (8)设备控制:解析风扇(SW1)开关命令:
- (9)设备控制:解析空调(SW2)开关命令:
- (10)设备控制:解析窗帘(SW3)开关命令,并驱动步进电机旋转:
- (11)设备控制:解析电视(SW4)开关命令:
- (12)回应华为云平台下发的属性设置命令,提取 request_id:
- (13)组装回应数据包,并通过 MQTT 回复成功信息:
- (14)调试输出回应内容:
- (15)清除标志位,准备下一轮接收:
- 总结:
- 九、使用STM32代码的流程以及注意事项
- 9.1 第1步
- 9.2 第2步
- 9.3 第3步
- 十、树莓派4B环境搭建
- 【1】硬件环境介绍
- 【2】资料下载
- 【3】准备需要的配件
- 【4】准备烧写系统
- (1)格式化SD卡
- (2)下载安装烧录工具
- (3)格式化SD卡
- (4)选择系统烧录
- 【5】启动树莓派
- 【6】开始创建智能家居
- 【7】安装应用
- 【8】添加集成
一、前言
1.1 项目介绍
【1】项目开发背景
随着物联网技术的飞速发展与智能家居理念的普及,人们对居住环境的舒适度、安全性以及便捷性提出了更高的要求,传统的家居控制方式已难以满足现代家庭对于全屋智能化的深层次需求。当前市场上智能家居产品种类繁多,但不同品牌、不同协议之间的设备往往存在兼容性壁垒,导致系统封闭、扩展性差,且用户数据隐私难以得到有效保障。因此,设计一款能够打破生态壁垒、融合多种控制方式、具备完善环境感知能力的开源全屋智能控制系统,具有极高的应用价值与现实意义。
本项目旨在构建一个基于HomeAssistant与STM32的全屋智能控制系统,通过软硬件协同设计,解决传统家居控制单一、智能化程度低以及安防功能缺失等问题。在硬件核心层面,系统选用高性能低功耗的STM32F103C8T6微控制器作为底层设备端的中枢,结合传感器技术、语音识别技术及通信技术,实现了对家居环境的全方位感知与多模态控制。系统不仅集成了温湿度、光照强度、烟雾浓度及火光检测等环境监测模块,还通过引入海凌科V20语音识别模块,极大地提升了用户交互体验,让用户仅凭语音指令即可轻松控制风扇、空调、窗帘及各类灯具,真正实现了“动口不动手”的智能化生活场景。
为了实现远程监控与跨平台数据交互,本项目搭建了基于华为云IoT物联网服务器的通信架构,利用ESP8266 Wi-Fi模块与MQTT协议,确保了设备端与云端数据传输的实时性与稳定性。在此基础上,系统开发了基于Qt框架的Android手机APP与Windows上位机软件,打破了空间限制,使用户能够随时随地查看家庭环境数据并远程操控家电开关。此外,针对烟雾泄