基于STM32单片机的智能家居毕设_基于stm32的智能家居
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
一、硬件选型
1、硬件清单
序号 | 名称 | 型号/作用 | 数量 |
---|---|---|---|
1 | STM32单片机 | 正点原子精英板STM32F103ZET6 | 1 |
2 | 温湿度传感器 | DHT11 | 1 |
3 | 光敏传感器 | 3针制光敏传感器模块 | 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 BitK210模块不建议用这个做性价比不高 | 1 |
18 | 杜邦线 | 母对母/公对公/公对母 | 若干 |
19 | 电源适配器 | 12V 1A | 1 |
20 | USB数据线/STLink | /供电/烧录程序/仿真用 | 1 |
注以上的硬件选型并不都是最优选都是笔者根据自己现有的资源和后续购买的硬件配合使用的读者可根据自己的情况选购。
2、硬件展示部分
注上图展示的是项目中使用到的部分器件如TFTLCD、esp32和风扇等是后续添加的上图并没有显示并且最后的功能中已不再使用红外遥控还有LCD1602的功能还有就是上图中的“人体红外传感器”和“光照传感器”的位置弄反了大家知道就行哈哈。
二、效果展示
1、整体效果展示
2、显示屏触摸效果展示
本设计中的触摸屏的功能都是笔者完全从0开发的没有使用lvgl都是简单的页面切换图案所有都是通过在阿里巴巴矢量图标库找到适合的图标然后再转化为bmp图片让触摸屏显示的。
三、功能分析
1、系统总体结构框图
系统主要由主控制器、人机交互、设备控制、客户端和各终端节点组成。其中设备控制包括电机控制和触摸屏控制等客户端为移动手机端实现系统的远程控制功能。
2、主要包含的功能
本设计主要实现以下功能
1传感器数据采集及显示。
2微信小程序远程监测及控制。
3TFTLCD触摸屏多功能七大功能页面显示及触摸控制。
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的TXTX端连接JQ8900的RXLD3320识别语音指令后通过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所以大家在参考的时候可以带有辩证的眼光去看待希望不要被我带偏了😄
这是笔者第一次写博客如果写得不好请见谅哈都看到这里了各位大佬难道不给笔者点个赞再走嘛~~~