使用GPIO Zero让GPIO变得更容易

这篇文章来源于DevicePlus.com英语网站的翻译稿。 

为儿童和年轻人开发的用于GPIO控制的简单Python库

如果您有过为Raspberry Pi的GPIO 引脚编写代码的经验,那么估计您已经使用过Python以及GPIO Zero模块了,因为这是最简单的入门方式。
但是模块的简单不意味着其缺乏灵活性和功能性。

GPIO Zero 完成所有工作细节的处理

GPIO Zero并不是之前Raspberry Pi上用于GPIO的Python模块的替代品,而是构建在那些模块之上。
GPIO使用RPi.GPIO来进行大多数操作,同时会混合使用PiGPIO和RPIO。

为什么不直接使用这些模块?

因为GPIO Zero已经为您完成了很多工作细节的处理,您在项目中只需输入几行代码就可以了。
来看一下这些代码:
pir = MotionSensor(4)
pir.when_motion = myFunction
第一个指令表示引脚4上有一个运动传感器,第二个指令设置了一个在传感器产生脉冲信号时运行的函数。真的很简单,对吧?

它是面向对象的

GPIO Zero通过为您可能连接到GPIO引脚的常见组件提供一系列配置好的类来进行工作。您可以使用这些类来创建与连接到GPIO引脚的特定组件相关联的对象。
您在刚开始最感兴趣的类应该是输入类和输出类,它们包括了一系列标准输入和输出组件。
除此之外还有其他多种类,比如用于将数据流式传输到其他组件的SPI类,以及您可以用来创建自己的类的基类和通用类。暂时不用为这些类的使用担心,目前您只要知道有这些类存在就可以了。

安装和导入GPIO Zero

GPIO Zero已经安装在了标准Raspbian映像上。如果您使用的是Raspbian Lite,或者更特别的Linux,那么您需要对其进行安装。
您可以使用以下指令将整个模块导入到Python中:
import gpiozero
然后,您可以通过在类前加上“gpiozero”来对其进行引用,如下所示:
button = gpiozero.Button(11)
greenLED = gpiozero.LED(13)
pir = gpiozero.MotionSensor(15)
只导入您正在使用的特定组件所需要的类会更方便一些:
from gpiozero import Button, LED, MotionSensor
这样,您就可以在不带前缀的情况下对其进行引用了,如下所示:
button = Button(11)
greenLED = LED(13)
pir = MotionSensor(15)
如此一来,您的代码就不会因为冗余信息而变得杂乱无章,从而变得更具有可读性。

使用GPIO Zero,通过按下按钮播放声音

让我们通过将按钮连接到GPIO引脚来尝试在压电蜂鸣器上播放一系列声音,感受一下GPIO Zero的使用有多么简单。
为此,您将需要:

一个带电源的Raspberry Pi以及一个安装了Raspbian的SD卡 raspberry pi
一个面包板 breadboard
一个GPIO扩展板 gpio extension

您还需要一个压电蜂鸣器下推式开关、几根跨接电缆以及某种Raspberry Pi的输入设备,例如SSH连接或者USB键盘和鼠标。准备好了吗?让我们开始吧!

连接压电蜂鸣器

如果您的GPIO扩展板尚未连接到Raspberry Pi和面包板,请将它们连接在一起。然后将接地引脚连接到负电源轨。
您的压电蜂鸣器应该有一根红线和一根黑线。红线连接到来自GPIO引脚的正电压,黑线接地。

我使用跨接电缆将蜂鸣器连接到面包板,您也可以直接将其插入。将蜂鸣器的黑色导线连接到负电源轨,红色导线连接到面包板中间的某处。
现在,将面包板的这一排连接到GPIO引脚。我使用的是引脚13。

让这个小器件尖叫起来

为此,需要打开Python解释器。输入:
python3
现在,我们需要为压电蜂鸣器导入一个类,并使用它来创建一个对象。实际上有两个类:Buzzer,只发出简单的哔哔声;以及TonalBuzzer,可以让您改变音调。
我们将要播放几种不同的音调,因此需要导入TonalBuzzer并将其设置为引脚13。
from gpiozero import TonalBuzzer
piezo = TonalBuzzer(13)
如果所有连接都正确,当您输入以下内容时将会发出尖锐的声音:
piezo.play(‘A4’)
并且在您停止程序之前将会持续下去,停止程序的代码为:
piezo.stop()
您也可以播放其他音调的声音!请尝试以下指令:
piezo.play(‘C4’)
piezo.play(‘D4’)
piezo.play(‘E4’)

