这次来分享个最近做的项目,stm32智能语音电梯消毒系统
功能说明:在电梯,房间,客道区域内,检测到人,则执行相关动作!例如继电器开关灯,喷洒酒精等行为。手机app/微信小程序可以控制需要执行的动作
效果演示视频👇
硬件材料:
SU-03T离线语音模块
HC-SR501人体红外传感器
OLED(IIC)屏幕
喷雾模块
DHT11温湿度传感器
水位传感器
esp-01s,WiFi模块
stm32f103c8t6最小系统板
然后自己画一块电路板,下面附上原理图(一共2部分,其中包括充电电路,放电保护,升压电路 ,如果自己不需要锂电池供电,那么就不需要了,其他模块的排母)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b7de69fb6ab8a4d6905617b2762996.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df351307b9df6c1e98587e2e858738d7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a014cf932eafbb395ce73b12e1de29ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d6c9b99e8f466a4e167d5951f8a0e49a.png)
软件准备:
keil5
微信开发者工具(二选一)
Android Studio(二选一)
串口助手(好调试信息)
注:我这里2种都会分享出来。
软件开发步骤:我会将每个模块都驱动一次,最后整合成在一起
1.HC-SR501人体红外传感器驱动
![](https://i-blog.csdnimg.cn/blog_migrate/96ecfa501347cea9367f9aad8e63f85c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de2f0b69826856c7bd6dd2c010ed06f4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/08afff29368916766e1d22c102f2762e.jpeg)
说明:我把传感器密封在盒子里面时,一直都是低电平,当我打开时,是高电平(检测到人),说明符合我们的预期,那么,这个模块就算驱动完成!这里的结果是这样的,当检测到人=1时,会延续3-5秒钟为0,然后又为1(前提是还能检测到人),这个根据你拧这个有关。
![](https://i-blog.csdnimg.cn/blog_migrate/9e986e00a8ca7464b485470fa2bd25fb.png)
2.水位传感器模块
本设计使用的水位传感器,主要的原理是采用了三极管电流放大的经典特性,在水位高度到达一定的程度,三极管的基极和电源的正极形成回路时,三极管的基极和发射极的回路上就会形成电流,这个电路在回路中是有一定的值的,那么,三极管的集电极和发射极的区域内也会形成具有一定值的电流的放大倍数。所以,回路中的电流就会流过发射极的电阻从而形成特俗的电压,主控MCU就可以利用AD模数转换器来获取该点的电位,通过电压分压的计算方式,可以算出具体的电压值。
该传感器利用与该系统相邻的5条赤脚电缆启动。在每两条地线之间交叉插入一条感知线,5条地线和5条感知线。传感器连接在1兆欧的电极电阻上。将感知线拉到一滴水或水平面与感知线接地为止。理论上,该传感器将输出0-1024之间的模拟信号,但由于pcb的线幅增大,可以使用480到710之间。由于传感器的设计并没有完全浸泡在水中,所以请注意只将露出的pcb的线接触到水。传感器的输出电压为0-4.2v,因此,如果需要低/高标识,可以作为数字输入使用。传感器的实物图如下。
![](https://i-blog.csdnimg.cn/blog_migrate/d5cb1fc3a091af9078ad1904ee8afedf.png)
大白话:其实就是通过AD模数转换成电压值,再通过计算,显示水位而已,没啥难度的。下面是我的代码
![](https://i-blog.csdnimg.cn/blog_migrate/0b8b9ee77adcb4fcb47b07802530ff31.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0f9f63a7a9f4dc5e897676e5978efbaa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9b664350bccf12d43f26b8de8cf3acc.png)
在主函数直接调用,然后在OLED显示就行了
![](https://i-blog.csdnimg.cn/blog_migrate/70d680a7dfe0ddc901bc4652bc0dc874.png)
我们来看下效果,是不是很简单
![](https://i-blog.csdnimg.cn/blog_migrate/e291e496157ab10b6f6e0b5bcc0658b2.png)
3.温湿度传感器这里我就不重复说了,因为我之前有写过文章,不清楚的朋友可以→OLED显示温湿度
4.stm32通过ESP8266连接onenet
这部分内容,我也是写过文章的,不懂的可以看→👉stm32连接onenet👈
到这里,大家应该可以看出,我做的项目都是承上启下的,把之前学过的东西整合在一起成为一个项目。👋
5.消毒操作的实现
这里使用的是雾化片来代替喷雾,雾化片我是在网上买的,雾化片的摸鱼如下图(没有打广告哈,这个店铺不是我的👀)买最便宜的就行了,我们到时候要拆下来,用它的正负极就行了,因为只有这样,才能实现IO口来控制设备,不然没办法控制,当然,加继电器就行了,但是太麻烦了,同时也不美观,毕竟我们是要画PCB板子的。😁
![](https://i-blog.csdnimg.cn/blog_migrate/81fbb1d1732e146c0ad32809bbf3c40e.png)
实物图
![](https://i-blog.csdnimg.cn/blog_migrate/095c31d7d687a80e2cca08ad14aa285f.png)
在这里说明一下,这个雾化片的工作电压,电流要高一点才能驱动,如果直接接3.3V的电压,是没办法工作的,所以电路图这里就是利用了3.3v升压到5v,从而通过IO口来控制5v的开关,因为喷雾模块电路需要5V供电,所以只有用一个三极管放大电流来作为一个开关
这样是最妥当的。然后,后面就类似点灯一样的操作,给高电平,就喷雾,低电平就停止喷雾。
![](https://i-blog.csdnimg.cn/blog_migrate/96267234459bf5558303a953b7df9ac1.png)
代码就这样写:因为我用的是PB12嘛
![](https://i-blog.csdnimg.cn/blog_migrate/c9862d8a71a2ed06af00d5e989515713.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f43918c2d3910e57559c19d2b108fe93.png)
高电平=开启喷雾
低电平=关闭喷雾
这里其实就是和点灯一模一样。好了,我们可以手动的开启/关闭喷雾,后面就是根据标志位来让他自动的开启和关闭了。
上面已经驱动好红外人体感应了,只需要在主函数这样写,注释写的很详细啦😊
![](https://i-blog.csdnimg.cn/blog_migrate/dd5497d968c02d7bf281b7d80eefe411.png)
6.OLED显示
OLED用于显示传感器的数值和一些信息
显示设备正常启动,下面是实物效果图。有提示文字
![](https://i-blog.csdnimg.cn/blog_migrate/0a8cdf7b5d02c0b25e5a288a4fc5cb01.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bca49c1effb3f386b33da9b6b0f9af2c.png)
2.联网成功后显示界面的效果图
![](https://i-blog.csdnimg.cn/blog_migrate/0a8cdf7b5d02c0b25e5a288a4fc5cb01.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7a880a75fd209b56a8c5fd2383b8e2d8.png)
7.SU-03T离线语音模块驱动
这个是一个模块,我们只需要在模块的官网配置好信息参数就行,下面会给出步骤,现在这里说下总体思路:在官网配置好后,语音模块会根据你的命令,从而给一个引脚高低电平(怎么知道是高还是低呢?这个是在官网配置的,后面会说,不要着急),stm32在主循里面,一直判断某个引脚是否为高低电平,从而执行相应的功能。
7.1SU-03T 官网配置
首先打开官网👉 智能公元官网👈
右上角自行注册登录。
![](https://i-blog.csdnimg.cn/blog_migrate/59ec5a2642d05d08d2556aa345136316.png)
根据我的步骤来
![](https://i-blog.csdnimg.cn/blog_migrate/e64c593c5b32fb58ed14e4d63a9b7b22.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a2005cc9a9f30be6fdfd4cc19739eb14.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f05953ad9dc87957535c15a3c19734c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f8c05699def00cf5eea45abc39e03a49.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3599f013b221c62374cfc80681c68d8e.png)
这些自己定义就好
![](https://i-blog.csdnimg.cn/blog_migrate/51d7d1aa16b8e17833e05dfe66867cd0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e25e804f8ba9c203c895d6b42c176c1b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/54110cfca8c56dd86ecdf9fdbfc2698e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2051bf883be0f7641ddd27cac734de15.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a55025118d7c7505f4f28884518e4f63.png)
然后就发布版本
![](https://i-blog.csdnimg.cn/blog_migrate/708766881dab6fee97ab05d53cf12b77.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a285a7951ebd2dec73d7d76a3c9f004a.png)
7.2将固件烧录到语音模块里面
我最下面的百度网盘会提供固件烧录软件,大家不要慌张!先看看它长什么样
![](https://i-blog.csdnimg.cn/blog_migrate/00be54b09e8a364afbf05d161f3828e6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/20bf7c1e2cfa00953b1b722aba1fd5a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f19d549c2faf3e2d80bdb8e8e2ef7db.png)
最后就等待烧录成功就好啦。
8.STM32判断语音模块引脚的高低电平
主函数的代码这样写
![](https://i-blog.csdnimg.cn/blog_migrate/bac9b80dd566759d88ec4205b75b14a4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3ec374eda938de8ed229bd618af2bbc.png)
只需要在while(1)里面一直判断和语音模块连接引脚的电平,就可以执行自己要自行的功能啦,到此为止,就实现了语音控制的功能啦,如果你做的是别的项目,可以依此类推,语音控制舵机,电机之类的。
9.微信小程序获取数据和下发命令
这部分我也是有写过文章的,这里不重复撰写传送门👉微信小程序获取数据和下发控制命令👈
所以我的铁粉应该都知道,我做的项目都是通过一个个小技术整合成一个完整项目的。
效果图如下
![](https://i-blog.csdnimg.cn/blog_migrate/597b4c17594de4bd60b1f5018d274794.png)
追加:微信小程序的代码还是贴一贴吧,怕大家看不懂,看不懂的都可以私信我(前提是一键三连哈😁)
![](https://i-blog.csdnimg.cn/blog_migrate/7f3708f88c21eea14bfe030ad9cb3214.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ad51937b88f27cc922439cf8e2ca0f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55019e8485e17c8e33d74c6ddf5c5925.png)
![](https://i-blog.csdnimg.cn/blog_migrate/96a2513fbcfde59539983b355cee9361.png)
10.整体框图和设计流程
整体框图
![](https://i-blog.csdnimg.cn/blog_migrate/d3ca0f86a7ff3e14b5b8be829c5ad084.png)
软件设计流程图
![](https://i-blog.csdnimg.cn/blog_migrate/ea50f9b85eed59b3dbd374e02ab1272b.png)
总结:总的原理图,我已经在最上面发出来了,如果不会接线的可以去看看。