门磁模块详解(防盗感应开关 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文件

#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)		//读取按键1


void 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.mfbz.cn/a/878666.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux——应用层自定义协议与序列化

目录 一应用层 1再谈 "协议" 2序列化与反序列化 3理解read,write,recv,send 4Udp vs Tcp 二网络版本计算器 三手写序列和反序列化 四进程间关系与守护进程 1进程组 1.1什么是进程组 1.2组长进程 2会话 2.1什么是会话 2.2会话下的前后台进程 3作业控…

08_Python数据类型_字典

Python的基础数据类型 数值类型:整数、浮点数、复数、布尔字符串容器类型:列表、元祖、字典、集合 字典 字典(Dictionary)是一种可变容器模型,它可以存储任意类型对象,其中每个对象都存储为一个键值对。…

C++ | Leetcode C++题解之第407题接雨水II

题目&#xff1a; 题解&#xff1a; class Solution { public:int trapRainWater(vector<vector<int>>& heightMap) {int m heightMap.size(), n heightMap[0].size();int maxHeight 0;int dirs[] {-1, 0, 1, 0, -1};for (int i 0; i < m; i) {maxHei…

python中的各类比较与计算

运算符 1.算数运算符2.关系运算符3.逻辑运算符4.关于短路求值5.赋值运算符1&#xff09;的使用链式赋值多元赋值 2)复合赋值运算符 6.位运算符7.成员运算符8.身份运算符 1.算数运算符 # 加 print(1 2) # 减 print(2 - 1) # 乘 print(1 * 2) # 余数 4%31余数为1 print(4 % 3…

【Redis】之Geo

概述 Geo就是Geolocation的简写形式&#xff0c;代表地理坐标。在Redis中&#xff0c;构造了能够存储地址坐标信息的一种数据结构&#xff0c;帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…

F12抓包11:UI自动化 - Recoder(记录器)

课程大纲 使用场景&#xff08;导入和导出&#xff09;: ① 测试的重复性工作&#xff0c;本浏览器录制并进行replay&#xff1b; ② 导入/导出录制脚本&#xff0c;移植后replay&#xff1b; ③ 导出给开发进行replay复现bug&#xff1b; ④ 进行前端性能分析。 1、录制脚…

微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 。…

pytorch快速入门(一)—— 基本工具及平台介绍

前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置&#xff1a;Anaconda Python编译器&#xff1a;pycharm、jupyter 两大法宝函数 dir&#xff08;&#xff09;&#xff1a;知道包中有什么东西&#xff08;函数 / 属性..…

llama网络结构及源码

目录 模型初始化 config lm_head transformer wte h rms_1/rms_2 attn c_attn c_proj 线性层mlp ln_f rope_cache mask_cache kv_caches tokenizer tokenizer初始化 tokennizer.encoder 位置编码和mask 确定最大文本长度 建立rope_cache 建立mask_cache …

信奥初赛解析:1.1-计算机概述

目录 前言 知识要点 一、发展史 二、计算机的分类 三、计算机的基本特征 四、计算机的应用 课堂练习 题目列表 定项选择题 不定项选择题 参考答案 定项选择题 不定项选择题 前言 从今天开始&#xff0c;我们要重点讲初赛内容&#xff0c; 预计讲半年&#xff0c;信…

Linux下编译Kratos

本文记录在Linux下编译Kratos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1Boost1.74.0oneAPI2024.2.1 一、依赖与代码 1.1 安装依赖 apt-get update apt-get install vim openssh-server openssh-client ssh \build-essential …

Oracle发邮件功能:设置的步骤与注意事项?

Oracle发邮件配置教程&#xff1f;如何实现Oracle发邮件功能&#xff1f; Oracle数据库作为企业级应用的核心&#xff0c;提供了内置的发邮件功能&#xff0c;使得数据库管理员和开发人员能够通过数据库直接发送邮件。AokSend将详细介绍如何设置Oracle发邮件功能。 Oracle发邮…

电气自动化入门01:电工基础

视频链接&#xff1a;1.1 电工知识&#xff1a;电工基础_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW?p2&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电能和电力系统 2.电工常用物理量及其应用 2.1电阻&#xff1a; 2.2电流&#xff1a; 2.3电压&…

面试官问:请描述一次你成功解决问题的经历?

面试官为什么要这么问&#xff1f; 面试官问你描述一次成功解决问题的经历&#xff0c;主要是为了评估你的几个关键方面&#xff1a; 问题解决能力&#xff1a;了解你在面对挑战时的思维方式和应对策略。 决策能力&#xff1a;考察你在压力下做出明智决定的能力。 沟通技巧&am…

Python 全栈系列271 微服务踩坑记

说明 这个坑花了10个小时才爬出来 碰到一个现象&#xff1a;将微服务改造为并发后&#xff0c;请求最初很快&#xff0c;然后就出现大量的失败&#xff0c;然后过一会又能用。 过去从来没有碰到这个问题&#xff0c;要么是一些比较明显的资源&#xff0c;或者逻辑bug&#xff0…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具&#xff0c;它通过直观的方式将数字信…

CesiumJS+SuperMap3D.js混用实现可视域分析 S3M图层加载 裁剪区域绘制

版本简介&#xff1a; cesium&#xff1a;1.99&#xff1b;Supermap3D&#xff1a;SuperMap iClient JavaScript 11i(2023)&#xff1b; 官方下载文档链家&#xff1a;SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考&#xff1a;support.supermap.com.cn:8090/w…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…

Docker-compose:管理多个容器

Docker-Compose 是 Docker 公司推出的一个开源工具软件&#xff0c;可以管理多个 Docker 容器组成一个应用。用户需要定义一个 YAML 格式的配置文件 docker-compose.yml&#xff0c;写好多个容器之间的调用关系。然后&#xff0c;只要一个命令&#xff0c;就能同时启动/关闭这些…

Jenkins部署若依项目

一、配置环境 机器 jenkins机器 用途&#xff1a;自动化部署前端后端&#xff0c;前后端自动化构建需要配置发送SSH的秘钥和公钥&#xff0c;同时jenkins要有nodejs工具来进行前端打包&#xff0c;maven工具进行后端的打包。 gitlab机器 用途&#xff1a;远程代码仓库拉取和…