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的智能手机微型USB充电器)或更新的板
  • 微型SD卡(至少16 GB,至少10类)
  • Arduino Uno R3开发板或兼容开发板

分步指南

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

树莓派环境准备


在Raspberry Pi文章中安装Raspbian Buster Lite,以安装Raspberry PI OS。


此外,Rasbpian Buster Lite预先安装了Python。

现在,我们必须使用第一个草图配置Arduino Uno。

安装Pyserial

在安装Pyserial之前,我们需要获得一点信息:

sudo apt install python-pip 
sudo apt install python-pip

现在我们可以继续安装Pyserial:

python -m pip install pyserial 
python -m pip install pyserial

测试安装和读取控制台

要阅读我们的控制台,我们需要将Raspberry Pi USB端口连接到Arduino一个。 为了进行测试,我将向您显示天气系统的结果:




Python hidapi   usb 权限 python读usb外设交互_arduino


必须将Arduino配置为在其运行草图中使用Serial.print命令通过COM端口发送数据。 请记住,在Arduino草图中的每个数据样本后面附加回车符(文本“ \ 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

另外,此操作非常简单。 您需要导入一个串行库并打开端口。 创建一个名为“ test.py”的文件:

nano test . py 
nano test . py

并包含以下代码:

import serial
     
     

ser 
     
     = serial. 
     
     Serial 
     
     ( ’/dev/ttyACM0’ 
     
     , 
     
     9600 
     
     ) 
     
     

readedText 
     
     = ser. 
     
     readline 
     
     ( 
     
     ) 
     
     
print 
     
     ( readedText 
     
     ) 
     
     

ser. 
     
     close 
     
     ( 
     
     )

执行:

python test . py 
python test . py

请享用!