#物联网征文# 基于STM32+华为云IOT设计的智能家居控制系统 原创 精华
这是基于物联网设计的语音和环境检测的控制系统,支持本地语音控制、支持云端远程控制,支持本地环境检测自动执行控制,根据环境检测结果控制相应的执行机构协作当光照低于一定程度(比如低于5OLux)且有人在家里自动开灯,没人在家时自动关灯等等。
1. 前言
如今的智能家居越来越深入人心,越来越受人们的欢迎。智能家居作为与人们日常生活息息相关的科技智能产物,可以给我们的生活带来舒适便利。随着物联网、云计算、无线通信等新技术的发展,智能家居得到了快速发展,能让用户利用智能手机来控制家中的设备,实现远程控制、场景控制、联动控制和定时控制等功能。在安全防护上,智能家居安防系统则够在原来的基础上提供立体化防护,帮助用户时刻守护住宅安全,更符合人们的安全需求。节能减排方面的也有积极作用。比如说,智能家居照明系统,它充分利用了自然光的照明作用,自动调节灯具的亮度,在保证室内明亮度的同时,将能耗降到最低,而对于洗手间、储藏室等地方,更是做到了人来灯亮、人走灯灭,一方面方便了用户的日常生活,另一方面也能防止用户忘记及时关灯而造成浪费。
2. 设计要求总结
设计题目:基于物联网的语音和环境检测的智能家居控制系统设计
第一种:控制方式需经结合语音命令控制, 控制开关门、灯、电视、开关空调、开关电扇、开关窗帘等。
第二种:控制方式是基于环境检测自动执行控制,根据环境检测结果控制相应的执行机构协作,比如: 当光照低于一定程度(比如低于5OLux)且有人在家里自动开灯,没人在家时自动关灯;如温度高于阈值并且有人在家时打开空调,没人在家时自动关闭等;如光照强度低于一定程度会自动关闭窗帘。电脑和手机APP两端云平台可以展示温湿度,光照等信息,还有各家居的状态,可以在云平台控制家居的开关,可以在云平台进行两种控制方式的切换。
技术选项总结:
(1)物联网平台采用华为云IOT:华为云IOT是华为旗下的物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。
(2)主控芯片采用:STM32F103C8T6
(3)语音控制芯片采用:LD3320 支持普通话识别。
(4)开关空调、开关风扇 采用继电器模拟:两个1路5V继电器控制
(5)开关窗帘采用步进电机模拟: 28BYJ4步进电机模拟
(6)室内照明灯(卧室、客厅):2盏 3W大功率LED灯模拟
(7)环境光检测检测:BH1750数字传感器
(8)联网的WIFI :选择ESP8266
(9)OLED屏幕:模拟电视显示
(11)温湿度检测:DHT11模块
其中:
(1)STM32主控芯片、语音控制芯片LD3320、室内照明大功率LED灯、环境光检测BH1750、ESP8266-WIFI 通过排母插在PCB板子上。
(2)步进电机UL2003驱动板、继电器 使用排针外接。
上位机运行效果:
3. 硬件选型
3.1 STM32F103C8T6
STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。
3.2 语音识别模块: LD3320
3.3 ESP8266 -串口WIFI
3.4 LED灯-RGB灯
3.5 3W大功率LED灯
3.6 OLED模块
3.7 步进电机模块
3.8 继电器模块
3.9 杜邦线(母对母)
3.10 红外寻迹/循迹模块
3.11 温湿度-DHT11
3.12 BH1750光敏传感器
4. 华为云创建产品与设备
4.1 创建产品、配置产品模型
华为云官网: https://www.huaweicloud.com/
在产品选项框里找到华为云的IOT产品。选择设备接入 IoTDA
设备接入 IoTDA:
https://www.huaweicloud.com/product/iothub.html
点击产品页面,先创建产品。产品一个项目的模型,产品下面可以创建多个具体的设备。
根据自己的实际产品信息填充。
创建成功。
查看产品的详情。
在详情页,创建产品的模型。这个产品的模型就是传感器数据的属性,根据自己上传的传感器数据实际创建。
创建自定义模型。
添加属性。
接来来根据自己设备的实际情况添加属性即可。
所有的属性创建完毕,属性的名字可以使用中文。但是要注意,设备上传时,中文数据的编码要正确,否则会乱码。
4.2 创建设备
接在在左边选项页面选择设备,创建一个设备。
设备可以调用API在程序里自动创建也可以的。
地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device
单设备注册。
注册之后,保存设备信息,接下来生成MQTT参数需要。
5. MQTT协议登录
5.1 MQTT服务器地址信息
5.1 MQTT订阅主题,发布主题
帮助文档:https://support.huaweicloud.com/iothub/index.html
5.2 MQTT参数生成
设备创建完成接来下生成MQTT登录账号、密匙,方便设备登录云端平台。
官网工具地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
5.3 MQTT客户端模拟登录测试
MQTT客户端: 见附件
在MQTT工具里填上MQTT的登录参数,主题发布、订阅信息进行登录测试。
然后打开设备页面,可以看到设备已经在线了。
并且在设备页面详情里可以看到刚才上传的数据。
主题发布时,一次可以上传多个状态。
例如:
6. LD3320语音识别模块编程
下载程序示例。 将开发板的串口通过USB转TTL模块连接电脑即可。
波特率是9600,语音识别时,想要说小杰
,唤醒语音识别,然后再说出指令,唤醒语音识别就,模块上有一个红色的LED灯会亮。
当前支持的指令如下:
7. STM32设备端开发
7.1 程序下载
7.2 原理图
7.3 硬件接线
7.4 核心代码
连接华为云服务器采用ESP8266WIFI,加上MQTT协议实现数据通信。标准的ESP8266本身不带MQTT协议栈,也就是说ESP8266默认是没有MQTT协议相关的指令,不能直接通过指令连接MQTT服务器通信,但是也可以自己烧写第三方的SDK,用于支持MQTT指令。 我这里的代码是自己实现的MQTT协议,包括我的其他物联网相关的文章里,只要用到ESP8266的都是自己写的MQTT协议,也就是在代码里实现了MQTT协议栈,使用ESP8266普通的TCP相关的指令就可以完成数据传输,不依赖于ESP8266的SDK版本,任何ESP8266都可以直接使用,为的就是方便移植,通用–通用-通用。
ESP82+STM32实现的MQTT协议栈工程在这里,如果需要带完整MQTT协议工程的可以去这里下载。
这份工程里实现了ESP8266与华为云IOT平台实现数据交互,数据通信,也就是登录、主题发布、订阅,心跳包等操作。
8. QT上位机软件开发
8.1 应用层下发的指令
为了更方便的展示设备数据,与设备完成交互,还需要开发一个配套的上位机,官方提供了应用侧开发的API接口、SDK接口,为了方便通用一点,我这里采用了API接口完成数据交互,上位机软件采用QT开发。
帮助文档地址: https://support.huaweicloud.com/usermanual-iothub/iot_01_0045.html
8.2 查询设备属性接口
设备属性就是设备上传的传感器状态数据信息,应用侧提供了API接口,可以主动向设备端下发请求指令;设备端收到指令之后需要按照约定的数据格式上报数据;所以,要实现应用层与设备端的数据交互,需要应用层与设备端配合才能完成。
应用层下发的指令:
帮助文档地址: https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html
接口的在线调试地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=ListProperties
如果请求参数和返回值不清楚,写代码前,先使用在线调试接口体验一下,验证数据交互是否OK。
请求参数里比较总要的两个必填参数,是设备ID和服务ID,这两个参数在第3章节就介绍过如何获取了,在产品页面创建自定义属性时可以看到服务ID。
8.2 开发环境介绍
上位机软件采用Qt框架设计,Qt是一个跨平台的C图形用户界面应用程序框架。Qt是一个1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。
QT官网: https://www.qt.io/
8.3 主要的代码
下面代码里介绍了更新token、获取token、查询设备属性,上传设备属性等主要请求代码。
【本文正在参加物联网有奖征文活动】,活动链接:https://ost.51cto.com/posts/14758
市面上比较成熟的智能家居厂商楼主有啥看好的吗?