嵌入式人工智能(39-基于树莓派4B的震动传感器和霍尔传感器)

这两个传感器实验比较简单,也都属于力传感器,就放一起做了。

1、震动传感器

震动传感器是一种用于检测和测量物体震动、振动和冲击的设备。它通常由一个敏感元件和一个信号处理单元组成。敏感元件可以是压电材料、光电材料、加速度传感器等。当物体发生震动时,敏感元件会产生相应的电信号,信号处理单元会对这个信号进行放大、滤波和解码等处理,最终将震动信号转换为可供人们理解和分析的信息。震动传感器广泛应用于地震监测、机械设备故障诊断、车辆监测、安防系统等领域。

在震动传感器模块中,导电的振动弹簧和触发销被精确地放置在开关体中,并且通过黏合剂结合
到固化位置。产品不震动时,弹簧和触发销不接触,震动传感器模块呈闭合导通状态,输出端输出低电平,绿色指示灯亮。产品震动时,弹簧就会摇动并与触发器引脚接触,产生触发信号,震动传感器呈断开状态,输出端输出高电平,绿色指示灯不亮。因此,只需要通过树莓派检测输出端电平的高低就能检测出环境是否有震动。

从上图看震动传感器只有一个DO数字信号输出,正好接在树莓派的任一GPIO口。VCC和GND接3.3V和GND。我们也做了很多传感器实验,关于传感器VCC接5V还是3.3V我们总结下,如果不知道接几V,最好的办法是查数据手册。如果不想查也没有关系,一般芯片或器件都支持3.3V-5V,我们可以先接3.3V,如果发现总线识别不到设备,或者传感器效果比较差那就换5V供电。

2、实验代码与现象

import time
import RPi.GPIO as GPIO
import TM1638
import math
# 设置使用的引脚
GPIO_PIN = 37
tm=TM1638.TM1638(stb=36,clk=38,dio=40) 
tm.brightness(2)def init():GPIO.setmode(GPIO.BOARD)GPIO.setup(GPIO_PIN, GPIO.IN)def main_loop():init()shock_num = 0while True:if GPIO.input(GPIO_PIN) == 1:print("检测到震动!")shock_num = shock_num+1tm.leds(0b11111111)time.sleep(0.5)else:print("未检测到震动")tm.leds(0b00000000)time.sleep(0.5)tm.number(int(shock_num))if __name__ == '__main__':try:main_loop()except KeyboardInterrupt:print("程序结束!")finally:tm.clear()GPIO.cleanup()

如果有震动,统计下震动的次数,显示到数码管上面,产生震动LED灯亮,不震动LED灭。

这里多了一个扩展板TM1638,它是一个LED、按键、数码管的集成板,节省IO口。同学们不用管它,后面我们会介绍。当发生震动的时候,震动传感器的灯会灭,端口收到高电平,这和有的传感器不一样。

3、霍尔传感器

霍尔传感器(Hall sensor)是一种基于霍尔效应原理工作的传感器。霍尔效应是指在恒定磁场作用下,导体中通过电流时,垂直于电流方向的方向产生电势差。基于这个效应,在霍尔传感器中,通过将电流引入导体中,当有磁场通过时,会在导体两边产生电势差,可以通过这个电势差来检测磁场的强度和方向。

霍尔传感器具有灵敏度高、反应速度快、体积小、功耗低等特点,广泛应用于测量、检测、自动控制等领域。常见的应用包括车速传感器、磁编码器、接近开关、电流传感器等。

在汽车领域,霍尔传感器通常用于测量车速,通过检测车轮上的磁铁,可以确定车辆的速度和里程。另外,霍尔传感器也被用于测量发动机的转速、油门位置等参数,以及车身稳定控制系统中的车辆姿态和转向角度等。

总之,霍尔传感器是一种重要的传感器技术,具有广泛的应用前景。

这个程序代码和上面比较类似,如果检测到磁场,则DO产生低电平信号输出到GPIO。我手头没有磁铁,找了块机械硬盘,机械硬盘里面有磁铁,可以检测到磁场。同学们可以试试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388720.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?

<> 博客简介&#xff1a;Linux、rtos系统&#xff0c;arm、stm32等芯片&#xff0c;嵌入式高级工程师、面试官、架构师&#xff0c;日常技术干货、个人总结、职场经验分享   <> 公众号&#xff1a;嵌入式技术部落   <> 系列专栏&#xff1a;C/C、Linux、rt…

golang JSON序列化

JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 json历史 [外链图片转存失败,源站可能有防盗链机…

看不见的硝烟:中国网络安全三十年沉浮史

2022 年 5 月 16 日&#xff0c;俄罗斯黑客组织 KillNet 向包括美国、英国、德国在内 10 个国家的政府正式 “宣战”。 2022 年 4 月 28 日&#xff0c;一则消息刷屏&#xff0c;北京健康宝在使用高峰期间&#xff0c;遭受到境外网络攻击。北京健康宝保障团队进行了及时有效应…

4G/5G无线视频采集设备如何通过国标28181接入到视频监控接入平台(视频统一接入平台)

目录 一、国标GB/T 28181介绍 1、国标GB/T28181 2、内容和特点 二、4G/5G无线视频采集设备 1、定义 2、主要功能&#xff1a; 3、技术特点 4、应用场景 二、接入准备工作 1、确定网络环境 &#xff08;1&#xff09;公网接入 &#xff08;2&#xff09;专网传输 2、…

一款功能强大的免费开源卸载工具

BCUninstaller&#xff0c;也称为Bulk Crap Uninstaller&#xff08;简称BCU&#xff09;&#xff0c;是一款免费且开源的Windows平台专用程序卸载工具。它的主要功能是帮助用户高效地批量卸载不需要的应用程序和组件&#xff0c;从而优化系统性能。 BCUninstaller功能特点 批…

这本vue3编译原理开源电子书,初中级前端竟然都能看懂

前言 众所周知vue提供了很多黑魔法&#xff0c;比如单文件组件(SFC)、指令、宏函数、css scoped等。这些都是vue提供的开箱即用的功能&#xff0c;大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢。 我们每天写的vue代码一般都是写在*.vue文件中&#xff0c;但是浏览器却只…

【大厂笔试】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树

检查两棵树是否相同 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 思路解透 两个根节点一个为空一个不为空的话&#xff0c;这两棵树就一定不一样了若两个跟节点都为空&#xff0c;则这两棵树一样当两个节点都不为空时&#xff1a; 若两个根节点的值不相同&#xff…

【数据结构】了解哈希表,解决哈希冲突,用Java模拟实现哈希桶

哈希表的概念 哈希表&#xff08;Hash Table&#xff09;是一种高效的数据结构&#xff0c;用于实现快速的数据存储和检索。它通过将数据映射到一个数组的索引位置&#xff0c;从而能够在平均情况下实现O(1)的时间复杂度进行查找、插入和删除操作。 哈希表的基本概念包括以下…

java面向对象重点总结

文章目录 java面向对象重点总结类与实例构造方法方法重载属性与修饰符封装继承多态重构抽象类接口抽象类和接口的区别&#xff1a;集合泛型 java面向对象重点总结 对象是一个自包含的实体&#xff0c;用一组可识别的特性和行为来标识。 面向对象编程&#xff0c;英文叫Object…

flink 1.17 测试

1、配置 2、测试&#xff1a; ./bin/flink run-application -t yarn-application -Dyarn.application.namewordcount -c org.apache.flink.streaming.examples.wordcount.WordCount ./examples/streaming/WordCount.jar --input hdfs://jy/tmp/input --output hdfs://jy/tmp/o…

C++学习:C++是如何运行的

C 是一种强类型的编程语言&#xff0c;支持面向对象、泛型和低级内存操作。它的工作机制包括从编写源代码到生成可执行文件的一系列步骤。C与文件无关&#xff0c;文件只是容纳运行内容的载体&#xff0c;需要对文件以目标系统的规则编译后&#xff0c;才能在目标系统中运行。 …

java算法递归算法练习-数组之和

简单找个题目练习一下递归算法&#xff0c;输入一组数组&#xff0c;使用递归的方法计算数组之和。其实这个题目&#xff0c;用循环的方式也很简单就能解决&#xff0c;直接循环遍历一下相加就行了&#xff0c;但是我们用来练习一下递归。 先来找基线条件和递归条件 基线条件…

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…

matplotLib在图中标出最后一个点的值

import matplotlib.pyplot as plt import numpy as np# 生成100个随机数据 data np.random.rand(100)# 绘制数据 plt.plot(data, labelData Points)# 获取最后一个数据点的位置和值 last_x len(data) - 1 last_y data[-1]# 用红圈标出最后一个点 plt.plot(last_x, last_y, r…

STM32-寄存器DMA配置指南

配置步骤 在STM32F0xx中文参考手册中的DMA部分在开头给出了配置步骤 每个通道都可以在外设寄存器固定地址和存储器地址之间执行 DMA 传输。DMA 传输的数据 量是可编程的&#xff0c;最大达到 65535。每次传输之后相应的计数寄存器都做一次递减操作&#xff0c;直到 计数为&am…

jdk环境、tomcat环境

回顾复习 安装nodejs&#xff0c;和jdk一样的软件运行环境 yum -y list installed|grep epel #是否安装epel yum -y install nodejs node -v #查看版本号 下载对应的nodejs软件npm yum -y install npm npm -v #查 npm set config ....淘宝镜像 安装vue/cli…

[ACTF2020 新生赛]BackupFile1

打开题目 利用disearch扫描&#xff0c;发现源文件index.php.bak 下载下来 打开文件 代码审计&#xff0c;翻译一下 翻译代码为&#xff1a; <?php include_once "flag.php"; //这一行使用 include_once 函数来包含&#xff08;或插入&#xff09;另一个 PHP …

Win11系统文件资源管理器鼠标右键卡顿解决方法

引用链接&#xff1a; Windows 11文件资源管理器崩溃怎么解决&#xff1f;看看这7个解决办法&#xff01;

Redis的集群 高可用

文章目录 Redis基本概念主从复制哨兵模式故障切换集群 Redis基本概念 Redis集群三种模式 主从复制&#xff1a;奇数台 3&#xff1a; 一主两从 哨兵模式&#xff1a;3&#xff1a; 1主两从 cluster&#xff1a;6 主从复制&#xff1a;和mysql的主从复制类似&#xff0c;主…

C++ string类

目录 为什么要有string类&#xff1f; auto和范围for 1. auto 2. 范围for 一. 标准库中string类的简单使用 二. string类的常用接口说明 1. string类对象的常见构造 2. string类对象的容量操作 3. string类对象的访问及遍历操作 4. string类对象的修改与查找操作 插入…