这两个传感器实验比较简单,也都属于力传感器,就放一起做了。
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。我手头没有磁铁,找了块机械硬盘,机械硬盘里面有磁铁,可以检测到磁场。同学们可以试试。