基于Raspberry Pi Pico的GPIO引脚使用运动传感器
通过设置运动传感器来学习输入和输出的基础知识。
本文引用地址:http://www.amcfsurvey.com/article/202104/424991.htmRaspberry Pi Pico具有许多GPIO引脚,我们只需在代码中配置这些引脚即可将其用作输入或输出。在本指南中,我们将学习如何使用输入(在这种情况下为传感器)和以LED形式的输出进行工作。在本指南的最后,我们将在16行MicroPython中提供一个简单的运动检测器。
在本指南中,我们将学习如何使用Raspberry Pi Pico的GPIO引脚作为数字输入和输出,这些输入和输出使用高电平和低电平作为一种简单的控制方法。
建立
该项目的电路增加了一个额外的组件,即一种被动红外(PIR)传感器,该传感器通常用于家庭安全系统中以检测运动。在此项目中,它将执行相同的功能,并且当传感器报告运动时,我们的代码将触发一个LED亮起。
将传感器添加到项目中需要:
• 半尺寸面包板
• LED灯
• 330欧姆电阻
• PIR传感器
• 3 x母对公跳线
1.将Raspberry Pi Pico插入面包板,使其位于中央通道上方。确保Micro USB端口位于面包板的一端。
2.将一个330 Ohm的电阻器插入面包板,其一脚应与GND串联,该脚为PIN38。另一脚应插入面包板的-导轨。这为我们提供了GND导轨,其中该导轨中的所有引脚都连接到GND。
3. 插入一个LED,将长脚(阳极)插入面包板的针脚34,并将短脚插入GND导轨。现在已建立电路。
PIR传感器具有三个引脚。VCC,OUT和GND。VCC引脚用于从Raspberry Pi Pico提供3.3V电源。
4.使用跳线将VCC从PIR连接到电阻旁边的3.3V引脚(引脚37)。
5.使用另一根跳线将PIR的OUT引脚连接到Pico的引脚21。
6.将PIR的GND引脚连接到面包板的GND导轨。
7.建立电路后,使用微型USB导线将Raspberry Pi Pico连接到计算机。打开Thonny应用程序。
现在,我们开始对项目进行编码,并在“入门”项目中使用的代码的基础上,包括输入,PIR传感器和条件测试,以检查传感器是否已触发。
1.从计算机库中导入Pin类,然后导入utime。这些库使我们能够分别与GPIO通信并控制我们的项目进度。
from machine import Pin
import utime
2.创建一个对象“ led”,该对象用于在物理GPIO引脚和我们的代码之间创建链接。在这种情况下,它将设置GPIO 28(映射到板上的物理引脚34)作为输出引脚,其中电流将从Raspberry Pi Pico GPIO流入LED。然后,我们使用该对象指示GPIO引脚拉低。换句话说,这将确保在项目开始时GPIO引脚被关闭。
led = Pin(28, Pin.OUT)
3.创建另一个对象“ pir”。此对象用于在我们的代码和GPIO引脚之间创建连接,该GPIO引脚用于从PIR进行OUT连接。默认情况下,PIR传感器OUT被拉高,并且当检测到移动时,PIR将OUT引脚拉低。为确保传感器正常工作,我们将引脚设置为输入,然后将GPIO引脚拉高。
pir = Pin(16, Pin.IN, Pin.PULL_UP)
4.确保在项目开始时LED熄灭,然后等待三秒钟再继续操作。这两行确保我们不会从LED看到“错误触发”,并给传感器留出一些时间来稳定使用。
led.low()
utime.sleep(3)
5.在while True循环(无尽循环)中,使用打印功能来打印用于PIR传感器的GPIO引脚的当前值。如果没有移动,则返回1,如果没有,则返回0。
while True:
print(pir.value())
6.创建一个条件测试,检查存储在pir.value中的值。如果值为0,则检测到运动,然后将消息打印到Python Shell。然后打开LED(高电平)并暂停五秒钟,同时保持LED点亮。
if pir.value() == 0:
print(“LED On”)
led.high()
utime.sleep(5)
7.没有检测到运动时,将激活条件测试的最后一部分。使用Else条件将消息打印到Python Shell,然后添加一行以关闭LED(低电平),然后暂停0.2秒。然后重复循环,并再次运行条件测试。
else:
print(“Waiting for movement”)
led.low()
utime.sleep(0.2)
8.单击保存,然后选择将代码保存到MicroPython设备(Raspberry Pi Pico)。将文件命名为PIR.py,然后单击“确定”进行保存。您的代码应如下所示。
from machine import Pin
import utime
led = Pin(28, Pin.OUT)
pir = Pin(16, Pin.IN, Pin.PULL_UP)
led.low()
utime.sleep(3)
while True:
print(pir.value())
if pir.value() == 0:
print(“LED On”)
led.high()
utime.sleep(5)
else:
print(“Waiting for movement”)
led.low()
utime.sleep(0.2)
9.要运行代码,请单击绿色播放/箭头按钮,然后Python Shell将更新为“等待移动”和“ LED亮”。PIR传感器非常灵敏,起初您可能会看到一些误触发,但传感器会稳定下来。
评论