文章目录
-
- 一、硬件选型
-
- 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卡张卡,这个没有要求,根据自己的情况买就行了), 详细通信格式可看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主的视频学习哦,参考学习资料: 下面这个是有大佬学习之后做的笔记,大家可以参考一下,应该可以少走很多弯路,这也是笔者做完之后才发现的: 本设计是经过扩展了的哦,除了小程序是参考的视频,其他很多设计都是自己开发的哦。 小程序的设计主要由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”(未知人脸)
五、还可以怎么完善?
1、增加视频监控功能,推荐使用esp32 cam。 2、语音播报可以把JQ8900改为SYN6288(这个笔者没有用过),SYN****是一款TTS文字转语音模块,在播报方面会更加的灵活。 3、移植lvgl,显示的内容更加丰富。 4、绘制电路板,将硬件焊接在一起。 5、基于freeRTOS等操作系统开发等等…
六、总结
总体来说,本设计实现的功能主要是对家居的控制,有本地控制、远程控制和语音控制,整体上实现了一个功能较杂的智能家居系统(基于裸板开发的),但该系统整体上还有很多内容需要优化,也还存在一定的BUG,所以大家在参考的时候可以带有辩证的眼光去看待,希望不要被我带偏了😄 最后,如果代码能整理好且成功上传github或者百度网盘了我再把链接发上来吧~