STM32在电动车报警项目中的应用与实践
项目需求
点击遥控器A按键,系统进入警戒模式,一旦检测到振动(小偷偷车),则喇叭发出声响报警,吓退小偷。点击遥控器B按键,系统推出警戒模式,再怎么摇晃系统都不会报警,否则系统一直发出尖叫,让车主尴尬。
硬件清单
- STM32开发板
- 振动传感器
- 高功率喇叭(没有喇叭可用蜂鸣器替代)
- 433M无线接收发射模块
- 杜邦线
- ST-Link
硬件图
硬件接线
STM32 | 振动传感器 | 继电器 |
PA4 | DO | |
PB7 | I/O | |
PB5 | ||
PA12 | ||
3V3 | VCC | VCC |
5V | ||
GND | GND | GND |
项目流程图
模块一:振动传感器
振动传感器详解
当涉及到物体的振动检测和感应时,震动模块成为一种常见且实用的工具。这种小巧而功能强大的设备可以用于各种应用,从智能家居到安防系统,再到工业自动化等领域。通过感知和转换物体振动为电信号,振动模块在许多方面都发挥着重要的作用。
振动传感器实拍
接好 VCC 和 GND,电源指示灯将被点亮。
当检测到振动时,板载指示灯点亮;振动停止,板载指示灯熄灭。
用螺丝刀转动「灵敏度调节电位器」可以调节灵敏度。大家可以将电位器旋到最左或最右,然后测试往哪边旋可以提高灵敏度。
SW-18015P 在静止时为开路 OFF 状态, 当受到外力碰触而达到相应震动力时,或者移动速度达到适当离(偏)心力时,导电接脚会产生瞬间导通呈瞬间 ON 状态;当外力消失時,开关恢复为开路 OFF 状态。
所以,SW-18015P 在无震动或者震动强度达不到设定阈值时,DO 口输出高电平,当外界震动强度超过设定阈值时,模块 D0 输出低电平。
请注意这个模块在感应到小的震动时触发时间会很短,无法驱动继电器,有些的资料显示可以直接和继电器模块相连,但实际运用效果不佳。
模块目的
使用中断的方法,震动传感器检测到振动时,LED1点亮2s,之后熄灭
模块二:继电器
继电器模块详解
继电器,一种常见的电控制装置,其应用几乎无处不在。在家庭生活,继电器被广泛应用于照明系统、电视机、空调等电器设备的控制;在工业领域,它们用于控制电机、泵站、生产线等高功率设备的运行;继电器还在通信网络、交通系统以及医疗设备中发挥着重要作用。
可以被形象地比作一个开关,就像电灯开关一样,按下,电路闭合,电路通,灯亮;再按下,电路断开,电路不通,灯灭。它能够通过控制小电流来打开或关闭大电流电路,实现电路的控制和信号的传递。不过,与普通的物理开关相比,继电器具有更高的可靠性和灵活性,能够应对复杂的电路控制需求
不仅如此,继电器也是学习其他电子原理和技术的入门工具。通过理解继电器的工作原理和使用方法,你将为更深入地探索电子世界打下坚实基础。
所以,如果你还是一枚小白,不必担心!继电器是一个很好的起点,可以帮助你逐步了解电子领域的基础概念和应用。相信我,一旦你掌握了继电器的奥秘,你将获得打开通向电子世界更大门的钥匙!
当信号电源断开,线圈两端没有施加电压,线圈没有产生磁力,衔铁在弹簧拉力下不接触触点,工作电路不连通,负载电器不工作。
当信号电源闭合,线圈两端施加电压,线圈产生磁力把衔铁往下拉,衔铁接触触点,工作电路连通,负载电器工作。
继电器的控制电路与工作电路是隔离的,这种切换状态的能力使得继电器能够控制高电压、大电流电路的开关操作。
模块目的
继电器500ms闭合再500ms断开,如此循环
模块三:433M无线收发
433M无线收发模块介绍
无线通信技术在现代社会中扮演着至关重要的角色,它让我们能够实现便捷的远程控制、智能家居、自动化以及各种物联网应用。无线通信技术包括 WiFi、蓝牙、NFC、Zigbee、5G 等等。
无线收发模块 433MHz(或称RF433射频小模块)采用高频射频技术,并结合了全数字技术和 AVR 单片机,成为一种微型收发器。它能够实现高速数据信号传输,并具备打包、检错和纠错处理的功能。
433M 模块采用工业级标准的部件,工作稳定可靠,体积小巧,安装方便。它在各个领域都有广泛的应用,包括安全报警系统、家庭生活、工业自动化、远程遥控以及无线数据传输等。其可靠性和稳定性使得它成为许多无线通信需求下的理想选择。
首先我们知道遥控器上有四个按键,分别对应 433M 模块的四个数据位输出脚 D0、D1、D2、D3。按下按键发射信号,对应的引脚就会输出高电平。
那么,433M 模块一般按照工作模式分类,有三种工作模式:
- M 点动:瞬态输出,相当于自复位开关的状态收到信息输出高电平,无信号时为低电平。
- T 锁存:上电时为低,收到信号输出高电平并锁定高,再次收到信号输出低并锁定低。
- L 自锁:上电时为低,收到信号输出高电平并锁定高,同时将其他输出置低。
比如我的模块是 M4 点动,「4」表示有4个按键,按一下按键 A,D0 将输出一个高电平。
大家购买的时候要看清楚啦,选择合适的工作模式的 433M 模块哦,它们长的都一样,但是工作模式是不能改的。
模块目的
按下遥控器A键,LED1亮/灭;按下遥控器B键,LED2亮/灭
项目代码
main.c代码
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "exti.h"
#include "alarm.h"
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
led_init();
exti_init();
alarm_init();
uint8_t alert_mode = FALSE;
while(1)
{
//A按键是否按下
if(buttonA_flag_get() == TRUE)
{
alarm_on();
delay_ms(2000);
alarm_off();
alert_mode = TRUE;
}
//B按键是否按下
if(buttonB_flag_get() == TRUE)
{
if(alarm_status_get() == ALARM_STATUS_ON)
alarm_off();
else
{
alarm_on();
delay_ms(1000);
alarm_off();
}
alert_mode = FALSE;
}
//如果处于警戒模式下
if(alert_mode == TRUE)
{
if(vibrate_flag_get() == TRUE)
alarm_on();
}
else
vibrate_flag_set(FALSE);
}
}
其余完整代码放在压缩包里,下载烧录进开发板即可运行
演示图
由于高功率喇叭声音实在过大,不利用实验时候多次调试,故改为以下的蜂鸣器替代
总结
可以将高功率喇叭换成蜂鸣器,避免扰民。做一个项目前(不管大小)尽量写一个流程图,可以用飞书写一个流程图,分模块完成。
作者:Kieran-_-