如何使用Python通过串行与Arduino Uno通信

How to Use Python to Communicate with an Arduino Uno Over Serial

通过串行进行python和arduino uno之间的通信,您可以使用Python脚本控制硬件,或将来自Arduino的数据发送到Python进行处理。本教程将指导您建立并使用Python通过串行连接与Arduino Uno进行通信。


你需要什么

  1. 带有USB电缆的Arduino Uno
  2. Python安装在您的计算机上(建议3.x版)
  3. 安装了Arduino IDE
  4. Python串行通信的库(例如 pyserial)

步骤1:安装所需的软件

1。安装Python

如果您没有安装Python,请从 python.org 并按照安装说明进行操作。

2。安装Arduino IDE

从中下载并安装Arduino IDE arduino.cc.

3。安装催眠库

Python需要通过串行端口进行通信需要A骨。使用以下命令安装它:

pip install pyserial

步骤2:编写和上传Arduino代码

Arduino将通过串行端口发送和接收数据。以下是一个示例草图:

Arduino代码

void setup() {
  Serial.begin(9600); // Start serial communication at 9600 baud
  while (!Serial);    // Wait for the serial port to connect
  Serial.println("Arduino is ready!");
}

void loop() {
  // Check if data is available on the serial port
  if (Serial.available()) {
    String data = Serial.readString(); // Read the incoming data
    Serial.print("Received: ");
    Serial.println(data); // Echo the data back

    // Optional: Respond based on the received data
    if (data.trim() == "LED_ON") {
      Serial.println("Turning LED on");
    } else if (data.trim() == "LED_OFF") {
      Serial.println("Turning LED off");
    }
  }
}
  1. 打开Arduino IDE。
  2. 将上述代码粘贴到编辑器中。
  3. 选择正确的 木板港口工具 菜单。
  4. 点击 上传 将代码上传到Arduino Uno。

步骤3:编写Python代码

以下是与Arduino通信的python脚本的示例:

Python代码

import serial
import time

# Configure the serial connection
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=1) # Replace 'COM3' with your Arduino's port

def send_data(data):
    print(f"Sending: {data}")
    arduino.write(f"{data}\n".encode()) # Send data to Arduino
    time.sleep(0.1)

    response = arduino.readline().decode().strip() # Read response from Arduino
    if response:
        print(f"Arduino responded: {response}")

if __name__ == "__main__":
    time.sleep(2)  # Wait for Arduino to initialize
    print("Connected to Arduino")

    # Example: Send commands to Arduino
    send_data("LED_ON")
    time.sleep(2)
    send_data("LED_OFF")

    # Close the serial connection
    arduino.close()

步骤4:测试设置

  1. 通过USB将Arduino连接到您的计算机。
  2. 找到Arduino的端口:
    • 在Windows上:检查设备管理器中的端口(例如COM3)。
    • 在MacOS/Linux上:使用 ls /dev/tty.* 命令找到正确的端口(例如, /dev/ttyUSB0).
  3. 更新 port 在Python脚本中进行价值,以匹配您的Arduino端口。
  4. 使用命令运行Python脚本:
python your_script_name.py
  1. 观察Python和Arduino在终端和串行显示器中的通信。

Python-Arduino Communication的应用

  1. 自动化硬件任务(例如,打开LED,控制电动机)
  2. 将传感器数据记录到文件或数据库
  3. 使用Python库,例如TKINTER或PYQT,为Arduino Projects创建自定义GUI
  4. 将Arduino与IoT平台集成

故障排除

  • 与Arduino无联系:

    • 确保在Python脚本中指定正确的端口。
    • 验证波特率是否与Arduino草图相匹配。
  • 没有来自Arduino的回应:

    • 打开串行连接后添加延迟(time.sleep(2)).
    • 确保另一个程序没有使用Arduino(例如,Arduino IDE中的串行监视器)。
  • Unicodedecodeerror:

    • 检查发送/接收的数据的编码。使用 .decode(errors='ignore') 如有必要。

结论

您已经成功地建立了Python和Arduino Uno之间的沟通,而不是串行。这为将Python的强大库与Arduino的硬件功能集成在一起开辟了无限的可能性。通过添加传感器,电动机或为您的项目创建基于Python的GUI,进一步实验!

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.