基于STM32单片机的智能家居毕设

news2024/11/24 9:25:20

文章目录

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

一、硬件选型

1、硬件清单

序号名称型号/作用数量
1STM32单片机正点原子精英板(STM32F103ZET6)1
2温湿度传感器DHT111
3光敏传感器3针制光敏传感器模块1
4空气质量传感器MQ1351
5人体红外传感器微型人体红外感应模块1
6语音识别模块/播报模块LD3320/JQ8900 MP3(可插SD/TF卡)1
7喇叭3W/4Ω1
8继电器1路5V1
9风扇5V供电1
10舵机SG90 9g舵机 90度1
11步进电机28BYJ-481
12电机驱动板ULN20031
13板载LED2
14触摸/显示屏2.8寸 TFT液晶屏LCD(与正点原子精英版匹配)1/1
15WiFi模块esp8266/esp32 nodemcu1/1
16短信模块SIM900A1
17人脸识别模块SIPEED的Maxipy Bit(K210模块,不建议用这个做,性价比不高)1
18杜邦线母对母/公对公/公对母若干
19电源适配器12V 1A1
20USB数据线/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的RX),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,所以大家在参考的时候可以带有辩证的眼光去看待,希望不要被我带偏了😄

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wamp环境解决局域网不能访问的问题!

安装好wamp后,想用手机通过局域访问电脑上wamp下的网页,结果出现如下提示403错误: 第一步:找到 conf 这个文件: 找到下图中红色方框中的onlineoffline tag - don’t remove,将原来的Require local替换为Re…

JMeter:如何开始简单的WEB压力测试?

目录 背景 如何开始简单的WEB压力测试 PutsReq网站截图 执行测试计划 背景 JMeter是一款广泛使用的性能测试工具,它可以模拟用户行为并生成负载,用于评估Web应用程序的性能和稳定性。 最近工作上被安排针对Web网站进行性能压测,以评估特…

chatgpt赋能python:关于Python除二取余法的优缺点分析

关于Python除二取余法的优缺点分析 Python是当前数据分析和科学计算最火热的语言之一,其中除二取余法是Python中很有趣的算法之一。它也是很常用的基础算法之一,特别是在图像处理和编码中,非常常用。除二取余法指的是一个数值除以二后的余数…

『手撕 Mybatis 源码』09 - MyBatis 插件

MyBatis插件 概述 问题:什么是Mybatis插件?有什么作用? Mybatis插件本质上来说就是一个拦截器,它体现了 JDK 动态代理和责任链设计模式的综合运用 Mybatis 中所允许拦截的方法如下 Executor 【SQL执行器】【update&#xff…

深信服行为感知系统远程命令执行

什么是男子汉?困难打不倒的人才是真正的男子汉! 漏洞复现 构造payload访问漏洞url: /tool/log/c.php?strip_slashessystem&hostipconfig漏洞证明: 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢…

linux服务器python2升级安装python3.7环境

文章目录 开始1. 首先,先检查自己的系统是否安装了python32. 如果你只是想安装python3.63. 安装python3.7的准备工作4. 安装python35. 添加软链接,让python3和pip3这两个命令指向刚刚安装的python3.76. 检验python3安装是否ok7. 更新默认 Python 版本8. …

Spring管理事务知识

目录 1.什么是事务 2.事务的特性ACID 3.Spring 管理事务的方式 4.Spring管理事务的体现:JDBCTemplate 5.声明式事务的属性有哪些 6.声明式事务属性---只读 7.声明式事务属性---超时 8.声明式事务属性---回滚策略 9.声明式事务属性---事务隔离级别 10.声明…

mac 安装 aab android包

一、配置bundletool环境 1、下载最新版的bundletool 版本号要最新的 bundletool-all-1.15.1.jarhttps://github.com/google/bundletool/releases/download/1.15.1/bundletool-all-1.15.1.jar Releases google/bundletool GitHub​​​​​​​​​​ 2、把bundletool放在…

简要介绍 | 基于Diffusion model的图像生成和重建

注1:本文系“简要介绍”系列之一,仅从概念上对基于Diffusion model的图像生成和重建进行非常简要的介绍,不适合用于深入和详细的了解。 基于Diffusion model的图像生成和重建 What are Stable Diffusion Models and Why are they a Step Forw…

Hyperledger Fabric架构设计

目录 1、逻辑架构 答疑:什么叫做背书策略? 2、运行时架构 答疑:什么是锚节点? 1、逻辑架构 Hyperledger Fabric从1.X开始,在扩展性及安全性方面有了很大的提升,且新增了诸多特性。 多通道:支…

【carla】carla仿真环境安装与运行

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍carla仿真环境安装与运行。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷…

文心一言 VS 讯飞星火 VS chatgpt (51)-- 算法导论6.2 3题

三、当元素 A[i] 比其孩子的值都大时,调用 MAX-HEAPIFY(A.i)会有什么结果? 文心一言: 当元素 A[i] 比其孩子的的值都大时,调用 MAX-HEAPIFY(A, i) 会将 A[i] 与其孩子中的最小值进行交换,并将 A[i] 视为新的根节点。这个操作会…

解决no main manifest attribute, in XXX.jar

解决no main manifest attribute, in XXX.jar 1. 问题描述1.1 前言1.2 问题描述 2. 问题原因3. 解决问题3.1 修改pom文件3.2 重新启动3.3 再次查看META-INF/MANIFEST.MF3.4 小结 1. 问题描述 1.1 前言 创建一个简单的maven项目,pom配置如下: 1.2 问题…

若依-vue图片上传本地改OSS前台以及后台-附带oss图片上传工具类

阿丹: 在二次开发若依的过程中发现若依的图片上传的默认的是在本地,在spring-vue版本中,如果要将平台上线那么就需要考虑这个问题,要使用fastdfs或者oss来完成代替本地的图片上传。 本篇文章我使用了oss来完成图片上传以及前台的…

【零基础入门学习Python---Python网络编程之django快速入门实践】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

mac 文件批量重命名001开始

mac 文件批量重命名001开始,怎么操作?我们平时在整理办公文件的时候,经常需要对文件的名称进行修改,将文件修改为数字形式的名称,例如001、002、003、004......这样的形式,尤其是某项工作涉及非常多文件的时…

Spring Boot 中的 WebSocket 是什么,原理,如何使用

Spring Boot 中的 WebSocket 是什么,原理,如何使用 前言 WebSocket 是一种支持双向通信的网络协议,可以让客户端和服务器之间实现实时通信。Spring Boot 提供了对 WebSocket 的支持,可以方便地在应用程序中实现实时通信功能。本…

LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

iOS App的上架和版本更新流程

一、前言: 作为一名iOSDeveloper,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。 二、准备: 一个已付费的开发者账号(账号类型分为个人(Individual)、公司(Com…

2023上半年软考系统分析师科目一整理-17

2023上半年软考系统分析师科目一整理-17 计算机系统的性能一般包括两个大的方面。一个方面是它的(),也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度,也可以是在一段时间内,能正常工…