锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【毕业设计】基于STM32单片机的智能家居系统设计

时间:2022-10-10 15:00:00 温湿度传感器怎么连接nijq4150继电器

文章目录

    • 一、硬件选型
      • 1、硬件清单
      • 2.硬件显示(部分)
    • 二、效果显示
      • 1.展示整体效果
      • 2.显示屏(触摸)效果显示
    • 三、功能分析
      • 1.系统总体结构框图
      • 2.主要包含功能
    • 四、怎么做?
      • 1、STM32单片机部分
      • 2.语音识别和广播
      • 3.微信小程序开发部分
      • 4.人脸识别开发部分
    • 五、如何完善?
    • 六、总结

一、硬件选择

1、硬件清单

序号 名称 型号/作用 数量
1 STM32单片机 点原子精英板(STM32F103ZET6) 1
2 温湿度传感器 DHT11 1
3 光敏传感器 33针光敏传感器模块 1
4 空气质量传感器 MQ135 1
5 人体红外传感器 微人红外感应模块 1
6 语音识别模块/广播模块 LD3320/JQ8900 MP3(可插SD/TF卡) 1
7 喇叭 3W/4Ω 1
8 继电器 1路5V 1
9 风扇 5V供电 1
10 舵机 SG90 9g舵机 90度 1
11 步进电机 28BYJ-48 1
12 电机驱动板 ULN2003 1
13 板载LED 2
14 触摸/显示屏 2.8寸 TFT液晶屏LCD(匹配正点原子精英版) 1/1
15 WiFi模块 esp8266/esp32 nodemcu 1/1
16 短信模块 SIM900A 1
17 人脸识别模块 SIPEED的Maxipy Bit(K210模块,不建议这样做,性价比不高) 1
18 杜邦线 母亲对母亲/公公对公 若干
19 电源适配器 12V 1A 1
20 USB数据线/STLink /供电/烧录程序/模拟 1

注:以上硬件选择不是最佳选择,作者根据现有资源和后续硬件购买,读者可以根据自己的情况购买。

2.硬件显示(部分)

在这里插入图片描述

注:上图显示了项目中使用的部分设备,如TFTLCD、esp32和风扇是后续添加的,上图没有显示,红外遥控不再用于最终功能LCD1602的功能,以及上图中人体红外传感器和光传感器的位置,大家都知道,哈哈。

二、效果显示

1.展示整体效果

这里可以看到视频效果 : 视频效果显示

2.显示屏(触摸)效果显示



本设计中的触摸屏功能完全从0开发,未使用lvgl,都是简单的页面切换,所有的图案都是在阿里巴巴矢量图标库中找到合适的图标,然后转换为bmp图片显示触摸屏。

三、功能分析

1.系统总体结构框图

系统主要由主控制器、人机交互、设备控制、客户端和终端节点组成。设备控制包括电机控制和触摸屏控制,客户端是移动手机,实现系统的远程控制功能。

2.主要包含功能

本设计主要实现以下功能:
(1)收集和显示传感器数据。
(2)微信小程序远程监控。
(3)TFTLCD多功能页面显示和触摸控制(七大功能)触摸屏。
(4)人脸识别开门,离家模式下人体红外检测报警。
(5)语音控制与播放、音乐播放、天气预报播放。
(6)根据设定阈值自动报警,根据光照自动
开关窗帘。
(7)短信警报/语音拨打特定电话
(8)重要变量的掉电保存

四、怎么做?

1、STM32单片机部分

主要用于GPIO输入输出,定时器,PWM、RTC、ADC、IIC、串口通信(中断)等功能。这部分主要使用正点原子的例程模板。
STM32负责处理传感器数据采集、家电硬件控制、触摸屏控制、语音(广播)模块/短信模块/esp32/esp8266等串口通信,包括闹钟、音乐(乞丐版)、设置、家电控制、模式选择、环境数据采集、天气预报等七个功能模块,其实音乐播放只有播放/暂停/上下首/增减音量的功能,只能播放SD卡片中指定的歌曲没有文件读写功能。事实上,超级垃圾??,大家看看,哈哈~
其中,天气时钟参考以下信息:
1、基于STM32的ESP8266天气时钟
2、C语言 | JSON分析格式天气数据(附详细代码)
3、使用cJSON解析JSON字符串

2.语音识别和广播

