树莓派官网学习记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派官网学习记录相关的知识,希望对你有一定的参考价值。

树莓派官网学习记录

和GPIO Zero 一起开始

我们将做的

树莓派一侧的排针是称为通用输入输出引脚(GPIO)

这些引脚允许树莓派去控制现实中的东西。你能连接元件到这些引脚上:输出设备像能任意被开关的LED(发光二极管);或者是输入设备像能用作触发事件的一个按钮或者传感器,比如当一个按钮被按下的时候,点亮一只LED。

通过使用GPIO Zero 库,你能很容易的控制树莓派的GPIO引脚。

我们将学习的

通过完成这个资源你将学到:

  1. 如何将LED和按钮连接到树莓派的GPIO上
  2. 如何通过GPIO Zero控制GPIO引脚的输出
  3. 如何通过GPIO Zero读取GPIO引脚的输入

我们需要的

硬件:

除了带SD卡的树莓派和惯例的外围设备,还需要一块无焊面包板(Solderless breadboard)、两根公对母杜邦线、一个按钮、一个LED

软件:

为了准备这个资源,你将需要一个最新的SD卡镜像:

首先,更新系统包列表通过在LXTerminal或者从命令行中键入下面的命令:

sudo apt-get update

接着,通过命令升级所有的已安装包到最新版本:

sudo apt-get upgrade

通常来说,定期的操作这些能保持你的安装为最新的,以至于它将等价于在raspberrypi.org/downloads.获取到的最新发行版镜像。

但是,存在偶然的更改加入基础的Raspbian 镜像需要手动介入,例如一个最近提出的包。存在一个不能安装的升级,对于这个命令而言仅仅升级的是你已经安装的包。

升级内核和框架

内核和框架是作为一个Debian 包被安装的,并且通过上面的步骤也将得到升级。这些包会在广泛的测试之后经常得到升级。

运行空间

当执行sudo apt-get upgrade ,它将告诉我们将要下载多少数据和将占用SD卡上多大的空间。它可以用df –h来核对使你有足够的空闲空间,当不幸的apt将不会为你做这个事。也要注意下载好的包文件(扩展名为.deb)被存在了/var/cache/apt/archives 目录下了。你可以用sudo apt-get clean删除它们来释放空间。

你还需要安装下面额外的软件:

GPIO Zero

为了安装你需要的软件,在LXTerminal中执行下面的命令:

sudo apt-get install python3-pip python3-w1thermsensor python3-spidev

sudo pip-3.2 install gpiozero

开始

1.GPIO引脚

树莓派有40个引脚,并且这些引脚提供了不同的功能。

如果你有一个RasPIO pin label,它能帮助你定义每一个引脚用来做什么。确保你的铜孔朝向usb口,正面向外。

如果你没有RasPIO pin label,这个指南将帮助你定义引脚号码:

技术分享

你将看到引脚被标为3V3, 5V, GND 和 GP2, GP3, 以此类推

3V3?

3.3 v?

接到这个引脚的东西总能得到3.3v电压

5V?

5 v

接到这个引脚的东西总能得到5v电压

GND?

0v用来完成一个电路

GP2?

GPIO 引脚 2

这些引脚是通用的可以配置成输入或者输出

ID_SC/ID_SD/DNC?

特殊用途引脚

????

? ?

2.点亮一个LED

尝试连接一个LED和一个电阻串联到树莓派的3V3和GND引脚

技术分享

这个LED将会被点亮。它将是常亮的,因为它被连接到了一个3V3的引脚上。

现在尝试把它从3V3移动到GPIO引脚17上:

技术分享

这个LED现在应该是不亮的,但是现在它是在一个GPIO引脚上,因此能被代码控制。

3.开关一个LED

GPIO Zero 是一个新的提供给日常GPIO元件简单接口的Python 库。

(1). 从主菜单中打开Python 3;

(2). 你能开关一个LED通过直接键入命令到Python 解释器窗口(也叫Python shell)。首先让我们导入这个GPIO Zero 库。你也需要告诉树莓派你正在使用的是哪一个GPIO 引脚 –在这个例子里是用的引脚17。接下来是chevrons type:

  1. from gpiozero import LED
  2. led = LED(17)

    ?

在键盘上按下回车键。

