使用 Python 在 Raspberry Pi 上构建物理项目2025 年 3 月 17 日 | 阅读 26 分钟 树莓派是一款低成本、信用卡大小的计算机,由英国树莓派基金会开发,用于支持基础计算机科学在教育机构的教学。此后,它在创客、爱好者和专家中因各种项目而广受欢迎。 Python 是一种流行的、高级的编程语言,易于学习和使用,使其成为想要构建物理项目的初学者的理想选择。它拥有广泛的库和模块。 借助树莓派和 Python,您可以构建与物理世界交互的项目,例如控制 LED、读取传感器,甚至创建定制机器人。您还可以使用树莓派和 Python 来创建更高级的项目,例如家庭自动化系统或气象站。 树莓派概述树莓派是一款低成本、信用卡大小的计算机,由英国树莓派基金会开发,旨在促进基础计算机科学在学校的教学。它已成为业余爱好者、创客和专业人士在各种项目中的热门选择。 ![]()
树莓派与 ArduinoArduino 是一个基于微控制器的平台,广泛用于构建物理计算项目。微控制器是单个集成电路上的小型计算机,可以控制外部硬件并读取传感器。 Arduino 平台可以轻松构建与物理世界交互的项目,从简单的 LED 控制器项目到更复杂的机器人或气象站项目。 树莓派和 Arduino 都是构建物理计算项目的流行平台,但它们各有优势和用途。掌握这些结构之间的关键差异可以帮助您决定哪种最适合您的任务。 以下是树莓派和 Arduino 之间的一些显着区别
设置树莓派设置树莓派是一个简单的过程,任何人都可以完成,无论他们的技术背景或经验如何。在本文中,我们将提供一个分步指南,帮助您设置树莓派并开始您的第一个项目。 所需材料:-
步骤 1:下载操作系统。 设置树莓派的第一步是下载您想要的操作系统(OS)。树莓派支持多种操作系统,包括 Raspbian、Ubuntu 等。 本文将使用 Raspbian,这是树莓派可靠的操作系统。您可以从可靠的树莓派网站获取最新版本的 Raspbian。 步骤 2:将操作系统写入 MicroSD 卡。 下载操作系统后,将其写入 MicroSD 卡。您可以使用 Etcher 等工具来完成此操作,Etcher 是一款免费开源工具,可轻松将操作系统写入 SD 卡。请仔细遵循 Etcher 的说明将操作系统写入 MicroSD 卡。 步骤 3:使用 MicroSD 卡启动树莓派。 将操作系统写入 MicroSD 卡后,应立即将其插入树莓派。MicroSD 卡插槽位于树莓派底部,您需要将卡推入插槽直到听到咔哒声。 步骤 4:连接外围设备 接下来,您需要将外围设备连接到树莓派。这包括电源、HDMI 线、键盘、鼠标和显示器。将 HDMI 线连接到树莓派上的 HDMI 端口和显示器,并将键盘和鼠标连接到树莓派上的 USB 端口。 步骤 5:打开树莓派电源 最后,您需要通过插入电源来打开树莓派电源。树莓派启动后,您应该会在显示器上看到 Raspbian 桌面。 步骤 6:配置树莓派 最后一步是根据您的偏好配置树莓派。这包括设置 Wi-Fi、键盘布局和其他设置。您可以通过单击桌面左上角的树莓派图标,选择“首选项”,然后选择“树莓派配置”来访问配置设置。 树莓派所需硬件设置树莓派所需的硬件是整个过程的关键组成部分,它将决定您的树莓派项目的能力。
可选硬件此外,根据您的具体项目要求,您可能还需要以下硬件:
设置树莓派软件的过程 在树莓派上设置软件涉及几个步骤,包括下载操作系统映像,将映像写入 MicroSD 卡,以及配置树莓派。 以下是该过程的总体概述:
从 NOOBS 安装 Raspbian树莓派基金会还提供了树莓派 Imager 的替代方案,称为 NOOBS(New Out Of Box Software)。NOOBS 是一个软件包,包含多个操作系统,包括 Raspbian,可以安装在树莓派上。 ![]() 要使用 NOOBS,您首先需要从树莓派网站下载 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 编辑器 MU 编辑器是树莓派上一个简单、适合初学者的代码编辑器。然而,与 PyCharm 或 Visual Studio Code 等其他代码编辑器相比,它的功能较少。 要在树莓派上使用 MU 编辑器运行 Python,您首先需要将 MU 编辑器安装到您的树莓派上。您可以通过在终端中运行以下命令来完成此操作: 安装 MU 编辑器后,您可以通过在终端中运行以下命令来启动该应用程序: MU 编辑器将打开,您将看到一个空白的编辑器窗口。您可以在此窗口中开始编写 Python 代码。这是一个简单的示例,可以帮助您入门 要运行您的 Python 代码,您可以按 F5 键或单击工具栏上的“运行”按钮。代码的输出将显示在终端窗口中。 一旦您在树莓派上安装了 MU 编辑器,您就可以使用它来运行 Python 代码。为此,请按照以下步骤操作:
代码的输出将显示在编辑器底部的 Python shell 中。如果您的代码中有任何错误,它们也将在此处显示。 如果您需要更改代码,请在编辑器中进行更改,保存文件,然后重新运行代码。 通过 SSH 远程编辑 可以通过安全外壳(SSH)协议对树莓派进行编程和远程控制。这使您无需物理连接键盘、鼠标和显示器即可运行和调试代码、访问文件以及控制树莓派。 ![]() 以下是通过 SSH 在树莓派上远程执行 Python 的方法: 在树莓派上授权 SSH:在使用 SSH 连接到树莓派之前,必须在设备上启用 SSH。您可以通过打开树莓派配置工具并导航到“接口”选项卡来启用 SSH。然后,您可以从那里启用 SSH 选项。 这将显示有关树莓派上网络接口的信息,包括 eth0 或 wlan0 接口的 IP 地址。查找 inet 地址,即树莓派的 IP 地址。 通过 SSH 连接到树莓派:您可以使用 Windows 上的 PuTTY 或 macOS 和 Linux 上的 Terminal 通过 SSH 连接到树莓派。要连接,您需要知道树莓派的 IP 地址。您可以通过检查路由器的网络设置或使用 Advanced IP Scanner 等工具来查找 IP 地址。 要连接到树莓派,请在终端或命令提示符中输入以下命令: 将 登录树莓派:一旦您获得了树莓派的 IP 地址,就可以使用 PuTTY 或 Terminal 通过 SSH 连接到该设备。您可能需要输入此最终用户的密码,因为树莓派的默认用户名为 pi。Raspberry 是预设密码。 在树莓派上运行 Python:登录树莓派后,您可以使用 Python 解释器运行代码。可以通过在终端中输入命令 python3 并按 Enter 键来启动 Python 解释器。然后可以通过按 Enter 键输入并运行 Python 代码。您可以输入 exit() 或按 Ctrl + D 退出 Python 解释器。 要启动 Python 解释器,请在终端中输入以下命令: 现在您可以在终端中运行 Python 代码,包括执行。 使用 Mu 编辑器创建 python-projects 目录 要使用 Mu Editor 创建 python-projects 目录,请按照以下步骤操作:
现在您应该会在 Mu Editor 的文件浏览器中看到“python-projects”目录。您现在可以将 Python 项目保存在此目录中。 保持项目井井有条并放在专用目录中很重要。这样做将使管理项目和与他人共享代码更加容易。 通过 SSH 创建 python-projects 目录要在 SSH 上为树莓派创建 python-projects 目录,您需要使用终端应用程序,例如 Mac 上的 Terminal 或 Windows 上的 Putty。首先,您需要使用 IP 地址、默认用户名(pi)和密码(raspberry)通过 SSH 连接到您的树莓派。 连接后,您可以使用以下命令创建 python-projects 目录: 在这种情况下,mkdir 命令会创建一个具有指定名称“python-projects”的目录。路径开头的 ~/ 指定当前用户的家目录,在这种情况下为 pi。 您可以使用 ls 命令(该命令列出目录的内容)来验证目录是否已创建: 由于我们刚刚创建了目录,还没有添加任何文件,因此这应该会返回一个空目录。 您现在可以导航到 python-projects 目录并使用 cd 命令开始创建您的 Python 项目: 与物理组件交互要与电子元件、GPIO 引脚、按钮、LED、蜂鸣器和运动传感器等物理组件进行交互,您需要使用树莓派的 GPIO(通用输入/输出)引脚。GPIO 引脚是数字输入和输出,允许树莓派与物理世界交互。 LED:要控制 LED,您可以将正极连接到 GPIO 引脚,将负极连接到接地引脚。然后,您可以编写 Python 脚本来控制 LED 的状态,将其打开和关闭。 LED 有不同的形状和尺寸,可以是直插式或表面贴装式。直插式 LED 有两根引脚插入印刷电路板(PCB)上的孔中,而表面贴装 LED 直接安装在 PCB 上。 以下是您必须遵循的连接此电路的步骤:-
![]() 您可以使用下图检查接线情况 如果接线看起来正确,您就可以开始编写 Python 代码让 LED 发光了。为此电路在 python-initiatives 目录中创建一个报告开始。将此文件命名为 led.py 为了使 LED 闪烁,请在此代码中创建 LED 类的实例并调用其 blink() 函数。在系统终止之前,LED 将每秒在开和关之间交替。blink() 方法的默认超时时间为一秒。 从 gpiozero 模块开始初始化 LED,并从 signal 模块暂停: 创建一个名为 led 的单独 LED 实例。选择 GPIO 引脚 4 对 led 使用 blink() 方法 之后添加一个 pause() 调用,以确保程序不会关闭 您的整个代码应该看起来像这样: 要查看 LED 闪烁,请保存并执行文件。 LED 现在应该每秒闪烁一次。当您完成观看 Python 代码运行时,请按 Ctrl+C 停止程序或在 Mu 中停止。 您现在了解了如何使用树莓派上的 Python 来操作 LED。在下一个电路中,Python 将用于为树莓派提供音频。 GPIO 传感器:- GPIO 引脚主要有两种类型:输入和输出。输入引脚读取来自传感器和其他设备的数字信号,而输出引脚用于发送数字信号以控制 LED、电机和其他输出设备。 树莓派有 40 个 GPIO 引脚,编号从 1 到 40。这些引脚分为两行,每行 20 个。引脚根据它们在板上的物理位置进行标记,并且可以通过软件配置其功能。 ![]() 树莓派上有三种类型的 GPIO 引脚:
蜂鸣器:如果您想打开或关闭蜂鸣器或播放不同的音调,您可以将其连接到 GPIO 引脚,接地,然后使用 Python 脚本进行控制。 蜂鸣器是高度数字化的,并发出声音。它通常具有压电材料,当施加电信号时会振动,产生声波。蜂鸣器通常用于数字设备以提供听觉反馈,例如指示按下了某个开关或发生了错误。 通常,您会将蜂鸣器连接到树莓派上的 GPIO 引脚,并使用 Python 程序创建电信号以触发适当的声音。所需的具体代码将取决于蜂鸣器的类型和预期的声音。
![]() 将您的接线与下面的插图进行比较 现在接线已配置好,让我们立即开始编码。为这个电路在 Python 作业列表中创建文档。将此文件重命名为 buzzer.py 为了使蜂鸣器发出蜂鸣声,请在此代码中设置 Buzzer 类的实例并使用它。beep() 方法。on_time 和 off_time 是前两个参数。beep() 函数。这些设置决定了蜂鸣器在连接到流程值时应持续发声和停止发声的时间。两者的默认价格均为一秒。 从 signal 模块的 pause 命令开始,然后从 gpiozero 模块添加 Buzzer 随后,创建一个名为 buzzer 的蜂鸣器实例。选择 GPIO 引脚 4 调用 buzzer 上的 .beep() 方法。在 on-time 和 off-time 字段中都放入 0.5。这会导致蜂鸣器每半秒发出一次蜂鸣声 在末尾添加一个 pause() 调用,以确保应用程序不会终止 您的整个程序必须如下所示:- 保持文档打开并运行,以听到蜂鸣器每半秒发出一次蜂鸣声。 蜂鸣器将持续响铃,直到您使用 Ctrl+C 取消程序或在 Mu 中停止它。 注意:请注意:如果您使用的是 Mu,蜂鸣声即使在您关闭系统后仍会持续。断开 GND 连接以中断电路并停止声音。 如果蜂鸣声持续存在,您应该在重新连接 GND 电缆时启动 Mu。 太棒了!到目前为止,您已经学会了如何在树莓派上使用 Python 控制三种不同类型的电子元件。让我们在下一个电路中研究一个更复杂的因素。 跳线 跳线是电子电路中用于在印刷电路板(PCB)或面包板上的两点之间创建临时或永久连接的小型可移除连接器。它们通常用于配置或定制电子设备、启用或禁用功能,或更改电路的行为。 它们有三种类型:
按钮 按钮,也称为按下开关或瞬时开关,是用于临时控制电气电路的电子开关。当按下按钮时,它会在两个导电板或触点之间创建临时电气连接,允许电流流过电路。 按钮有各种形状、尺寸和配置。一些常见的配置通常包括常开(NO)和常闭(NC)按钮。NO 按钮默认处于打开状态,按下按钮会闭合电路,允许电流流过。NC 按钮默认处于闭合状态,按下按钮会断开电路,中断电流。 要使用它,您必须首先将按钮连接到树莓派上的任何 GPIO 引脚。在大多数情况下,一个引脚连接到按钮的一侧,另一个引脚连接到另一侧。当按下按钮时,电路闭合,信号发送到 GPIO 引脚。 如果您使用 Mu,请按照以下步骤创建报告:
![]() 创建文档后,您就可以开始编程了。首先应从 gpiozero 包中添加 Button 类。此外,还需要从 signal 包导入 pause。 可以使用 Python 中的 GPIO 库来确定按钮的当前状态。首先必须使用 GPIO.setup() 函数将 GPIO 引脚设置为输入。之后,您可以使用 GPIO.input() 方法读取引脚的状态。如果状态为 GPIO.HIGH,则表示按钮被按下;如果状态为 GPIO.LOW,则表示按钮未被按下。 将引脚编号作为参数传递,并初始化 Button 类的对象。在这种情况下,您应该使用 GPIO4 引脚,以便您可以将其作为参数 4 传递。 接下来,创建将用于特定按钮事件的函数,例如可以通过按钮访问的函数: Button 类的事件属性是 when_pressed、when_held 和 when_released。这些属性可以连接到特定的事件。 when_held 属性需要一些解释,而 when_pressed 和 when_released 属性则不言自明。如果一个函数与 when_held 属性关联,那么只有当按钮被按下并按住足够长的时间时,它才会被激活。 通过 Button 实例的 hold_time 属性。when_held 的保持时间由 .hold_time 设置。hold_time 的默认值为一秒半。在开发 Button 实例时,您可以通过提供浮点值来覆盖此设置。 这可以使 Button 实例在按下并按住按钮后延迟 2.5 秒执行 button_held() 函数。 现在您已经了解了 Buttons 上的特殊事件属性,请将它们分别设置为您之前描述的相应功能: 太棒了!您的按钮安装已完成。为了让系统继续监听指定的操作,必须调用 pause()。在文件末尾调用 pause() 是最佳选择。 在完成接线和编码后,您就可以测试您的第一个电路了。在 python-tasks 目录中运行此程序。 如果您使用的是 Mu,请确保首先保存文件,然后单击“运行”以启动程序。 该程序现在正在运行并监听事件。当您按下按钮时,您应该会在控制台中看到以下内容: 按下并按住按钮至少一秒钟后,您应该会看到以下输出。 最后,当您释放按钮时,您应该会看到以下内容: 现在!我们已经使用 Python 强调并编程了您在树莓派上的第一个电路。 您需要手动停止应用程序,因为您在代码中使用了 pause()。如果您在 Mu 中运行此程序,则可以通过单击停止按钮来停止。如果您从命令行运行此程序,则可以使用 Ctrl+C 停止系统。 运动传感器:将运动传感器连接到树莓派的 GPIO 引脚,您可以分析传感器的输出来创建一个 Python 脚本,根据其数据执行操作。 ![]() 借助蜂鸣器、PIR 运动传感器和一些 Python 脚本,树莓派可以用来构建一个运动激活的警报设备。PIR 运动传感器通过检测运动物体和人的红外辐射来感应运动。检测到运动时,蜂鸣器会发出警报声。 ![]() 接线 完成接线的步骤如下:-
![]() 源代码解释 与往常一样,为这项工作在 Python 项目列表中添加一个报告。在此任务中将此文件命名为 motion detector.py 首先,您必须导入 CSV 模块以在检测到运动时维护时间戳。此外,导入 pathlib 模块的 Path,以便您可以引用您的 CSV 文件。 然后,从 datetime 模块导入 date 和 time 以生成运动事件的时间戳。 随后,从 signal 模块导入 pause,以及从 gpiozero 导入所需的元素类。 借助导入的工具,您可以设置您将使用的以下电子组件。为 MotionSensor、Buzzer 和 LED 类构建时序。将 PIN 作为传递参数输入。 随后,标记将存储每次检测到运动的时间戳的 CSV 文件区域。它将被称为 detected_motion.csv。创建一个字典来存储时间戳值,用于 CSV 的写入方式:- 应使用一种方法将时间戳信息保存到 CSV 文件中。创建文件时会提供标题行。 start_motion() 方法的描述此特性可以通过各种行为来体现。
通过上传名称到 print(),您可以观察应用程序运行时发生的动作。 随后,定义一个 end_motion() 属性来实现以下行为:
在执行任何替换代码之前,请检查是否存在 movement["start_time"] 值。仅当捕获到开始时间戳时才将数据记录到 CSV。 为了确保排除任何初始运动,包括调用 .wait_for_no_motion()。 对于 MotionSensor 示例,将 .when_motion 和 .when_no_motion 属性设置如下: 要测试您新设计的运动探测器警报,请保存文件并执行它。 输出 Readying sensor... Sensor ready 如果您将手挥动到运动探测器前面,蜂鸣器应开始响,LED 应闪烁。如果您停止移动几秒钟,警报应会消失。您应该会在控制台中看到以下内容: 输出 Readying sensor... Sensor ready motion detected motion ended motion detected motion ended ... 您可以通过在 Mu 中使用停止命令或 Ctrl+C 来进步并停止应用程序。 查看生成的 CSV 报告以获取更多信息:- 输出 pi@raspberrypi:~/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 报告已收到运动开始和结束时间的时间戳。 结论树莓派是一个不断改进的绝佳计算工具。其广泛的功能使其成为物理计算的首选硬件。 本教程已向您展示如何:-
|
我们请求您订阅我们的新闻通讯以获取最新更新。