使用 Python 在 Raspberry Pi 上构建物理项目
Raspberry Pi 是一种低成本的信用卡大小的计算机,由 Raspberry Pi 基金会在英国开发,用于支持教育机构的基础计算机科学教学。自那时以来,它已经在制造商、爱好者和专业人士中得到了普及,被用于各种项目。
Python 是一种流行的高级编程语言,易于学习和使用,对于想要构建物理项目的初学者来说是一个理想的选择。它有各种库和模块可供使用。
使用 Raspberry Pi 和 Python,您可以构建与物理世界互动的项目,例如控制 LED、读取传感器,甚至创建自定义机器人。您也可以使用 Raspberry Pi 和 Python 创建更高级的项目,例如家庭自动化系统或天气站。
Raspberry pi 的概述
Raspberry Pi 是一种低成本的信用卡大小计算机,由 Raspberry Pi 基金会在英国开发,旨在推广学校的基础计算机科学教学。它已经成为制造商、爱好者和专业人士用于各种项目的热门选择。
- 硬件: Raspberry Pi 有多个型号可供选择,具有不同的规格,可适用于各种项目。最新的型号 Raspberry Pi 4 和 Raspberry Pi 400 配备强大的处理器、高达 8GB 的内存和对 4K 显示器的支持,非常适用于需求较高的应用。
- 操作系统: Raspberry Pi 运行各种操作系统,包括基于 Debian Linux 和其他几个 Linux 发行版的 Raspberry Pi OS。这为构建项目提供了稳定和良好支持的平台,并可访问大型开源软件存储库。
- GPIO 引脚: Raspberry Pi 上的 GPIO 引脚可以连接外部硬件,例如传感器、执行器和显示器,到 Raspberry Pi。这使得可以构建各种物理计算项目,从简单的项目如 LED 控制器到更复杂的项目如机器人或天气站。
- 多媒体功能: Raspberry Pi 具有内置的视频和音频输出支持,非常适用于需要多媒体技能和能力的活动,如集成媒体中心、游戏机或音乐播放器。
- 网络: 庞大而活跃的 Raspberry Pi 用户和开发者社区提供了设备构建项目的支持、资源和指南…该社区为任何有兴趣使用 Raspberry Pi 构建项目的人提供了丰富的信息、知识和灵感。
- 易于访问性: Raspberry Pi 设计为适用于各年龄段和技能水平的人,非常适用于学习计算机、编程和物理计算。 Raspberry Pi 基金会提供一系列教育资源和计划,鼓励学校教授计算机科学。
Raspberry vs Andrino
Arduino 是一种基于微控制器的平台,广泛用于构建物理计算项目。微控制器是一种小型计算机,可控制外部硬件并读取传感器。
Arduino 平台使构建与物理世界互动的项目变得容易,从简单的项目,如 LED 控制器,到更复杂的项目,如机器人或气象站。
Raspberry Pi 和 Arduino 都是流行的构建物理计算项目的平台,但它们具有不同的优点和用途。了解这些结构的主要区别可以帮助您决定哪一种对于您的任务是最好的选择。
以下是Raspberry Pi和Arduino之间的一些重要区别:
- 计算能力: Raspberry Pi是一台完整的计算机,可用于许多项目,从简单的媒体中心到更复杂的家庭自动化设备等。另一方面,Arduino是一个微控制器,是设计用来控制外部硬件和读取传感器的简单设备。Arduino比Raspberry Pi更简单,学习曲线更小,但不如Raspberry Pi强大,它运行各种操作系统……
- GPIO引脚: Raspberry Pi和Arduino都有GPIO引脚,可用于连接外部硬件,如传感器和执行器,到设备上。Raspberry Pi有40个GPIO引脚,而Arduino有不同数量的GPIO引脚,具体取决于型号。
- 编程: Raspberry Pi运行各种编程语言,包括Python,由于其简单性和易用性,Python是许多Raspberry Pi项目的首选语言。Arduino使用基于C / C ++的编程语言,并具有比Raspberry Pi更简单的编程环境。
- 成本: Raspberry Pi比Arduino更昂贵,最新型号价格约为35美元。Arduino则更便宜,有些型号的起价约为10美元。
- 社区: Raspberry Pi和Arduino都拥有庞大和活跃的用户和开发者社区,提供支持、资源和建设项目的教程。然而,由于Raspberry Pi作为通用计算机的普及程度更高,Raspberry Pi社区通常更大更活跃。
Raspberry Pi设置
设置Raspberry Pi是一个简单直接的过程,任何人都可以完成,无论他们的技术背景或经验如何。在本文中,我们将提供一个逐步指南,帮助您设置Raspberry Pi并开始第一个项目。
所需材料:
- Raspberry Pi
- MicroSD卡(最小8GB)
- 电源
- HDMI电缆
- 键盘
- 鼠标
- 监视器
步骤1:下载操作系统。
设置Raspberry Pi的第一步是下载您想要的操作系统(OS)。许多操作系统,包括Raspbian、Ubuntu和其他操作系统都支持Raspberry Pi。
这篇文章将使用可靠的Raspberry Pi操作系统Raspbian进行说明。您可以从可靠的Raspberry Pi网站获取最新版本的Raspbian。
步骤2:将操作系统写入MicroSD卡。
下载操作系统后,将其写入MicroSD卡中。您可以使用诸如Etcher之类的工具来完成此操作。Etcher是一款免费开源工具,可轻松将操作系统写入SD卡。请认真遵循Etcher的说明,在MicroSD卡上写入操作系统。
步骤3:使用MicroSD卡激活Raspberry Pi。
一旦您将操作系统写入MicroSD卡上,请将MicroSD卡插入Raspberry Pi中。MicroSD卡插槽在Raspberry Pi的底部,您需要将卡插到插槽中,直到它卡入插槽。
步骤4:连接外围设备
接下来,您需要将外围设备连接到Raspberry Pi上。这包括电源、HDMI电缆、键盘、鼠标和显示器。将HDMI电缆连接到Raspberry Pi和显示器上的HDMI端口,并将键盘和鼠标连接到Raspberry Pi上的USB端口。
步骤5:打开Raspberry Pi电源
最后,您需要插入电源来开启Raspberry Pi。一旦Raspberry Pi启动,您应该会在监视器上看到Raspbian桌面。
步骤6:配置Raspberry Pi
最后一步是根据您的偏好配置树莓派。这包括设置无线网络、键盘布局和其他设置。您可以通过点击桌面左上角的树莓派图标,选择“首选项”,然后选择“树莓派配置”来访问配置设置。
树莓派所需的硬件
设置树莓派所需的硬件是整个过程的关键组件,将决定您的树莓派项目的能力。
- 树莓派: 首先,您需要选择要使用的树莓派型号。有几种不同的型号可供选择,包括树莓派3型B、树莓派4型B等,每个型号都有不同的规格和能力。
- MicroSD 卡: 接下来,您需要一张MicroSD卡作为树莓派的主要存储设备。树莓派使用MicroSD卡存储其操作系统和任何要保存的文件或数据。建议使用至少8GB的MicroSD卡,但最好使用至少16GB存储空间的卡片,以确保有足够的空间进行项目。
- 电源适配器: 为了给树莓派供电,您需要一个能提供至少2.5A电流的5V DC电源适配器。这将确保树莓派可靠运行,并具备足够的电力执行您要求的任务。
- HDMI 线: 您需要一条HDMI线将树莓派连接到监视器或电视。这将使您能够在屏幕上看到树莓派的输出,并使用键盘和鼠标与其交互。
- 键盘和鼠标: 您需要一个USB键盘和鼠标与树莓派进行交互。
- 显示器: 显示器或带有HDMI输入的电视也是必要的,以显示树莓派的输出。
可选硬件
此外,根据您的特定项目要求,您可能还需要以下硬件:
- 面包板: 如果您计划使用树莓派构建电子电路,则可能需要面包板来连接组件。
- 跳线线: 跳线线用于在面包板和树莓派之间建立连接。
- 传感器: 根据您的项目,您可能需要各种传感器,如温度传感器、光线传感器等。
- 执行器: 根据您的项目,您可能需要各种执行器,如电机、继电器等。
设置树莓派软件的过程
在树莓派上设置软件涉及到几个步骤,包括下载操作系统映像、将映像写入MicroSD卡和配置树莓派。
以下是流程的概述:
- 树莓派写入工具下载页面
树莓派写入工具是树莓派基金会通过提供的一个软件工具,可以轻松设置树莓派设备的操作系统。写入工具可以在树莓派下载页面上下载,您可以选择与您的计算机操作系统兼容的版本。
- 树莓派写入工具初始状态
下载树莓派写入工具后,在计算机上启动该应用程序。写入工具将呈现两个选项-“选择操作系统”和“选择SD卡”。首先选择“选择操作系统”选项。
根据您计算机的安全设置,您可能会收到来自Windows的警告消息,称树莓派写入工具是未识别的应用程序,可能有害。在这种情况下,您仍然可以通过单击“更多信息”选项,然后选择“仍然运行”来运行该工具。
- 选择SD卡
然后,Imager将显示一个可用操作系统列表,可以在您的树莓派设备上安装。选择Raspbian操作系统,并单击“选择SD卡”选项。这将提示您选择您将用作树莓派设备主存储的MicroSD卡。
- 写入
选择操作系统和SD卡后,单击“写入”按钮开始格式化SD卡并安装操作系统。此过程可能需要几分钟,但是一旦完成,您将看到一条消息,指示操作系统已经成功安装在SD卡上。
- 完成
最后,从电脑安全地拔出SD卡,您现在已经准备好将其连接到您的树莓派设备上了。现在我们可以成功启动树莓派并开始使用它。
通过NOOBS安装Raspbian
Raspberry Pi基金会还提供了一个替代Raspberry Pi Imager(名为“NOOBS”)的选项。NOOBS是一个软件包,包括多个可安装在树莓派上的操作系统,其中包括Raspbian。
要使用NOOBS,您首先需要从Raspberry Pi网站下载NOOBS软件包。该软件包包括一个ZIP文件,其中包含操作系统映像和NOOBS软件。
接下来,您需要将ZIP文件的内容解压缩到MicroSD卡中。卡应该至少有8GB的存储容量,尽管建议使用16GB或更多的卡。
将ZIP文件的内容复制到MicroSD卡后,将卡插入您的树莓派设备中,并连接到显示器,键盘和鼠标上。启动树莓派,您应该会看到NOOBS界面。
在NOOBS界面中,您可以选择要安装的操作系统(例如Raspbian),然后单击“安装”按钮开始安装过程。虽然安装过程需要一段时间,但是一旦完成,您的树莓派将安装了Raspbian,您可以开始使用它。
设置向导
Raspbian有一个设置过程,以协助您配置密码,设置语言环境,选择无线网络和更改首次启动时的操作设备。按照指示进行操作。
完成所有步骤后,请重新启动操作系统,这样您就可以在树莓派上开始进行Python编程了。
在树莓派上运行Python
要在树莓派上启动Python,请打开终端并在命令行中键入“python”。这将启动Python交互式shell,在此模式下,可以输入命令并实时查看结果。您可以在此模式下测试并调试您的代码,然后将其保存为Python脚本。
您还可以在文本编辑器(如Nano或IDLE )中编写和保存您的代码,并将其作为独立程序运行。为此,您需要创建一个带有代码的.py文件并将其保存到树莓派。
有三种方法可以在树莓派上运行Python:
- 使用Mu编辑器
- 使用SSH远程编辑
- 使用 Mu 编辑器创建 Python 项目目录
使用 Mu 编辑器
Mu 编辑器是一款适合树莓派初学者的简单的代码编辑器。不过,相比于 PyCharm 或 Visual Studio Code 等其他代码编辑器,它的功能较少。
要使用 Mu 编辑器在树莓派上运行 Python,你需要先在树莓派上安装 Mu 编辑器,可以在终端中运行以下命令进行安装:
csharp
sudo apt-get install mu-editor
安装完成后,你可以在终端中运行以下命令来启动 Mu 编辑器:
mu-editor
Mu 编辑器将会打开,并显示一个空空如也的编辑器窗口。你可以在这个窗口中开始编写 Python 代码。下面是一个简单的例子来帮助你入门:
python
print("Hello, Raspberry Pi!")
要运行你的 Python 代码,你可以按下 F5 键或点击工具栏上的“Run”按钮。代码的输出将会在终端窗口中显示。
一旦在树莓派上安装了 Mu 编辑器,你就可以使用它来运行 Python 代码。按照下面的步骤操作:
- 通过点击桌面快捷方式或导航到安装并运行应用程序的位置来打开 Mu 编辑器。
- 通过点击“文件”菜单并选择“新建”来创建一个新文件。
- 在编辑器中编写 Python 代码。请确保使用正确的缩进,因为这在 Python 中非常重要。
- 点击“文件”菜单并选择“保存”来保存文件。给文件一个描述性的名称,比如“led_blink.py”或“temperature_sensor.py”。
- 通过点击“运行”菜单并选择“运行模块”来运行代码。你也可以使用键盘快捷键“F5”。
代码的输出将在编辑器底部的 Python shell 中显示。如果你的代码有任何错误,也会在这里显示出来。
如果需要更改代码,请在编辑器中进行更改、保存文件并再次运行代码。
使用 SSH 远程编辑
可以使用安全外壳(SSH)协议远程编程和控制树莓派。这允许你在没有物理连接键盘、鼠标和显示器的情况下运行和调试代码、访问文件以及控制树莓派。
下面是通过 SSH 远程在树莓派上执行 Python 的方法:
在树莓派上授权 SSH: 在通过 SSH 连接到树莓派之前,必须在设备上启用 SSH。可以打开树莓派配置工具并导航到“Interfaces”选项卡来启用 SSH 选项。
ifconfig
这将显示你的树莓派上的网络接口信息,包括 eth0 或 wlan0 接口的 IP 地址。查找 inet 地址,即为树莓派的 IP 地址。
通过 SSH 连接树莓派: 你可以在 Windows 上使用 PuTTY,或在 macOS 和 Linux 上使用 Terminal 来通过 SSH 连接到树莓派。要连接,你需要知道树莓派的 IP 地址。你可以通过检查路由器的网络设置或使用 Advanced IP Scanner 工具来查找 IP 地址。
在终端或命令提示符中输入以下命令来连接树莓派:
kotlin
ssh pi@<IP_ADDRESS>
将
登录树莓派:一旦你获得了树莓派的IP地址,你可以使用PuTTY或命令行终端通过SSH连接到设备。由于树莓派的默认用户名是pi,你可能会被要求输入此终端用户的密码。Raspberry是预设密码。
在树莓派上运行Python:一旦你通过SSH登录到树莓派,你就可以使用Python解释器来运行代码。可以通过在终端上输入命令python3来启动Python解释器,并点击回车。Python代码可以通过按回车键输入并运行。你可以输入exit()或按下CTRL + D退出Python解释器。
要启动Python解释器,请在终端中输入以下命令:
python
现在可以在终端中运行Python代码,包括执行。
使用Mu编辑器创建python-projects目录
要使用Mu编辑器创建python-projects目录,请按照以下步骤操作:-
- 打开Mu编辑器,点击“文件”菜单。
- 从下拉菜单中选择“新建”然后选择“目录”。
- 将目录命名为“python-projects”。
- 通过单击“文件”菜单并选择“打开”来导航到新创建的目录。
- 从文件浏览器中选择“python-projects”目录。
现在在Mu编辑器文件浏览器中应该看到“python-projects”目录。你现在可以在此目录中保存你的Python项目。
将你的项目组织起来放在专门的目录中很重要。这样做会使你管理你的项目并与其他人共享你的代码变得更加容易。
在SSH上创建python-projects目录
要在SSH上创建python-projects目录,您需要使用终端应用程序,例如Mac上的终端或Windows上的Putty。首先,你需要使用IP地址、默认用户名(pi)和密码(raspberry)连接到你的树莓派。
连接后,可以使用以下命令创建python-projects目录:
bash
mkdir 〜/python-projects
在这种情况下,mkdir命令将创建一个指定名称为“python-projects”的目录。路径开头的“〜/”指定当前用户的主目录,在本例中为pi。
你可以使用ls命令验证目录是否已创建,该命令可以列出目录的内容:
bash
ls ~/python-projects
这应该返回一个空目录,因为我们刚刚创建了它,但尚未添加任何文件。
现在可以导航到python-projects目录并使用cd命令开始创建你的Python项目:
bash
cd ~/python-projects
与物理组件交互
要与电子元件、GPIO引脚、触摸按钮、LED、蜂鸣器和运动传感器等物理组件交互,需要使用树莓派的GPIO(通用输入/输出)引脚。GPIO引脚是数字输入和输出,允许树莓派与物理世界交互。
LED:要控制LED,可以将正极连接到GPIO引脚,将负极连接到地引脚。然后可以编写Python脚本来控制LED的状态,打开和关闭它。
LED有不同的形状和尺寸,可以通过孔上插入两个腿的穿孔LED或者直接安装到PCB上的表面安装LED。
下面是连接此电路必须遵循的步骤:-
- 使用母到公的跳线线连接树莓派的GND引脚到面包板的负侧。
- 将LED插入靠近彼此但不在同一排的面包板孔中。
- 将LED的长正腿插入右侧的空隙。
- 将LED的短负腿插入左侧面孔。
- 将330 电阻的一端插入与LED断裂的腿相同的面包板行的空洞中。
- 将该电阻的对面插入面包板的负电线。
- Raspberry Pi的GPIO4通过母对公跳线电缆连接到与LED正腿相同面包板行中的一个空洞中。
您可以使用下面的图表检查布线:
如果电线接线正确,则准备编写一些Python代码以使LED发光。创建一个名为led.py的python-initiatives目录中的电路报告来开始。
pi@raspberrypi:~/python-projects $ touch led.py
要使LED闪烁,创建一个LED类的实例,并调用其blink()函数。直到系统被终止,LED将继续在开和关之间交替变换。blink()方法的默认超时时间为一秒。
从gpiozero模块中启动LED,使用信号模块暂停:-
from gpiozero import LED
from signal import pause
该代码中,使用bottomColor命名将LED的实例分开。决定使用GPIO 4:
led = LED(4)
对led使用blink()过程:
led.blink()
在此之后添加一个对pause()的调用,以确保此程序不会关闭:
pause()
整个软件代码如下:
from gpiozero import LED
from signal import pause
led = LED(4)
led.blink()
pause()
保存并执行文件,以查看LED闪烁开关。
pi@raspberrypi:~/python-projects $ python3 led.py
灯光应该现在在每秒钟闪烁开关。当您在Mu中查看Python代码的操作完成后,请使用Ctrl+C或停止程序。
现在您已经了解如何使用树莓派上的Python操作LED。Python将用于提供来自树莓派的音频以供接下来的电路使用。
GPIO传感器:
GPIO引脚有两种主要类型:输入和输出。输入引脚从传感器和其他设备读取数字信号,而输出引脚用于传输数字信号以控制LED,电机和其他输出设备。
树莓派有40个GPIO引脚,编号为1到40。这些引脚分为两行,每行20个引脚。引脚基于它们在板子上的物理位置而标记,并且它们的功能可以通过软件进行配置。
树莓派有三种类型的GPIO引脚:
- 标准GPIO引脚: 这些是通用引脚,可以配置为输入或输出。它们标记为GPIOX,其中X是引脚号。
- 电源引脚: 这些引脚为连接到树莓派的组件提供电源。3.3V和5V引脚以该电压提供电源,而GND是地引脚。
- 特殊引脚: 这些引脚具有特殊功能,例如SPI,I2C和UART引脚,用于使用这些协议与其他设备进行通信。这些引脚具有专用功能,并且不能用作标准GPIO。
蜂鸣器:如果您想要打开和关闭蜂鸣器或播放不同的音调,可以将其连接到GPIO引脚,接地,然后使用Python脚本进行控制。
蜂鸣器高度数字化,并发出声音。它通常具有压电材料,当施加电信号时振动,从而产生真实波。蜂鸣器经常用于数字设备,以提供听觉反馈,例如指示开关已点击或发生错误。
通常来说,您需要将蜂鸣器连接到树莓派的GPIO引脚上,并使用Python程序来创建电信号以触发相应的音频。蜂鸣器的类型和预期的声音将决定所需的特定代码。
- 在面包板上放置蜂鸣器,并记录其正极位置。
- 使用母对公跳线将树莓派的GND引脚连接到与蜂鸣器负极相同面包板行上的孔中。
- 从树莓派的GPIO4引脚连接一根母对公跳线到与蜂鸣器正极相同面包板行上的孔中。
将您的布线与以下示例进行比较:
现在配置好了布线,让我们立即开始编写代码。在Python任务列表中为此电路编写文档。将该文件重命名为buzzer.py:
pi@raspberrypi:~/python-projects $ touch buzzer.py
为了让蜂鸣器发出蜂鸣声,使用Buzzer Class的实例化设定beep()方法来编写代码。on时间和off时间是前两个参数。beep()函数。这些设置决定了蜂鸣器与流值一起开启和关闭的时间长度。默认值为1秒。
从sign模块的暂停命令开始,然后添加gpiozero模块中的Buzzer:
from gpiozero import Buzzer
from signal import pause
随后,创建被称为buzzer的蜂鸣器的一个实例。选择GPIO引脚4:
buzzer = Buzzer(4)
在buzzer上调用beep()方法。在on-time和off-time字段中放入0.5。蜂鸣器将以每半秒的频率发出蜂鸣声:
buzzer.beep(0.5, 0.5)
在最后添加一个调用pause()来确保应用程序不会终止:
pause()
整个程序应如下所示:
from gpiozero import Buzzer
from signal import pause
buzzer = Buzzer(4)
buzzer.beep(0.5, 0.5)
pause()
打开并运行文档,以听到蜂鸣器每隔半秒发出蜂鸣声。
pi@raspberrypi:~/python-projects $ python3 buzzer.py
蜂鸣器将不断响起,直到您使用Ctrl+C取消程序或在Mu中停止它。
请记住:注意:如果您使用Mu,则即使在关闭该系统后音调仍会保持不变。切断GND连接以打破电路并停止声音。如果音调在重新连接GND电缆时仍然存在,则应启动Mu。
出色!到目前为止,您已经学会了如何使用Python在树莓派上控制三种不同类型的电子添加剂。让我们研究下一个电路中更复杂的因素。
跳线
跳线是一种用于电路中,在印刷电路板(PCB)或面包板上创建两个点之间的临时或永久连接的小型可拆卸连接器。它们通常用于配置或自定义电子设备,启用或禁用功能或更改电路的行为。
它们有三种不同类型:
- 公公跳线。
- 母对公跳线。
- 母对母跳线。
按钮
触摸按钮,也称为按压或短暂交换器,是用于短暂控制电路的电子开关。当按下按钮时,它会在两个导电板或接触点之间创建一个临时的电气连接,使电流通过电路流动。
触摸按钮有各种形状,大小和配置。一些常见的配置通常包括正常打开(NO)和正常关闭(NC)按钮。默认情况下,NO按钮处于打开状态,按下按钮会关闭电路,使电流流动。NC按钮默认处于关闭状态,按下按钮会打开电路,中断电流流动。
要使用它,你必须首先将一个触摸按钮连接到树莓派的任一GPIO引脚上。在大多数情况下,一个引脚连接到按钮的一侧,另一个引脚连接到另一侧。当按钮被按下时,电路闭合,向GPIO引脚发送信号。
如果你使用Mu,则使用下列步骤制作报告:
- 点击全新的菜单项。
- 点击保存。
- 进入 Python 项目目录 /home/pi。
- 将文件命名为 button.py 并保存。
创建文档后,你就可以开始编程了。首先需要从 gpiozero 包中添加 Button 类,并且需要导入来自 signal 包的 pause。
在 Python 中可使用 GPIO 库来确定按钮的当前状态。首先要使用 GPIO.setup() 方法将 GPIO 引脚设置为输入。然后,可以使用 GPIO.input() 方法读取引脚的状态。如果状态为 GPIO.high,则表示按钮被按下;如果状态为 GPIO.LOW,则表示按钮未被按下。
Python
from gpiozero import Button
from signal import pause
将 GPIO 引脚号作为参数传递以启动 Button 类的实例。在此示例中,应使用 GPIO4 引脚,因此可以将其传递为参数。
Python
button = Button(4)
接下来,创建用于处理特定按钮事件的函数,例如:
Python
def button_pressed():
print("Button was pressed")
def button_held():
print("Button was held")
def button_released():
print("Button was released")
Button 类的事件属性包括 when_pressed、when_held 和 when_released。可以使用这些属性进行特殊事件的处理。
when_held 属性需要一些解释,虽然 when_pressed 和 when_released 属性是不言自明的。如果一个功能靠近 when_held 属性,它只会在按钮被按下并保持足够长的一段时间后才会被触发。
在 Button 实例的 hold_time 属性的帮助下,选择 when_held 的维持时间。1.5 秒是 hold_time 的默认值。在 Button 实例的开发过程中,可以通过提供浮点值来覆盖此值:
Python
button = Button(4, hold_time=2.5)
button.when_held = button_held
这可以使 Button 实例在按钮被按下并保持住之后延迟执行 button_held() 函数 2.5 秒。
现在,您已经了解了按钮的特殊事件属性,将它们各自设置为先前描述的相应功能:
Python
button.when_pressed = button_pressed
button.when_held = button_held
button.when_released = button_released
完成了按钮的设置!为了让系统继续监听指定的操作,必须调用 pause()。在文件的末尾调用 pause() 是最好的方法。
在接线和编码完成后,您准备测试您的第一个电路。在 python-tasks 目录中运行此程序:
shell
pi@raspberrypi:~/python-projects $ python3 button.py
如果您使用 Mu,请先确保报告已保存,然后单击“运行”以启动程序。
此程序目前正在运行并等待事件发生。当您按下按钮时,应在控制台中看到以下内容:
shell
Button was pressed
在按钮按下并保持至少1秒后,您应该看到以下输出:
shell
Button was held
最后,当您释放按钮时,应观察到以下内容:
shell
Button was released
现在!使用Python,我们强调并编写了您在树莓派上的第一个电路。
由于在您的代码中使用了pause(),您需要手动停止应用程序。如果您在Mu中运行此程序,则可以单击停止按钮来停止。如果您从命令行执行此操作,则可以使用Ctrl+C停止此系统。
运动传感器:- 将运动传感器连接到树莓派的GPIO引脚,允许您分析传感器的数据并创建一个Python脚本来分析数据并根据其执行操作。
借助蜂鸣器、PIR运动传感器和一些Python脚本,可以使用树莓派构建运动激活的警报装置。 PIR运动传感器通过侦测运动物体和人体的红外辐射来感应运动。 当侦测到运动时,蜂鸣器发出警报声。
接线
完成接线的步骤如下:
- 使用公母跳线将树莓派的5V和GND引脚连接到面包板侧面的正负侧。
- 使用公母跳线将树莓派的GPIO14引脚连接到面包板上的LED。
- 使用330 -欧姆电阻器将面包板的负电线连接到LED的负极。
- 在面包板上放置蜂鸣器,并使用女性到男性跳线将蜂鸣器连接到树莓派的GPIO15引脚。
- 使用公母跳线将传感器的VCC引脚连接到面包板的电源轨。
- 在传感器的OUT引脚和树莓派的GPIO4引脚之间添加母到母跳线。
- 使用公母跳线将传感器的GND引脚连接到面包板的负极。
源代码解释:
像往常一样,将此项工作的报告添加到Python计划列表中。为此任务调用此文件motion detector.py:
pi@raspberrypi:~/python-projects $ touch motion_detector.py
导入CSV模块是您必须执行的第一步,以在运动被检测到时保持时间戳。此外,导入pathlib模块的direction,因此可以引用CSV文件:
import csv
from pathlib import Path
要为运动发生制作时间戳,请在此之后从日期和时间模块导入日期和时间:
from datetime import datetime
随后,从标识模块中导入pause与gpiozero的必需元素类:
from gpiozero import LED, Buzzer, MotionSensor
from signal import pause
由于导入者的设备,您可以设置以下将要使用的电子组件。为MotionSensor、Buzzer和LED类构建时间。 将这些中的每个PIN作为旁路参数输入:
led = LED(14)
buzzer = Buzzer(15)
motion_sensor = MotionSensor(4)
随后,标记CSV文件区域,在其中每当检测到运动时,将存储时间戳。它将称为detected motion.csv。创建一个字典以存储时间戳值,以便在如何编写CSV时使用:
output_csv_path = Path("detected_motion.csv")
motion = {
"start_time": None,
"end_time": None,
}
应该使用方法将时间戳信息保存到CSV记录中。在创建报告时提供标题行:
def write_to_csv():
first_write = not output_csv_path.is_file()
with open(output_csv_path, "a") as file:
field_names = motion.keys()
writer = csv.DictWriter(file, field_names)
if first_write:
writer.writeheader()
writer.writerow(motion)
start_motion()方法的描述,该特征可能通过多种行为表现出来:
- 开始led的半秒间隔闪烁。
- 发出蜂鸣声作为信号。
- 运动字典应继续使用开始时间戳。
通过将名称上传到print(),即可在应用程序运行时观察操作的展开。
def start_motion():
led.blink(0.5, 0.5)
buzzer.beep(0.5, 0.5)
motion["start_time"] = datetime.now()
print("motion detected")
接下来,定义end_motion()属性以实现以下行为:
- 关闭蜂鸣器和LED。
- 保存结束时间的时间戳。
- 要将运动记录保存到CSV文档中,请运行write to CSV()。
- 启动运动字典重置。
在执行任何替代代码之前,请检查运动[“start time”]值是否存在。只有在捕获到开始时间戳时记录数据到CSV中。
def end_motion():
if motion["start_time"]:
led.off()
buzzer.off()
motion["end_time"] = datetime.now()
write_to_csv()
motion["start_time"] = None
motion["end_time"] = None
print("motion ended")
为了确保排除任何主要运动,包括调用.wait for no motion():
print("Readying sensor...")
motion_sensor.wait_for_no_motion()
print("Sensor ready")
对于MotionSensor示例,请将.when motion和.when no motion属性设置如下:
motion_sensor.when_motion = start_motion
motion_sensor.when_no_motion = end_motion
要测试新的运动检测器警报,请保存文档并执行它:
pi@raspberrypi:~/python-projects $ python3 motion_detector.py
输出
Readying sensor...
Sensor ready
如果您在运动检测器前挥手,蜂鸣器必须开始大声鸣叫,LED必须闪烁。如果您停止移动几秒钟,警报应消失。您应该在控制台中看到以下内容:
pi@raspberrypi:~/python-projects $ python3 motion_detector.py
输出
Readying sensor...
Sensor ready
motion detected
motion ended
motion detected
motion ended
...
您可以使用Mu中的stop命令或Ctrl+C来继续停止应用程序。
查看生成的CSV报告以获取更多信息:
输出
stash:~/python-projects $ cat detected_motion.csv
start_time,end_time
2020-04-21 10:53:07.052609,2020-04-21 10:53:13.966061
2020-04-21 10:56:56.477952,2020-04-21 10:57:03.490855
2020-04-21 10:57:04.693970,2020-04-21 10:57:12.007095
如您所见,CSV报告已接收到运动开始和结束时间的时间戳。
结论
树莓派一直在不断改进,是一个极好的计算工具,其广泛的功能使其成为物理计算的首选硬件。
本教程向您展示了如何使用Python在树莓派上安装软件并执行:
- 检查传感器数据。
- 向电子设备输出信号。
- 通过使用Python在树莓派上创建出色的项目。