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

目录

一、介绍

二、程序设计

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文件

cpp 复制代码
#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文件

cpp 复制代码
#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)		//读取按键1


void GATE_GUARD_Init(void);
uint16_t GATE_GUARD_GetData(void);

#endif /* __ADC_H */

gate_guard.c文件

cpp 复制代码
#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;// 无按键按下
}

三、实验效果

四、资料获取

项目分享

相关推荐
深圳市九鼎创展科技2 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计2 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦4 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报4 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业4 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能4 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn4 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响4 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
qq_672592755 小时前
电源芯片为什么发热
单片机·嵌入式硬件
天天爱吃肉82185 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车