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 端口。 为了测试的目的,我将向您展示我的天气系统的结果

必须将 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。 经许可转载。
5 条评论