Arduino 和 Python 之间的第一次串行通信

在第一个例子中,从 Arduino 设备开始基本的串行写操作。

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello World!");
  delay(100);
}

setup() 中,函数 Serial.begin(9600) 设置串行数据通信的波特率。在此示例中,使用 9600 的波特率。其他值可以在这里阅读: Arduino Serial.begin() 函数

loop() 中,我们要发送的第一条消息是 Hello World!。此消息通过 Serial.println("Hello World!") 传输,因为它将以 ASCII 格式将此字符串发送到串行端口。在消息的末尾,有 Carriage Return (CR, \r) 和 Newline character (\n)。此外,每次程序打印到串行端口时都会使用 100 毫秒的延迟。

接下来,通过 COM 端口上传此 Arduino 草图(请记住此 COM 端口号,因为它将在 Python 程序中使用)。

读取 Arduino 设备发送的串行数据的 Python 程序如下所示:

import serial
import time

ser = serial.Serial('COM8', 9600)
while (1):
    print ser.readline()
    time.sleep(0.1)

首先,应该导入 pyserial 包。有关在 Windows 环境中安装 pyserial 的更多信息,请查看以下说明: 安装 Python 和 pyserial 。然后,我们用 COM 端口号和波特率初始化串口。波特率需要与 Arduino 草图中使用的波特率相同。

接收的消息将使用 readline() 函数在 while 循环中打印。这里也使用 100 毫秒的延迟,与 Arduino 草图相同。请注意,pyserial readline() 函数在打开串口时需要超时(pyserial documentation: PySerial ReadLine )。