(3). 让LED打开,键入下面语句并且按回车:

  1. led.on()

?

(4). 让LED关闭,你可以键入:

  1. led.off()

?

4.完成一个LED

通过time库和一个小循环,你可以是LED闪烁。

(1). 创建一个新文件通过点击File > New file

(2). 保存一个新文件通过点击File > Save

(3). 把文件保存为gpio_led.py

(4). 键入下面的代码来开始:

  1. from gpiozero import LED
  2. from time import sleep
  3. ?
  4. led = LED(17)
  5. ?
  6. while True:
  7. ????led.on()
  8. ????sleep(1)
  9. ????led.off()
  10. ????sleep(1)

    ?

(5). 使用Ctrl + S 保存 并且通过F5执行代码

(6). LED应该开始闪烁了,按键盘上的Ctrl + C来退出工程

5. 使用按钮来获得输入

????现在你能控制一个输出元件-LED了,让我们连接并控制一个输入元件-按钮

????(1). 连接一个按钮到另外一个GND引脚和GPIO引脚2 如下图

????技术分享

(2). 创建一个新文件通过点击File > New file

(3). 保存一个新文件通过点击File > Save

(4). 把文件保存为gpio_button.py

(5). 这一次我们需要Button 类,去告诉树莓派按钮在引脚2上。在你的新文件中键入下面的代码:

  1. from gpiozero import Button
  2. button = Button(2)

?

(6). 现在你能得到一个工程去做一些事,当按钮被按下的时候。添加 下面的代码:

  1. button.wait_for_press()
  2. print(‘You pushed me‘)

?

(7). 使用Ctrl + S 保存 并且通过F5执行代码

(8). 按下按钮文本出现

6. 手动控制LED

????你现在可以结合写到目前位置的两个项目来通过按钮控制LED。

(1). 创建一个新文件通过点击File > New file

(2). 保存一个新文件通过点击File > Save

(3). 把文件保存为gpio_control.py

(4). 键入下面的代码:

  1. from gpiozero import LED, Button
  2. from time import sleep
  3. ?
  4. led = LED(17)
  5. button = Button(2)
  6. ?
  7. button.wait_for_press()
  8. led.on()
  9. sleep(3)
  10. led.off()

?

(5). 保存和运行你的项目。当你按下按钮LED应该亮3秒钟

7. 制作一个开关

制作一个开关,按下和释放按钮将点亮LED,再一次按下和释放按钮将熄灭LED。

(1). 修改你的代码让它看起来想这样。你正在使用一个称为active的标志去记录LED的状态。命令行active = not active 将标志在True和False间切换:

  1. from gpiozero import LED, Button
  2. from time import sleep
  3. ?
  4. led = LED(17)
  5. button = Button(2)
  6. active = False
  7. ?
  8. while True:
  9. ????if active == False:
  10. ????????led.off()
  11. ????else:
  12. ????????led.on()
  13. ????button.wait_for_press()
  14. ????button.wait_for_release()
  15. ????active = not active

?

如果你仅仅想在按钮被一直按下时打开LED这样做是很棒的。通过GPIO Zero库,这很简单。

(1). Button类中有两种方法被叫做when_pressed 和 when_release。他们不会阻塞工程的流程,所以如果他们放在循环里,工程将不确定地循环。

(2). 修改你的代码像这样:

  1. from gpiozero import LED, Button
  2. from signal import pause
  3. ?
  4. led = LED(17)
  5. button = Button(2)
  6. ?
  7. button.when_pressed = led.on
  8. button.when_released = led.off
  9. ?
  10. pause()

?

(3). 保存和运行工程。现在当你按住按钮,LED将点亮;当你释放按钮它将熄灭。

X.接下来是什么呢?

在GPIO Zero库中有很多其他的东西可以尝试。你可以看一看这里的文档:

https://gpiozero.readthedocs.org/en/v1.1.0/

尝试一下控制其他的元件,例如蜂鸣器,RGB LED,电机或者是机器人。

以上是关于树莓派官网学习记录的主要内容,如果未能解决你的问题,请参考以下文章

树莓派基础

使用树莓派打造一个私人NAS+博客(1)——网络篇

树莓派系统安装

串口方式登录树莓派

(15)树莓派系统安装和备份

树莓派(raspberrypi)常用镜像高速下载