霍尔传感器是在与磁场接触时在其输出端产生电信号的传感器。传感器输出端电信号的模拟值是磁场强度的函数。如今,霍尔传感器无处不在,它们出于不同的原因被用于从手机到开关的各种设备中,用于测量汽车和其他汽车行业产品中的速度、位置和距离。霍尔传感器的多功能性使其成为制造商和电气工程师的必备品,这就是为什么今天,我将向我们展示如何在基于 Raspberry Pi 的项目中使用霍尔传感器。
必需组件
构建此项目需要以下组件/部件;
树莓派 2 或 3
SD 卡(最低 8GB)
霍尔效应传感器
跳线
面包板
局域网电缆
电源
可以使用的一些可选部件包括:
监控
键盘和鼠标
高清连接线
无线网络加密狗
本教程将基于 Raspbian stretch OS,因此要像往常一样进行,我假设您熟悉使用 Raspbian stretch OS 设置 Raspberry Pi,并且您知道如何使用 putty 等终端软件 SSH 进入 Raspberry Pi。如果您对此有任何问题,本网站上有大量的树莓派教程可以提供帮助。
对于那些将首次安装Raspbian stretch OS的人来说,我发现的一个问题,大多数人都有,是通过ssh进入Raspberry Pi。应该注意的是,ssh 最初在操作系统上是禁用的,您需要一个显示器来启用它,或者在树莓派的配置选项下,或者您使用 Windows 或 Linux 计算机创建一个名为 ssh 的空白文件并将空白文件复制到 SD 卡的根目录。您需要将SD推车插入计算机的SDd卡插槽才能复制到其中。
使用第二种方法更适合那些在无头模式下运行 pi 的人。准备好所有零件后,我们就可以继续构建了。
威廉希尔官方网站 图:
要将霍尔效应传感器与树莓派一起使用,请按照以下原理图连接组件。
本教程中使用的霍尔传感器可以在输出端提供模拟和数字值。但为了简化教程,我决定使用数字值,因为使用模拟输出需要将ADC连接到Raspberry Pi。
Python 代码和工作说明:
这个霍尔传感器项目的 Python 代码非常简单,我们需要做的就是读取霍尔传感器的输出,并相应地打开或关闭 LED。如果检测到磁铁,则 LED 将打开,否则将关闭。
打开树莓派的电源并使用腻子(如果像我一样以无头模式连接)将其连接到其中。像往常一样,我的大多数项目都在主目录中创建了一个目录,其中存储了有关每个项目的所有内容,因此对于这个项目,我们将创建一个名为 hall 的目录。请注意,这只是保持井井有条的个人偏好。
使用创建目录;
mkdir hallsensor
将目录更改为刚刚创建的新目录,然后打开编辑器以使用创建python脚本;
cd hallsensor
其次;
nano hallsensorcode.py
编辑器打开后,我们输入项目代码。我将对代码进行简要分解以显示关键概念,之后将提供完整的 python 代码。
我们通过导入 RPI 开始代码。GPIO 库,允许我们编写 python 脚本与 Raspberry pi GPIO 引脚进行交互。
import RPi.GPIO as gpio
接下来,我们为要使用的 RPI 的 GPIO 设置编号配置,并禁用 GPIO 警告以允许代码的自由流执行。
gpio.setmode(gpio.BCM)
gpio.setwarnings(False)
然后,我们根据所选的 BCM 编号设置声明 LED 和霍尔传感器的数字输出连接到的GPIO 引脚。
hallpin = 2
ledpin = 3
接下来,我们将GPIO 引脚设置为输入或输出。连接 LED 的引脚设置为输出,霍尔传感器连接的引脚设置为输入。
gpio.setup( hallpin, gpio.IN)
gpio.setup(ledpin, gpio.OUT)
完成后,我们编写代码的主要部分,这是一个while循环,它不断评估霍尔传感器的输出,如果检测到磁铁,则打开LED,并在未检测到磁铁时关闭LED。
while True:
if(gpio.input(hallpin) == False):
gpio.output(ledpin, True)
print("magnet detected")
else:
gpio.output(ledpin, False)
print("magnetic field not detected")
带有演示视频的完整python代码在项目结束时给出。
复制并保存代码,并在使用中键入后退出编辑器;
按 CTRL + X后跟y。
保存后,再次检查您的连接并使用以下命令运行 python 脚本;
sudo python hallsensorcode.py
脚本运行时,每当磁铁或任何磁性物体靠近霍尔传感器时,LED 就会亮起,如下图所示。
从智能家居的干簧开关到自行车的速度表,有几个超级酷的东西可以用本教程在基础构建。
import RPi.GPIO as gpio
gpio.setmode(gpio.BCM)
gpio.setwarnings(False)
hallpin = 2
ledpin = 3
gpio.setup( hallpin, gpio.IN)
gpio.setup(ledpin, gpio.OUT)
gpio.output(ledpin, False)
while True:
if(gpio.input(hallpin) == False):
gpio.output(ledpin, True)
print("magnet detected")
else:
gpio.output(ledpin, False)
print("magnetic field not detected")
全部0条评论
快来发表一下你的评论吧 !