(四)stm32f103c8t6+QT安防项目1.0

一,介绍

前面的文章已经做了dht11温湿度模块,包括QT上位机获取json数据,这篇主要是一篇补充,补充内容包括人体红外传感器+火焰传感器+蜂鸣器报警+风扇的控制。

软件端主页:包括温湿度,可燃气,红外和火灾:正常为绿色,异常为红色报警标志。

控制端可以控制硬件部分的蜂鸣器报警和风扇的开关,监控的话目前还没做,感觉c8t6有点不够用,传输速率这块还有待研究和解决。

软件端设置页面:

这里加了一个Dialog,配置MQTT连接参数,订阅参数

硬件部分展示:

二,硬件选型

主控芯片:stm32f103 c8t6

wifi模块:ESP8266 01s

传感器:DHT11温湿度传感器、火焰传感器、HC-SR505迷你小型人体红外感应、MQ2(目前还存在一些问题有待解决)。

还有有源蜂鸣器(低电平触发)、小风扇、继电器

其他:stlink v2下载器,usb-ttl,面包板,连接线若干。

三,硬件

3.1有源蜂鸣器

这个东西很好弄,GND接GND , VCC接3.3V , IO引脚我接的PA0。

注意低电平触发,初始化使能,模式为推挽输出就可以使用了。

通过以下方式控制响动就行

GPIO_SetBits(GPIOA,GPIO_Pin_0);

GPIO_ResetBits(GPIOA,GPIO_Pin_0);

void BEEP_Init(void)
{
 
    GPIO_InitTypeDef GPIO_InitStructure;
     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);     //使能PA端口时钟
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                 //BEEP-->PA 0 端口配置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口速度为50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure);                     //根据设定参数初始化GPIO .0
}

3.2 红外传感器

这个和蜂鸣器差不多,附一张我淘宝买的卖家介绍图,只用初始化后,通过高低电平触发的。

#include "redline.h"


void HC_SR505_Init(void)
{
    GPIO_InitTypeDef    GPIO_InitStruct;
    
    RCC_APB2PeriphClockCmd(HC_SR505_CLKLINE, ENABLE);
    
    GPIO.GPIO_Pin   = HC_SR505_PIN;
    GPIO.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
    GPIO_Init(HC_SR505PORT, &GPIO_InitStruct);
//      GPIO_ResetBits(HC_SR505PORT,HC_SR505_PIN);
}

3.3 火焰传感器

同样的原理,也是高低电平触发,我这里是买的三线的,就是只有DO口,四线的话是由AO口的

3.4 MQ2

这个我是采购的的四线的,简单介绍下MQ2这个传感器吧,具体获得烟雾浓度,接AO口,通过这个可以获得一个电压值,随着烟雾浓度的增加,电压值也会随之增加,0.1V-0.3V是相对没有污染的,到4V就属于相对很严重的污染了。

ppm : 对大气中的污染物,常用体积浓度来表示其污染程度,也就是ppm值

根据MQ2得到的电压值,可以根据转换公式,转换为ppm值。

说一下我用这个传感器的体会吧:为什么没有贴上来,就是它这个电压很不稳定,受温度的影响很大。正常来说,得到的电压值1V以内都正常,但是,温度一高,直接给我干到2V,3V去了,我测到的值呢,也是很不稳定。

3.5 风扇

用继电器控制,很简单的电路啦~,继电器就相当于一个开关,根据信号口输出的信号的不同,控制开关的打开方向。我只能说店家说的图非常的详细,直接上图吧!

需要注意的是,如果你只是为了展示这个功能,买5V的风扇就行了,因为c8t6板子上的5V的电源口刚好能供电运转的,买5V往上走的,到时候就需要一个外接电源供电了,外接电源又要买usb转杜邦线的接口。

和蜂鸣器那个差不多,也是通过高低电平控制,你只要连好线,初始化引脚,设置为推挽输出模式,通过信号引脚输出高电平或者低电平就能控制继电器啦。

四,软件

Qt设计的2.0已经出炉了,在1.0的基础上,通过json解包,把数据拿出来显示在QLabel上。

样式就是开头显示的样子,布局都很简单,设计的很丑还请见谅,核心在上篇文章MQTT的使用上,有源代码可以参考。

https://blog.csdn.net/m0_60752380/article/details/129497215

其中涉及到MQTT官方库的配置参考上上上篇:

https://blog.csdn.net/m0_60752380/article/details/129277356

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多读书少上班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值