วิธีใช้ 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. Arduino Uno พร้อมสาย USB
  2. Python ติดตั้งบนคอมพิวเตอร์ของคุณ (แนะนำเวอร์ชัน 3.x)
  3. Arduino IDE ติดตั้ง
  4. ห้องสมุดสำหรับการสื่อสารอนุกรม Python (เช่น pyserial)

ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ที่จำเป็น

1. ติดตั้ง Python

หากคุณไม่ได้ติดตั้ง Python ให้ดาวน์โหลดจาก python.org และทำตามคำแนะนำการติดตั้ง

2. ติดตั้ง Arduino IDE

ดาวน์โหลดและติดตั้ง Arduino IDE จาก arduino.cc.

3. ติดตั้งไลบรารี pyserial

Pyserial เป็นสิ่งจำเป็นสำหรับ Python ในการสื่อสารผ่านพอร์ตอนุกรม ติดตั้งโดยใช้คำสั่งต่อไปนี้:

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

ด้านล่างเป็นตัวอย่างสคริปต์ Python เพื่อสื่อสารกับ Arduino:

รหัส 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. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  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

  1. งานฮาร์ดแวร์อัตโนมัติ (เช่นเปิดไฟ LED การควบคุมมอเตอร์)
  2. การบันทึกข้อมูลเซ็นเซอร์ไปยังไฟล์หรือฐานข้อมูล
  3. การสร้าง GUIs ที่กำหนดเองสำหรับโครงการ Arduino โดยใช้ไลบรารี Python เช่น tkinter หรือ pyqt
  4. การรวม Arduino เข้ากับแพลตฟอร์ม IoT

การแก้ไขปัญหา

  • ไม่มีการเชื่อมต่อกับ Arduino:

    • ตรวจสอบให้แน่ใจว่ามีการระบุพอร์ตที่ถูกต้องในสคริปต์ Python
    • ตรวจสอบว่าอัตราการรับส่งข้อมูลตรงกับภาพร่าง Arduino
  • ไม่มีการตอบสนองจาก Arduino:

    • เพิ่มความล่าช้าหลังจากเปิดการเชื่อมต่ออนุกรม (time.sleep(2)).
    • ตรวจสอบให้แน่ใจว่าไม่มีการใช้ Arduino โดยโปรแกรมอื่น (เช่นมอนิเตอร์อนุกรมใน Arduino IDE)
  • unicodedecodeerror:

    • ตรวจสอบการเข้ารหัสข้อมูลที่ถูกส่ง/รับ ใช้ .decode(errors='ignore') หากจำเป็น

บทสรุป

คุณได้ตั้งค่าการสื่อสารระหว่าง Python และ Arduino Uno ให้สำเร็จมากกว่าอนุกรม สิ่งนี้จะเปิดโอกาสที่ไม่มีที่สิ้นสุดสำหรับการรวมไลบรารีอันทรงพลังของ Python เข้ากับความสามารถด้านฮาร์ดแวร์ของ Arduino ทดลองเพิ่มเติมโดยการเพิ่มเซ็นเซอร์มอเตอร์หรือการสร้าง GUIs ที่ใช้งูเหลือมสำหรับโครงการของคุณ!

แสดงความคิดเห็น

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.