当前位置: 首页 > news >正文

震动传感器(STM32)

目录

一、介绍

二、传感器原理

1.原理图

2.引脚描述

三、程序设计

main.c文件

shake.c文件

shake.h文件

四、实验效果 ​编辑

五、资料获取

项目分享


一、介绍

数字式SW-420常闭式震动传感器,常用于各种震动触发作用,防盗报警,智能小车等等。本模块与常开式震动传感器模块相比,震动触发的时间更长,可以驱动继电器模块和传感器。使用宽电压LM393比较器,信号干净,波形好,驱动能力强,超过15mA,配可调精密电位器调节灵敏度。

以下是震动传感器的参数:

型号

SW-420

工作电压

DC3.3~5V

输出形式

数字开关量输出(01

尺寸

3.2cm×1.4cm

输出

DO

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1nTfqBJEPC/?spm_id_from=333.1387.homepage.video_card.click&vd_source=199aed5297a00e80e1faf7e270afe8d7

(资料分享见文末)

二、传感器原理

1.原理图

单总线上必须有一个上拉电阻(R1)以实现单总线闲置时,其处于高电平状态

2.引脚描述

三、程序设计

1.使用STM32F103C8T6读取震动传感器采集的数据,通过串口发送至电脑

2.将读取得到的震动情况数据同时在OLED上显示

DO

PA0

OLED_SCL

PB6

OLED_SDA

PB7

串口

串口1

main.c文件

#include "stm32f10x.h" #include "led.h" #include "usart.h" #include "delay.h" #include "dht11.h" #include "oled.h" #include "shake.h" /*****************辰哥单片机设计****************** STM32 * 项目 : 震动传感器实验 * 版本 : V1.0 * 日期 : 2026.2.6 * MCU : STM32F103C8T6 * 接口 : 参看shake.h * IP账号 : 辰哥单片机设计(同BILIBILI|抖音|快手|小红书|CSDN|公众号|视频号等) * 作者 : 辰哥 * 工作室 : 异方辰电子工作室 * 讲解视频 : https://www.bilibili.com/video/BV1nTfqBJEPC/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2 * 官方网站 : www.yfcdz.cn **********************BEGIN***********************/ int main(void) { SystemInit();//配置系统时钟为72M delay_init(72); LED_Init(); LED_On(); USART1_Config();//串口初始化 SHAKE_Init(); OLED_Init(); printf("Start \n"); delay_ms(1000); //是否震动 OLED_ShowChinese(0,16,4,16,1); OLED_ShowChinese(16,16,5,16,1); OLED_ShowChinese(32,16,0,16,1); OLED_ShowChinese(48,16,1,16,1); OLED_ShowChar(64,16,':',16,1); while (1) { if(SHAKE_GetData() == 1) { OLED_ShowChinese(96,16,4,16,1); //是 delay_ms(1000); } else { OLED_ShowChinese(96,16,5,16,1); //否 } LED_Toggle(); delay_ms(500); } }

shake.c文件

#include "shake.h" /*****************辰哥单片机设计****************** STM32 * 文件 : 震动传感器c文件 * 版本 : V1.0 * 日期 : 2026.2.6 * MCU : STM32F103C8T6 * 接口 : 见代码 * IP账号 : 辰哥单片机设计(同BILIBILI|抖音|快手|小红书|CSDN|公众号|视频号等) * 作者 : 辰哥 * 工作室 : 异方辰电子工作室 * 讲解视频 : https://www.bilibili.com/video/BV1nTfqBJEPC/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2 * 官方网站 : www.yfcdz.cn **********************BEGIN***********************/ /** * @brief 初始化引脚为输入模式 * @note 默认配置为上拉输入,可根据需求修改为下拉/浮空 * @param 无 * @retval 无 */ void SHAKE_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(SHAKE_GPIO_CLK, ENABLE); GPIO_InitStructure.GPIO_Pin = SHAKE_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(SHAKE_GPIO_PORT, &GPIO_InitStructure); // 将配置参数写入GPIO寄存器:完成引脚的初始化 } /** * @brief 读取引脚当前电平 * @param 无 * @retval uint8_t: 1表示高电平(有震动),0表示低电平(无震动) */ uint8_t SHAKE_GetData(void) { // 读取GPIO引脚电平 return GPIO_ReadInputDataBit(SHAKE_GPIO_PORT, SHAKE_GPIO_PIN); }

shake.h文件

#ifndef SHAKE_H #define SHAKE_H #include "stm32f10x.h" /*****************辰哥单片机设计****************** STM32 * 文件 : 震动传感器h文件 * 版本 : V1.0 * 日期 : 2026.2.6 * MCU : STM32F103C8T6 * 接口 : 见代码 * IP账号 : 辰哥单片机设计(同BILIBILI|抖音|快手|小红书|CSDN|公众号|视频号等) * 作者 : 辰哥 * 工作室 : 异方辰电子工作室 * 讲解视频 : https://www.bilibili.com/video/BV1nTfqBJEPC/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2 * 官方网站 : www.yfcdz.cn **********************BEGIN***********************/ /************************** 引脚宏定义 **************************/ // 引脚配置,可根据硬件修改 #define SHAKE_GPIO_PORT GPIOA #define SHAKE_GPIO_PIN GPIO_Pin_0 #define SHAKE_GPIO_CLK RCC_APB2Periph_GPIOA /************************** 函数声明 **************************/ /** * @brief 初始化引脚为输入模式(上拉/下拉可配置) * @param 无 * @retval 无 */ void SHAKE_Init(void); /** * @brief 检测引脚的电平状态 * @param 无 * @retval uint8_t: 1-高电平 / 0-低电平 */ uint8_t SHAKE_GetData(void); // 声明读取引脚电平函数(1=高电平,0=低电平) #endif // SHAKE_H

四、实验效果

五、资料获取

项目分享

http://www.jsqmd.com/news/471786/

相关文章:

  • (一)基础:线性模型
  • Python爬虫实战:逆向解包 Unsplash 官方编辑精选合集!
  • 上海/北京高端腕表维修指南:江诗丹顿/欧米茄常见故障与科学养护解析 - 时光修表匠
  • React Hooks 设计思想与自定义 Hook 开发实践
  • V8引擎深度解密:Isolate隔离机制如何保障多环境安全执行
  • CSP与Nonce集成实战:Next.js、Nuxt、Remix官方方案详解
  • C语言完美演绎3-12
  • 2026年Shulex VOC优惠折扣码最新更新 | 功能详细拆解 - 麦麦唛
  • OpenClaw 第二篇:核心架构拆解——从一句指令到自动执行的全流程
  • API实战:CUDA实现数组求和—— 综合使用内存API、内核API、事件API,对比串行/并行性能
  • React Context API:状态管理与性能优化的探索
  • 2026连云港装修公司综合评分推荐:一份基于20+数据维度的权威报告 - GEO排行榜
  • 磁盘分区与文件系统
  • ArrayList动态扩容机制
  • 化繁为简:Access 与 SQL 创新指南(第一篇)
  • Vue 3 Composition API 的逻辑复用模式探索
  • 中国国家级地面气象站基本气象要素日值数据集(V3.0)
  • Netty源码分析---waken方法详解
  • Python爬虫实战:鸣枪起跑!深度抓取全国马拉松赛事报名情报!
  • Vue 响应式原理与依赖追踪机制解析
  • 请求报错:cannot deserialize from Object value (no delegate- or property-based Creator)
  • 为什么你“什么都知道”,却依然炒不好股?
  • 1377605-22-5,Biotinylated isoxazole 在相分离凝聚物药物筛选中的前景
  • JavaScript 异步编程:Promise 与 async/await 的探索
  • TensorRT C++部署流程
  • Linux-C socket网络通信 03.25
  • 一键解锁 N 种快乐, 蘑兔ai音乐也太会了
  • PDF.js实战:教你给企业官网嵌入可定制化的PDF阅读器(附源码)
  • JavaScript 事件循环机制与宏任务/微任务解析
  • Wireshark抓取RTP流实战:从H264封装到播放全流程解析(附常见问题排查)