门磁模块详解(防盗感应开关 STM32)

devtools/2024/11/15 1:02:38/

目录

一、介绍

二、程序设计

main.c文件

gate_guard.h文件

gate_guard.c文件

三、实验效果 

四、资料获取

项目分享


一、介绍

        MC-38常闭式门磁开关是作为IO开关输入数字信号的,原理是合在一起信号是导通的 , 配合有线主机使用 不能单独使用。适用于非铁质(如木制或铝合金制)门或窗表面安装,做防盗报警使用。

以下是门磁模块的参数:

型号

MC-38

开关耐压

100VDC

负载电流

150mA

外观尺寸

27*14*10 mm

动作距离

18mm ± 6mm

寿命

100万次

开关输入

常闭式

哔哩哔哩视频:

门磁模块详解(防盗感应开关 STM32)

(资料分享见文末) 


二、程序设计

1.使用STM32F103C8T6读取门磁模块采集的数据,通过串口发送至电脑

2.将读取得到信息数据同时在OLED上显示

门磁IO

PB15

OLED_SCL

PB11

OLED_SDA

PB10

串口

串口1

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "gate_guard.h"
#include "adcx.h"/*****************辰哥单片机设计******************STM32* 项目			:	门磁模块实验                     * 版本			: V1.0* 日期			: 2024.9.6* MCU			:	STM32F103C8T6* 接口			:	参看gate_guard.h							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/u16 value;int main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();GATE_GUARD_Init();USART1_Config();OLED_Init();delay_ms(1000);OLED_Clear();//显示“门磁状态:”OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChinese(32,0,2,16,1);OLED_ShowChinese(48,0,3,16,1);	OLED_ShowChar(64,0,':',16,1);while (1){value = GATE_GUARD_GetData();if(value == 1){OLED_ShowChinese(60,30,4,16,1);  //开printf("开\r\n");LED_Toggle();delay_ms(100);}else{OLED_ShowChinese(60,30,5,16,1);		//关printf("关\r\n");delay_ms(100);}}
}

gate_guard.h文件

#ifndef __GATE_GUARD_H
#define	__GATE_GUARD_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"/*****************辰哥单片机设计******************STM32* 文件			:	门磁模块h文件                   * 版本			: V1.0* 日期			: 2024.9.6* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************//***************根据自己需求更改****************/
// 门磁模块 GPIO宏定义#define		GATE_GUARD_GPIO_CLK								RCC_APB2Periph_GPIOB
#define 	GATE_GUARD_GPIO_PORT							GPIOB
#define 	GATE_GUARD_GPIO_PIN								GPIO_Pin_15/*********************END**********************/#define GATE_GUARD  GPIO_ReadInputDataBit(GATE_GUARD_GPIO_PORT,GATE_GUARD_GPIO_PIN)		//读取按键1void GATE_GUARD_Init(void);
uint16_t GATE_GUARD_GetData(void);#endif /* __ADC_H */

gate_guard.c文件

#include "gate_guard.h"/*****************辰哥单片机设计******************STM32* 文件			:	1×4矩阵键盘c文件                   * 版本			: V1.0* 日期			: 2024.8.31* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************/void GATE_GUARD_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd (GATE_GUARD_GPIO_CLK, ENABLE );			// 打开连接 单片机引脚端口时钟GPIO_InitStructure.GPIO_Pin = GATE_GUARD_GPIO_PIN;					// 配置连接 单片机引脚模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;								// 设置为上拉输入GPIO_Init(GATE_GUARD_GPIO_PORT, &GPIO_InitStructure);					// 初始化 }uint16_t GATE_GUARD_GetData()
{if(GATE_GUARD==1){delay_ms(10);//去抖动 if(GATE_GUARD==1)return 1;}    return 0;// 无按键按下
}

三、实验效果 

四、资料获取

项目分享


http://www.ppmy.cn/devtools/114178.html

相关文章

蓝桥杯1.确定字符串是否包含唯一字符

插播一句,博主转学python了,来写写算法题,若掌握好会考虑捐300块。 题目: 题目描述 实现一个算法来识别一个字符串的字符是否是唯一的(忽略字母大小写)。 若唯一,则输出YES,否则…

智能指针

1. 为什么需要智能指针? 下面我们先分析一下下面这段程序有没有什么内存方面的问题?提示一下:注意分析MergeSort函数中的问题。 因为div抛异常后会跳过delete,导致内存泄漏 int div() {int a, b;cin >> a >> b;if …

程序员装新机

当Java程序员拥有了一台新笔记本电脑 Win11 请点击下载需要的资源: 代码编辑器工具: 前端开发工具:node-v14.17.0-x64、nvm-setup、VSCodeUserSetup-x64-1.55.1 后端开发工具:jdk8、maven3.3.9、idea2023社区版、postman7.1.1 开…

R18 NES 之SSB-less SCell operation for inter-band CA

在TR 21.918 Summary of Rel-18 Work Items 中可以看到SSB-less SCell operation for inter-band CA 是Network energy savings for NR 的一部分,其中还包括cell DTX/DRX 等等其他内容。 网络节能是 5G/NR 成功的关键,可以减少对环境的影响(温室气体排放)并节省运营成本。R…

【新片场-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

网络安全产品认证证书大全(持续更新...)

文章目录 一、引言二、《计算机信息系统安全专用产品销售许可证》2.1 背景2.2 法律法规依据2.3 检测机构2.4 检测依据2.5 认证流程2.6 证书样本 三、《网络关键设备和网络安全专用产品安全认证证书》3.1 背景3.2 法律法规依据3.3 检测机构3.4安全认证和安全检测依据标准3.5 认证…

【C++】——vector模拟实现和迭代器失效问题

文章目录 模拟实现vector基本成员变量vector的构造与析构vector迭代器vector容量vector元素访问vector修改操作 vector迭代器失效问题什么是迭代器失效1.插入元素导致迭代器失效2.删除元素导致迭代器失效3.重新分配空间导致迭代器失效 如何解决迭代器失效问题 模拟实现 vector…

佰朔资本:沪指企稳反弹 半导体板块全天强势

降息预期提振金融板块 昨日午后,大金融板块明显发力,成为引领指数企稳上升的重要力气。到收盘,申万银行指数涨1.00%,工商银行涨超2%,招商银行、建设银行、农业银行等涨超1%;申万非银金融指数涨0.81%&#…