如何通过终端使用 Python 将 Raspberry Pi 连接到串行 USB 端口

使用这些开源工具和简单的命令,轻松地从您的 Raspberry Pi 与其他设备连接。
105 位读者喜欢这篇文章。
Coding the Raspberry Pi in a web emulator

Opensource.com

Raspberry Pi 可以通过其 GPIO 与现实世界进行交互,例如,控制步进电机。您还可以使用 Raspberry Pi 通过串行 USB 端口与某些设备(如 Arduino)进行对话。

在本指南中,我将向您展示如何将 Raspberry Pi 连接到串行 USB 端口,并使用 Python 从终端(没有桌面环境)读取其值。为此,我们将使用 Pyserial 及其终端工具。

我们需要什么

对于这个项目,我将使用 Raspberry Pi Zero W 和 Arduino Uno R3。 这些步骤也应该适用于较新的 Raspberry Pi 板。

  • Raspberry Pi Zero W(包括合适的电源或至少 3A 的智能手机 Micro USB 充电器)或更新的板
  • micro SD 卡(至少 16 GB,至少 Class 10)
  • Arduino Uno R3 板或兼容的板(您还可以考虑 Elegoo 入门套件)。

分步指南

我们将首先在 Raspberry Pi Zero W 中安装 Raspbian Buster Lite。然后,我们将使用 Python 安装适当的库来读取 Arduino Uno R3 的数据。

Raspberry Pi 环境准备

在开始之前,请参考在 Raspberry Pi 中安装 Raspbian Buster Lite 文章来安装 Raspberry PI OS。

此外,Rasbpian Buster Lite 预装了 Python。

现在我们必须使用其第一个草图配置 Arduino Uno。 为此,您有两种选择

安装 Pyserial

在安装 Pyserial 之前,我们需要获取 pip

sudo apt install python-pip

现在我们可以继续安装 Pyserial

python -m pip install pyserial

测试安装并读取控制台

要读取我们的控制台,我们需要将 Raspberry Pi USB 端口连接到 Arduino 端口。 为了测试的目的,我将向您展示我的天气系统的结果

Raspberry Pi Arduino weather station

必须将 Arduino 配置为使用其运行草图中的 Serial.print 命令通过 COM 端口发送数据。 请记住在 Arduino 草图中将回车符 (text "\n") 附加到每个数据样本,以便每个读数都有不同的行。

在此配置中,您可以简单地使用 Pyserial miniterm 工具来列出可用的端口及其输出。 使用命令 python -m serial.tools.miniterm,然后输入设备端口并在屏幕上接收端口数据。 使用 CTRL+] 关闭连接

pi@raspberrypi:~ $ python -m serial.tools.miniterm
--- Available ports:
---  1: /dev/ttyACM0         'ttyACM0'
---  2: /dev/ttyAMA0         'ttyAMA0'
--- Enter port index or full name: /dev/ttyACM0
--- Miniterm on /dev/ttyACM0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
20.0;61.0
20.0;61.0
20.0;61.0
--- exit ---

如果您已经知道端口名称,您也可以直接进行端口读取,只需附加端口名称即可。 在我的示例中,正确的端口是 /dev/ttyACM0(请参考仅通过终端从 Raspbian Buster Lite 将 Raspberry Pi 连接到 Arduino以了解如何发现您的端口),因此直接命令将是

pi@raspberrypi:~ $ python -m serial.tools.miniterm /dev/ttyACM0
--- Miniterm on /dev/ttyACM0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
20.0;61.0
20.0;61.0
20.0;61.0
--- exit ---

在 Python 程序中使用 Pyserial

此外,此操作非常简单。 您需要导入一个 serial 库并调用端口打开。 创建一个名为 "test.py" 的文件

nano test.py

并包含以下代码

import serial
ser=serial.Serial(’/dev/ttyACM0’,9600)
readedText = ser.readline()
print(readedText)
ser.close()

执行

python test.py

尽情享用!

文章最初发布于 peppe8o.com。 经许可转载。

接下来读什么
User profile image.
幸运的丈夫,开源爱好者。 天生好奇。 为我的根感到自豪,乐于混合和学习不同的根

5 条评论

谢谢,我需要这个,因为我也想将 Raspberry Pi 连接到串行 USB

使用 3A 为 pi zero 供电有点过头了。 1 安培就足够了,但 2 安培更好。 ?

Rasperry PI Zero W 推荐的 PSU 至少为 1,2 A。典型的裸板电流消耗降至 150mA(参考 https://peppe8o.com/comparing-main-features-of-latest-rpi-models/)。 但是对于某些项目(特别是如果您想从 Raspberry PI USB 端口为 Arduino 和外部设备供电),您可能需要比 RPI 单独消耗的电流更大的电流容量。 因此,更高的电源可能会更好。 但是,2A 也是一个不错的选择。
感谢您的反馈!

回复 ,作者 digidev(未验证)

解释得很好,继续努力,也可以查看我在

raspberry pinout

串行通信

太棒了,我将用我正在创建的帖子进行基准测试,但我使用的是 Java 而不是 Python =P 让我们看看结果!! 感谢分享

Creative Commons License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.