基于STM32设计的智能家居控制系统(华为云IOT+语音控制+环境检测)【玩转华为云】
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.1STM32F103C8T6STM32F103C8T6是一款基于ARMCortex-M内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C~85°C。
3.2语音识别模块:LD33203.3ESP8266-串口WIFI3.4LED灯-RGB灯3.53W大功率LED灯3.6OLED模块3.7步进电机模块3.8继电器模块3.9杜邦线(母对母)3.10红外寻迹/循迹模块3.11温湿度-DHT113.12BH1750光敏传感器4.华为云创建产品与设备4.1创建产品、配置产品模型华为云官网:https://www.huaweicloud.com/在产品选项框里找到华为云的IOT产品。选择设备接入IoTDA
设备接入IoTDA:
https://www.huaweicloud.com/product/iothub.html
点击产品页面,先创建产品。产品一个项目的模型,产品下面可以创建多个具体的设备。
根据自己的实际产品信息填充。
创建成功。
查看产品的详情。
在详情页,创建产品的模型。这个产品的模型就是传感器数据的属性,根据自己上传的传感器数据实际创建。
创建自定义模型。
服务IDSmartHome服务类型SmartHome服务描述智能家居添加属性。
接来来根据自己设备的实际情况添加属性即可。
所有的属性创建完毕,属性的名字可以使用中文。但是要注意,设备上传时,中文数据的编码要正确,否则会乱码。
4.2创建设备接在在左边选项页面选择设备,创建一个设备。设备可以调用API在程序里自动创建也可以的。
地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/device/all-device
单设备注册。
注册之后,保存设备信息,接下来生成MQTT参数需要。
{"device_id":"62aead8b538e623c4287ef43_Smart_home_dev_1","secret":"12345678"}5.MQTT协议登录5.1MQTT服务器地址信息华为云物联网平台的域名是:a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com华为云物联网平台的IP地址是:121.36.42.100端口号是18835.1MQTT订阅主题,发布主题帮助文档:https://support.huaweicloud.com/iothub/index.html
格式:$oc/devices/{device_id}/sys/messages/down//订阅主题:平台下发消息给设备$oc/devices/62aead8b538e623c4287ef43_Smart_home_dev_1/sys/messages/down格式:$oc/devices/{device_id}/sys/properties/report//设备上报数据$oc/devices/62aead8b538e623c4287ef43_Smart_home_dev_1/sys/properties/report上属性的数据格式://上报的属性消息(一次可以上报多个属性,在json里增加就行了){"services":[{"service_id":"SmartHome","properties":{"空调":1}}]}5.2MQTT参数生成设备创建完成接来下生成MQTT登录账号、密匙,方便设备登录云端平台。
官网工具地址:https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
ClientId62aead8b538e623c4287ef43_Smart_home_dev_1_0_0_2022061905Username62aead8b538e623c4287ef43_Smart_home_dev_1Password1052c27bd7ccce57b316005a677f50291cf4a50fc90e0bb1c33dee6beda1ae535.3MQTT客户端模拟登录测试MQTT客户端下载地址:
https://download.csdn.net/download/xiaolong1126626497/18784012
在MQTT工具里填上MQTT的登录参数,主题发布、订阅信息进行登录测试。
然后打开设备页面,可以看到设备已经在线了。
并且在设备页面详情里可以看到刚才上传的数据。
主题发布时,一次可以上传多个状态。
例如:
{"services":[{"service_id":"SmartHome","properties":{"空调":1,"风扇":1,"电视":0,"卧室灯":1}}]}6.LD3320语音识别模块编程下载程序示例。将开发板的串口通过USB转TTL模块连接电脑即可。波特率是9600,语音识别时,想要说小杰,唤醒语音识别,然后再说出指令,唤醒语音识别就,模块上有一个红色的LED灯会亮。当前支持的指令如下:
小杰,开卧室灯小杰,关卧室灯小杰,开客厅灯小杰,关客厅灯小杰,打开电视小杰,关闭电视小杰,打开风扇小杰,关闭风扇小杰,打开窗帘小杰,关闭窗帘小杰,打开空调小杰,关闭空调7.STM32设备端开发7.1程序下载7.2原理图7.3硬件接线本设计的硬件接线说明:(1)OLED显示屏接线:D0----(SCK)------------------->>PB14D1----(MOSI)------------------>>PB13RES—(复位脚低电平有效)-------->>PB12DC--(数据和命令控制管脚)------>>PB1CS--(片选引脚)---------------->>PA7GND--------------------------->>GNDVCC--------------------------->>3.3V或者5V(2)ATK-ESP8266WIFI接线PA2(TX)--RXD模块接收脚PA3(RX)--TXD模块发送脚GND---GND地VCC---VCC电源(3.3V~5.0V)(3)LD3320语音识别模块接线说明GND----GNDVCC---3.3VPB11----LD3320语音模块_TXPB10----LD3320语音模块_RX(4)开关空调:1路5V继电器控制PA6------LED(5)开关风扇:1路5V继电器控制PA4------LED(6)开关窗帘采用步进电机模拟:28BYJ4步进电机模拟ULN2003接线:IN-D:PB5dIN-C:PB4cIN-B:PB3bIN-A:PB2a+:5V-:GND(7)卧室照明灯:一盏3W大功率LED灯模拟PB8------LED(8)客厅照明灯:一盏3W大功率LED灯模拟PB9------LED(9)环境光检测检测:BH1750数字传感器SDA-----PB7SCL-----PB6GND---GND地VCC---VCC电源(3.3V~5.0V)(10)温湿度传感器:DHT11VCC--VCCGND---GNDDAT---PA5(11)红外寻迹/循迹模块VCC--3.3VGND---GNDDAT---PA8(--)板载LED灯:低电平亮LED1--PC13BEEP2--PC14(--)板载按键:KEY1--PA0按下为高电平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平台实现数据交互,数据通信,也就是登录、主题发布、订阅,心跳包等操作。https://download.csdn.net/download/xiaolong1126626497/58012912
#include"stm32f10x.h"#include"delay.h"#include"led.h"#include"key.h"#include"sys.h"#include"usart.h"#include#include#include"timer.h"#include"oled.h"#include"fontdata.h"#include"esp8266.h"#include"app.h"#include"mqtt.h"#include"iic.h"#include"bh1750.h"#include"dht11.h"#include"motor.h"/*本设计的硬件接线说明:(1)OLED显示屏接线:D0----(SCK)------------------->>PB14D1----(MOSI)------------------>>PB13RES—(复位脚低电平有效)-------->>PB12DC--(数据和命令控制管脚)------>>PB1CS--(片选引脚)---------------->>PA7GND--------------------------->>GNDVCC--------------------------->>3.3V或者5V(2)ATK-ESP8266WIFI接线PA2(TX)--RXD模块接收脚PA3(RX)--TXD模块发送脚GND---GND地VCC---VCC电源(3.3V~5.0V)(3)LD3320语音识别模块接线说明GND----GNDVCC---3.3VPB11----LD3320语音模块_TXPB10----LD3320语音模块_RX(4)开关空调:1路5V继电器控制PA6------LED(5)开关风扇:1路5V继电器控制PA4------LED(6)开关窗帘采用步进电机模拟:28BYJ4步进电机模拟ULN2003接线:IN-D:PB5dIN-C:PB4cIN-B:PB3bIN-A:PB2a+:5V-:GND(7)卧室照明灯:一盏3W大功率LED灯模拟PB8------LED(8)客厅照明灯:一盏3W大功率LED灯模拟PB9------LED(9)环境光检测检测:BH1750数字传感器SDA-----PB7SCL-----PB6GND---GND地VCC---VCC电源(3.3V~5.0V)(10)温湿度传感器:DHT11VCC--VCCGND---GNDDAT---PA5(11)红外寻迹/循迹模块VCC--3.3VGND---GNDDAT---PA8(--)板载LED灯:低电平亮LED1--PC13BEEP2--PC14(--)板载按键:KEY1--PA0按下为高电平*///物联网服务器的设备信息#defineMQTT_ClientID"dev1"#defineMQTT_UserName"507546"#defineMQTT_PassWord"version=2018-10-31&res=products%2F507546%2Fdevices%2Fdev1&et=1680445911&method=md5&sign=qgaS0NCoxqSnIFZGL%2Fz81Q%3D%3D"//订阅与发布的主题#defineSET_TOPIC"$sys/507546/dev1/#"//订阅#definePOST_TOPIC"$sys/507546/dev1/dp/post/json"//发布//设置连接的路由器信息#defineCONNECT_WIFI"DS小龙哥"//将要连接的路由器名称--不要出现中文、空格等特殊字符#defineCONNECT_PASS"12345678"//将要连接的路由器密码#defineCONNECT_SERVER_IP"183.230.40.96"//服务器IP地址#defineCONNECT_SERVER_PORT1883//服务器端口号charmqtt_message[100];//WIFI发送数据存储区域chardata_buff[500];u8esp8266_state=0;doubleLongitude=120.196517;//经度doublelatitude=30.194493;//纬度floatbh1750=0;u8dht11_temp;u8dht11_humidity;u8sw1=0;u8sw2=0;u8sw3=0;u8sw4=0;u8sw5=0;u8sw7=0;/*主函数:程序执行的入口*/intmain(void){u8dian_shi=0;//1表示电视开0表示电视关u8mode=0;//0表示手动模式1表示自动模式u32i=0;u8key_val;u32TimeCnt=0;u32wifi_TimeCnt=0;JTAG_Set();USART1_Init(115200);//串口1的初始化USART2_Init(115200);//串口-WIFITIMER2_Init(72,20000);//超时时间20msUSART3_Init(9600);//串口-语音模块TIMER3_Init(36,20000);//超时时间20ms//板载按键初始化KEY_Init();//板载LED灯初始化LED_Init();//外接LED初始化LED2_Init();//BH1750的IIC接口IIC_Init();//初始化DHT11DHT11_Init();//步进电机初始化Moto_Init();//初始化APP_Init();printf("正在初始化OLED... ");OLED_Init(0xc8,0xa1);//OLED显示屏初始化--正常显示OLED_Clear(0x00);//清屏printf("正在初始化ESP8266.. ");for(i=0;iget(request);}//更新设备属性voidWidget::on_pushButton_update_device_clicked(){Get_device_properties();}ZigBee语音家居控制系统设计
语音识别技术是当前极具发展前景的新技术之一,采用语音识别技术与无线通信技术完成人机交互、可以简化设备繁杂的菜单,削减大量的按键,给使用者提供了极大的方便,让人们能够享受现代科技的创造性应用。基于IEEE802.15.4协议的ZigBee通信技术具有低功耗、短距离、安全可靠、自组织网等特点。
本文采用STC12LE5A60S2单片机、LD3320语音识别芯片、CC2530组成ZigBee语音识别模块,对语言进行ZigBee数据采集,并与32位嵌入式微处理器构成的家庭网关进行串行通信,家庭网关对接收到的语音数据进行判断处理,并通过ZigBee模块网络对多个控制子节点发出控制信息,实现对电器设备的语音控制。
1智能语音控制系统功能设计
系统能进行非特定人语音识别并将语音内容存储到TFCard内,可利用语音对电灯,电磁阀水龙头,电控锁,电动窗帘等各种电器进行控制。也可进行预设,设定的时间到,系统按提示内容进行家居控制。
2智能语音控制系统的结构设计
图1智能语音控制系统框图
系统总体结构如图1所示,家庭网关和各子节点连接方式为星型拓扑结构。系统核心部件为智能家居系统中的家庭网关,在本设计中该部件功能有别于传统意义上的家庭网关,其主要负责家庭内部智能设备的控制,故采用嵌入式系统方案。包括完成语音识别模块子节点、对开关型电器进行控制的继电器控制子节点、对红外遥控型电器进行控制的红外控制子节点_。
3智能语音控制系统的硬件设计
3.1家庭网关设计
考虑到本设计家庭网关的核心控制功能,选用功能强大的32位单片机S1C33L05为主控芯片、根据功能需要片外扩展了外部存储器模块、LCD模块、时钟模块,家庭网关与ZigBee模块通过串口实现通信。
图2家庭网结构
3.2语音子节点设计
语音子节点由STCl2LE5A60S2单片机、LD3320语音识别芯片、ZigBee数传收发节点组成,系统架构如图3所示;
图3语音子节点系统架构图
其语音识别部分硬件电路如图4所示:
图4语音识刖电路
电路中,MCU的IO口和LD3320A采用串行SPI方式连接,通过串行数据接口接收STCl2LE5A60S2的控制命令;对LD3320A来说,时钟信号从TCl2LE5A60S2的XTAL2振荡器倒相放大器的出端引入,复位信号(RSTB)由MCU发出,而中断信号由LD3320A发出,MCU负责接收。
3.3ZigBee数传模块收发节点设计
继电器控制子节点及红外控制子节点均通过ZigBee数传模块收发节点与家庭网关进行通信,考虑到语音家居系统无需很大的数据量特点,本设计选择集成有80C51内核的CC2530芯片构成ZigBee数传模块收发节点,因CC2530本身带有射频的功能,通过调整CC2530本身的发射功率以及优化CC2530天线后,对于小功率网络节点的设计不需要外加额外的射频芯片,比较适合家居系统使用。CC2530ZigBee无线模块的电路原理图如图5所示,可以看出该模块只需很少的电子元器件。
图5CC2530通信电路原理图
4系统软件设计
系统软件主要由语音识别处理部分、ZigBee数传模块节点收发程序部分、红外控制部分、实时时钟驱动程序、LCD显示驱动程序和控制主程序等构成。图6为软件构成框图。
图6软件构成框图
4.1主程序主程序
通过串口接收语音子节点数据后,对数据进行判断处理并将相应信息进行显示提示,继而根据ZigBee数据采集的语音内容向相应收发控制子节点ZigBee模块发送控制命令,其流程图见图7。
图7主程序流程图
4.2语音识别程序设计
语音识别的操作流程是:
(1)通用初始化和语音识别用初始化。在初始化程序里,主要完成软复位模式设定、时钟频率设定和FIFO设定。
(2)写入识别列表。LD3320是一个基于词库的语音识别芯片,在此步骤中,应将待识别的短语写入识别列表。列表的规则是,每个识别条目对应一个特定的编号(1个字节),不同的识别条目的编号可以相同,而且不用连续,但是数值要小于256(00H~FFH)。
(3)开始识别,准备好中断响应函数,打开中断允许位。根据现有设置,每次语音识别的时间限制是设定开始后的1分钟。在这个期间内,芯片接收到声音,无论识别是否成功,都会发送中断信号。如果到了1分钟还是没有接收到声音,也会发送一个中断,而BA寄存器里的数值是0,表示识别失败。改动B8寄存器可以改变这个长度。
(4)响应中断。如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。而中断程序要根据寄存器的值分析结果。读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高、最可能正确的答案。
LD3320的程序包含了初始化程序,识别列表程序,识别开始程序和识别中断程序,详细流程如图8所示。
图8语音识别流程图
5结论
非特定人语音识别技术及其人机交互技术是当前语音信号处理领域的热点,本设计利用ICRoute公司的LD3320A完成非特定人语音的ZigBee数据采集识别、结合具有低功耗、高可靠性、短距离的无线通信ZigBee无线模块技术结合。能实现语音控制开关型、红外型家电设备,从而实现了家居控制的语音无线智能化控制,且根据需要,系统功能、应用范围均可进一步拓展。具有广泛的应用前景。
基于STM32的语言控制智能家居系统
承接单片机定做
文章目录前言一、设计目标及内容:二、框架思路三、实现喜欢请点赞哦!前言基于STM32的语言控制智能家居系统,主控使用STM32F103(正点原子战舰板子)
一、设计目标及内容:语音指令控制器主要负责作为一个报文中心控制节点,除了负责连接所有语音接收器的控制指令节点外,还需要负责进行语音指令流的解析以及语音控制指令的解析生成。在用户语音指令的解析生成中,程序根据ldld3320反馈的语音指令信息获取一个用户语音指令中所对应指令码。一个语音控制器接收到一个语音指令信息信号后,会根据该语音指令信息中所对应的指令码自动执行生成一个控制指令。监控系统为每个控制指令器和接收器分别设定30条连续的指令码,生成一个控制指令时根据信号获取器收到的指令码条数进行多次计算,即可得到与该指令码所对应的控制指令码和接收器的指令号码。生成控制指令主要可以分为指令报头、节点间的标号、数据线的长度、异或信号校验、报尾,共5部分,指令码进行解析后便将控制数据进行装载连接到发送指令码的报文中心,并进行一次控制数据流的传输
二、框架思路三、实现在控制方式上主要采用语音采集与识别控制,主要过程如下:
语音指令设置和修改:通过程序设计,对所使用的用户语音指令关键词进行预先设置与修改,作为触发语音识别芯片的一级语音指令。#承接stm32单片机、STC系列单片机设计、嵌入式。#我们在某宝有店铺噢~,搜店铺名:“晖亿科创”家居系统语音识别控制:用户发出语音信号作为二级语音控制指令,LD3320语音识别芯片检测信号,进行特征提取和关键词匹配、频谱分析,正确识别语音指令、数据处理后传送给单片机,由单片机发送相应的控制指令给终端设备,实现家居系统语音控制喜欢请点赞哦!