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

devtools/2024/10/22 4:23:08/

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

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.ppmy.cn/devtools/87670.html

相关文章

Leaflet封装以及扩展自定义插件教程

从事leaflet开发的同学或多或少应该都接触过leaflet的插件,因为leaflet的框架理念是只封装最基础最核心的部分,因此优点在于代码体积非常小,使用起来简单轻便。同时缺点就是功能组件没那么丰富,有很多开发需求都必须借助第三方插件来完成。因此你可以看到leaflet的插件市场…

如何将整个运行环境打包成docker

场景 某个项目,用的tomcatrediszookeeper,然后这个项目已经产品化,很多地方都需要部署,并且有很多有细微差别的版本。 然后我这边是需要部署测试环境,一台机可能会部署好几个。 按照传统部署方式,要好几个…

(39)智能电池

文章目录 前言 1 通过任务规划器进行设置 2 补充信息 3 限制条件 4 参数说明 前言 虽然还不是很普遍,但智能电池更容易从飞行器上安装和拆卸,并且能够提供更多关于电池状态的信息,包括容量、单个电池电压、温度等。 ArduPilot 支持几种…

Java面试八股之@Qualifier的作用

Qualifier的作用 Qualifier 是 Spring 框架中的一个非常有用的注解,它主要用于解决在依赖注入过程中出现的歧义问题。当 Spring 容器中有多个相同类型的 Bean 时,Qualifier 可以帮助指明应该使用哪一个具体的 Bean 进行注入。 Qualifier 的作用&#x…

解码簇之魂:sklearn中分层特征聚类标签的解释技术

解码簇之魂:sklearn中分层特征聚类标签的解释技术 在机器学习中,聚类是一种无监督学习方法,用于将数据集中的样本划分为若干个组或“簇”,使得同一组内的样本相似度高,而不同组间的样本相似度低。聚类结果的解释对于理…

redis的集群(高可用)

redis集群的三种模式: 主从复制 奇数 三台 一主两从 哨兵模式 3 一主两从 cluster集群 六台 主从复制:和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器,从不能更新到主,也…

使用GenAI做Discord舆情分析对游戏运营的帮助

前言 关于 Discord Discord 在游戏行业扮演着重要角色,作为一个专为游戏玩家设计的社交平台。它提供了实时语音、文字和视频通信功能,让玩家可以轻松组队、讨论策略和分享游戏体验。游戏开发商和发行商也利用 Discord 建立官方社区,与玩家互…

鸿蒙开发所有装饰器

Builder:用于创建自定义构建函数,允许开发者将重复使用的UI元素抽象成一个方法,并在build方法里调用。这种轻量级的UI元素复用机制有助于减少代码冗余,提升开发效率。BuilderParam:该装饰器用于引用Builder函数&#x…