有时候我们需要使用arduino的串口通信进行一些设置,比如通过串口通信执行一些动作之类。本文将引导你完成使用Python与Arduino进行串口通信的基本步骤。
前期准备
在开始之前,确保我们有以下几样东西:
- Arduino板(如Arduino Uno)
- Python环境(推荐Python 3.x)
serial
库(用于Python的串口通信)- USB数据线
- Arduino IDE(用于编写和上传代码至Arduino)
其中Pyserial是一个Python库,用于串口通信。它提供了对串口的封装,使得在Python中进行串口通信变得简单易用。要使用pyserial,首先需要安装它:
pip install pyserial
第一步:Arduino准备
首先,我们需要在Arduino板上设置一个简单的程序来发送数据。打开Arduino IDE,并输入以下代码:
void setup() {
Serial.begin(9600); // 设置串口波特率为9600
}
void loop() {
Serial.println("Hello from Arduino!"); // 向串口发送数据
delay(1000); // 延时1秒
}
将以上代码上传到我们的Arduino板中。
第二步:Python准备
现在,我们使用Python来读取Arduino发送的数据。创建一个Python脚本,并输入以下代码:
import serial
# 创建串口对象,指定端口和波特率
ser = serial.Serial('COM3', 9600) # 替换为您的端口号
while True:
if (ser.in_waiting > 0):
data = ser.readline().decode().strip() # 读取一行数据
print("Received from Arduino: ", data) # 打印接收到的数据
运行该脚本,我们应该会看到从Arduino发来的字符串"Hello from Arduino!"每隔一秒打印一次。
第三步:双向通信
接下来,让我们看看如何从Python发送数据到Arduino。修改我们的Arduino代码以接收来自Python的数据:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String data = Serial.readStringUntil(''); // 读取来自Python的数据
Serial.println("Received in Arduino: " + data);
}
}
在Python端,添加一个函数来发送数据到Arduino:
def send_to_arduino(data):
ser.write(data.encode()) # 发送数据到Arduino
现在,我们可以使用send_to_arduino("Hello from Python!")
来发送消息到Arduino。
结束
通过以上步骤,我们已经建立了Python与Arduino之间的简单串口通信。这个基础可以帮助我们构建更复杂的项目,如远程控制系统、环境监测设备等。