编写播放一系列声音的程序

现在让我们把所有的指令放入同一个函数中,从而实现以不同的音调发出哔哔声。我们将在一开始从time模块中导入sleep函数,这样就可以避免播放过快而错过了某个声音。
from time import sleep
现在让我们来定义一个简单的函数,该函数的功能是播放特定音调的蜂鸣声一秒钟。请记住Python对缩进很敏感。
def playTone(pitch):
piezo.play(pitch)
sleep(1)
piezo.stop()
再次按回车键,让Python知道您已经完成了函数的编写。检查一下是否工作正常也是个不错的主意。
playTone(‘A4’)
playTone(‘C4’)
每个指令运行后应会各自发出不同音调的哔哔声。如果不是的话,请检查输入的内容是否正确。
现在我们可以定义另外一个便捷的函数,该函数的功能是以不同的音调播放三次哔哔声。
def playTones():
playTone(‘A4’)
playTone(‘D4’)
playTone(‘E4’)
再次按下回车键完成该函数,然后检查是否工作正常。
playTones()
一切正常吗?太棒了。

与按钮连接

剩下的工作就是连接一个按钮并进行编程,以使其能够控制声音的播放。
将按钮放置在面包板上,并跨越中心沟槽。
然后使用跨接电缆将按钮的一个角连接到负电源轨,对角线相对的角连接到GPIO引脚,我使用的是引脚12。
现在,我们导入GPIO Zero中的Button类,并将其设置为引脚12:
from gpiozero import Button
button = Button(12)
接下来要做的就是使程序在按下按钮时运行我们的函数。
button.when_pressed = playTones
现在按下按钮。如果所有操作正确,此时将会播放声音。
GPIO Zero 让一切变得简单
是不是很简单?我们只用了三行代码就配置了按钮。
虽然表面看上去很简单,但其实其中涉及了很多内容:上拉和下拉电阻以及高电平有效和低电平有效信号。不同的音调是使用一种被称为“脉冲宽度调制”的技术生成的,其中引脚通过在启动和关闭之间快速转换来模仿模拟电压。GPIO Zero已经完成了所有这些工作的预配置。
当您掌握了基本要领后,就可以开始尝试进行所有这些内容了。
与此同时,敬请享受通过GPIO Zero构建和学习项目的乐趣吧!

DevicePlus 编辑团队
DevicePlus 编辑团队
设备升级版适用于所有热爱电子和机电一体化的人。

Related post

  1. 红外线

    通过Raspberry Pi和Python使用PIR运动传感器

  2. raspberry pi drone

    DIYRaspberry Pi无人机第二部分–Naza-M Lite指南

  3. raspberry pi

    如何将Raspberry Pi用作Web服务器?

  4. Bad active CPU cooling

    如何用构建Raspberry Pi驱动的NAS服务器—附加收获:HURRiCANE冷却系统!

  5. No-IP

    如何使用Raspberry Pi搭建VPN服务器

  6. sense hat

    用于Raspberry Pi的Sense HAT附加板——六种传感器

  7. 基于Raspberry Pi的DIY面部识别功能

  8. Raspberry Pi GPIO引脚介绍

  9. DIY技巧:如何设置您的Raspberry Pi

TECH INFO

基础知识

  • SiC功率元器件
  • Si功率元器件
  • 热设计
  • 仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


PICK UP!

  1. 模块配置
  2. arduino explorer rover
  3. ROHM开发出业界先进的第4代低导通电阻SiC MOSFET:支持xEV/EV主机逆变器和电池提高电压
  4. “第三代 行驶中无线供电轮毂电机”开发成功:超小型SiC模块 助力实现无需担心充电的EV
  5. 以纳米级输出电容实现稳定控制的Nano Cap™技术:无需输出电容器的线性稳压器
  6. 作为车载用二次电源而开发的同步整流降压型DC/DC转换器 : 车载设备中二次电源的优点
  7. 刘铭
PAGE TOP