(1)实现流程简介
语音识别模块使用LD3320,例程数据可以去某宝购买该模块的店铺下面找网盘链接下载。广播模块使用JQ8900(可以插TF卡张卡,这个没有要求,根据自己的情况买就行了),作者开发的方法是通过STM32串口与两个模块连接(如使用串口2)RX端连接LD3320的TX,TX端连接JQ8900的X),LD3320识别语音指令后,通过TX端发送对应的指令给STM32的RX端,然后STM32再根据接收到的指令执行对应的控制,并且通过串口的TX端发送特定的指令控制JQ8900播放已存在TF卡(SD卡)里面对应的语音曲目,这样便实现了语音交互的功能。 详细通信格式可看JQ8900的通信手册(某宝有)。
(2)部分命令展示

LD3320识别指令 JQ8900播放的语音
xiao ai(小爱) 我在
da kai ke ting deng(打开客厅灯) 客厅灯已打开
guan bi ke ting deng(关闭客厅灯) 客厅灯已关闭
zhi ma kai men(芝麻开门) 门已打开
kai chuang(开窗) 窗已打开
jie shao yi xia ni zi ji(介绍一下你自己) 你好,我叫小爱,…
da dian hua gei***(打电话给***) 好的

需要注意的是,这些指令都是需要提前设置好的,并不是真正的AI识别,并且播放的语音要通过语音合成器提前转换好并存入SD卡中(要插入JQ8900)。

3、微信小程序开发部分

小程序开发可以看这个B站UP主的视频学习哦,参考学习资料:stm32+esp8266+小程序智能家居毕设
下面这个是有大佬学习之后做的笔记,大家可以参考一下,应该可以少走很多弯路,这也是笔者做完之后才发现的:
大佬整理的stm32+esp8266+小程序智能家居毕设笔记
本设计是经过扩展了的哦,除了小程序是参考的视频,其他很多设计都是自己开发的哦。
小程序的设计主要由3部分组成,分别为天气显示、环境监测、命令下发。天气数据主要通过调用知心天气的API接口获取;环境监测部分显示的数据主要由STM32单片机通过MQTT协议上传;命令下发由小程序通过MQTT协议下发给STM32单片机,单片机再根据接收到的命令控制执行对应的操作。


可能需要用到的网站:
1、阿里巴巴矢量图标库
2、vue安装网站
3、阿里云镜像
4、mpvue安装

4、人脸识别开发部分

人脸识别使用的是Maix Bit开发板(K210模块),这个模块功能很强大,可以跑机器视觉和神经网络等算法,因为笔者想要实现一个人脸识别开关门的功能,所以就随便买了这个模块,但只是会用一点,主要是通过修改和烧录官网的人脸识别程序即可,通过串口与STM32通信,若人脸识别成功则通过K210的串口TX引脚发送指定命令给单片机,从而让单片机控制舵机(模拟窗户)的开关。但不推荐大家使用这个模块来实现人脸识别的功能,因为性价比不高,这里推荐大家使用esp32 cam来实现,该模块性价比更高,使用Arduino环境开发,会更加的简单(虽然我没做)😄。
但如果你想玩k210的人脸识别的话,可以参考这个网站Maxipy人脸识别文档

下面是人脸识别成功的情况,识别成功后绿灯会亮,并且显示已录入的人脸信息,如果识别失败则红灯亮,且显示“X”(未知人脸)

内容大概就是这几大方面,因为项目比较大,所以只能简略的介绍一下,大家可以参考一下,目前项目还有不少的BUG,但笔者不打算完善了,因为有更重要的事做~

五、还可以怎么完善?

1、增加视频监控功能,推荐使用esp32 cam。
2、语音播报可以把JQ8900改为SYN6288(这个笔者没有用过),SYN****是一款TTS文字转语音模块,在播报方面会更加的灵活。
3、移植lvgl,显示的内容更加丰富。
4、绘制电路板,将硬件焊接在一起。
5、基于freeRTOS等操作系统开发等等…

六、总结

总体来说,本设计实现的功能主要是对家居的控制,有本地控制、远程控制和语音控制,整体上实现了一个功能较杂的智能家居系统(基于裸板开发的),但该系统整体上还有很多内容需要优化,也还存在一定的BUG,所以大家在参考的时候可以带有辩证的眼光去看待,希望不要被我带偏了😄
最后,如果代码能整理好且成功上传github或者百度网盘了我再把链接发上来吧~

这是笔者第一次写博客,如果写得不好请见谅哈!都看到这里了,各位大佬难道不给笔者点个赞再走嘛~~~

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章