การสื่อสารระหว่าง Python และ Arduino UNO มากกว่าอนุกรมช่วยให้คุณสามารถควบคุมฮาร์ดแวร์โดยใช้สคริปต์ Python หรือส่งข้อมูลจาก Arduino ไปยัง Python สำหรับการประมวลผล บทช่วยสอนนี้จะแนะนำคุณผ่านการตั้งค่าและใช้ Python เพื่อสื่อสารกับ Arduino Uno ผ่านการเชื่อมต่ออนุกรม
สิ่งที่คุณต้องการ
- Arduino Uno พร้อมสาย USB
- Python ติดตั้งบนคอมพิวเตอร์ของคุณ (แนะนำเวอร์ชัน 3.x)
- Arduino IDE ติดตั้ง
- ห้องสมุดสำหรับการสื่อสารอนุกรม Python (เช่น
pyserial
)
ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ที่จำเป็น
1. ติดตั้ง Python
หากคุณไม่ได้ติดตั้ง Python ให้ดาวน์โหลดจาก python.org และทำตามคำแนะนำการติดตั้ง
2. ติดตั้ง Arduino IDE
ดาวน์โหลดและติดตั้ง Arduino IDE จาก arduino.cc.
3. ติดตั้งไลบรารี pyserial
Pyserial เป็นสิ่งจำเป็นสำหรับ Python ในการสื่อสารผ่านพอร์ตอนุกรม ติดตั้งโดยใช้คำสั่งต่อไปนี้:
ขั้นตอนที่ 2: เขียนและอัปโหลดรหัส Arduino
Arduino จะส่งและรับข้อมูลผ่านพอร์ตอนุกรม ด้านล่างเป็นตัวอย่างร่าง:
รหัส Arduino
- เปิด Arduino IDE
- วางรหัสข้างต้นลงในตัวแก้ไข
- เลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
- คลิก อัพโหลด เพื่ออัปโหลดรหัสไปยัง Arduino Uno
ขั้นตอนที่ 3: เขียนรหัส Python
ด้านล่างเป็นตัวอย่างสคริปต์ Python เพื่อสื่อสารกับ Arduino:
รหัส Python
ขั้นตอนที่ 4: ทดสอบการตั้งค่า
- เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
- ค้นหาพอร์ตของ Arduino:
- บน Windows: ตรวจสอบพอร์ตในตัวจัดการอุปกรณ์ (เช่น COM3)
- บน macOS/linux: ใช้ไฟล์
ls /dev/tty.*
คำสั่งเพื่อค้นหาพอร์ตที่ถูกต้อง (เช่น/dev/ttyUSB0
).
- อัปเดต
port
ค่าในสคริปต์ Python เพื่อให้ตรงกับพอร์ต Arduino ของคุณ - เรียกใช้สคริปต์ Python โดยใช้คำสั่ง:
- สังเกตการสื่อสารระหว่าง Python และ Arduino ในเทอร์มินัลและจอภาพอนุกรม
แอปพลิเคชันของการสื่อสาร Python-Arduino
- งานฮาร์ดแวร์อัตโนมัติ (เช่นเปิดไฟ LED การควบคุมมอเตอร์)
- การบันทึกข้อมูลเซ็นเซอร์ไปยังไฟล์หรือฐานข้อมูล
- การสร้าง GUIs ที่กำหนดเองสำหรับโครงการ Arduino โดยใช้ไลบรารี Python เช่น tkinter หรือ pyqt
- การรวม Arduino เข้ากับแพลตฟอร์ม IoT
การแก้ไขปัญหา
-
ไม่มีการเชื่อมต่อกับ Arduino:
- ตรวจสอบให้แน่ใจว่ามีการระบุพอร์ตที่ถูกต้องในสคริปต์ Python
- ตรวจสอบว่าอัตราการรับส่งข้อมูลตรงกับภาพร่าง Arduino
-
ไม่มีการตอบสนองจาก Arduino:
- เพิ่มความล่าช้าหลังจากเปิดการเชื่อมต่ออนุกรม (
time.sleep(2)
). - ตรวจสอบให้แน่ใจว่าไม่มีการใช้ Arduino โดยโปรแกรมอื่น (เช่นมอนิเตอร์อนุกรมใน Arduino IDE)
- เพิ่มความล่าช้าหลังจากเปิดการเชื่อมต่ออนุกรม (
-
unicodedecodeerror:
- ตรวจสอบการเข้ารหัสข้อมูลที่ถูกส่ง/รับ ใช้
.decode(errors='ignore')
หากจำเป็น
- ตรวจสอบการเข้ารหัสข้อมูลที่ถูกส่ง/รับ ใช้
บทสรุป
คุณได้ตั้งค่าการสื่อสารระหว่าง Python และ Arduino Uno ให้สำเร็จมากกว่าอนุกรม สิ่งนี้จะเปิดโอกาสที่ไม่มีที่สิ้นสุดสำหรับการรวมไลบรารีอันทรงพลังของ Python เข้ากับความสามารถด้านฮาร์ดแวร์ของ Arduino ทดลองเพิ่มเติมโดยการเพิ่มเซ็นเซอร์มอเตอร์หรือการสร้าง GUIs ที่ใช้งูเหลือมสำหรับโครงการของคุณ!