วิธีการเขียนโปรแกรม Arduino ด้วย Python: คำแนะนำและตัวอย่างฉบับสมบูรณ์

  • ไลบรารี PySerial ช่วยให้การสื่อสารระหว่าง Arduino และ Python ราบรื่นผ่านพอร์ตซีเรียล
  • สามารถส่งคำสั่งและรับข้อมูลระหว่างบอร์ด Arduino และสคริปต์ Python ได้อย่างง่ายดาย
  • การบูรณาการกับการประมวลผลภาพโดยใช้ OpenCV ขยายขีดความสามารถของ Arduino
  • งานอิเล็กทรอนิกส์สามารถทำได้อัตโนมัติโดยการรวมเซ็นเซอร์ Python, Arduino และแอคชูเอเตอร์เข้าด้วยกัน

หลาม Arduino

คุณรู้หรือไม่ว่าคุณสามารถควบคุมบอร์ด Arduino ได้โดยใช้เพียง Python เท่านั้น แม้ว่าภาษาพื้นเมืองของ Arduino จะใช้ C++ เป็นหลัก แต่ก็มีวิธีที่เข้าถึงได้ค่อนข้างง่ายในการเขียนโปรแกรมและสื่อสารโครงการ Arduino ของคุณโดยใช้ Python ขอบคุณไลบรารีเฉพาะ เช่น PySerial การผสมผสานทั้งสองโลกนี้ไม่เพียงแต่มีความน่าสนใจแต่ยังทรงพลังอย่างมาก โดยเฉพาะสำหรับผู้ที่ต้องการผสานอุปกรณ์อิเล็กทรอนิกส์เข้ากับการประมวลผลข้อมูล การมองเห็นคอมพิวเตอร์ หรือแม้แต่ปัญญาประดิษฐ์ หากคุณต้องการเจาะลึกหัวข้อนี้มากขึ้น คุณสามารถปรึกษาเราได้ คู่มือปฏิบัติ.

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

สามารถเขียนโปรแกรม Arduino โดยตรงด้วย Python ได้หรือไม่?

ใช่ แม้ว่าจะมีความแตกต่างบ้าง Arduino ได้รับการเขียนโปรแกรมโดยใช้สภาพแวดล้อมการพัฒนาของตัวเอง (Arduino IDE) ซึ่งใช้ภาษาที่ใช้ C++ อย่างไรก็ตาม, ขอบคุณการใช้ไลบรารีเช่น PySerial และทางเลือกอื่นเช่น Snek หรือ MicroPython (แม้ว่าจะมีข้อจำกัดด้านฮาร์ดแวร์) ก็สามารถสร้างการสื่อสารระหว่าง Python และ Arduino เพื่อควบคุมบอร์ดหรือโต้ตอบกับอุปกรณ์ต่อพ่วงได้ หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ MicroPython คุณสามารถอ่านบทความของเราได้ มีอะไรใหม่ใน MicroPython.

วิธีที่พบมากที่สุดในการส่งข้อมูลไปยัง Arduino คือการใช้ Python ผ่านทางพอร์ตซีเรียล และบอร์ดจะตีความว่าพอร์ตเหล่านั้นดำเนินการทางกายภาพ (เช่น การเปิดไฟ LED หรือการอ่านเซ็นเซอร์) เราสามารถทำสิ่งที่ตรงกันข้ามได้ด้วย: ให้ Arduino ส่งข้อมูลไปยัง Python และให้แสดง ประมวลผล หรือจัดเก็บข้อมูลนั้น

เครื่องมือที่จำเป็นในการเริ่มต้น

ก่อนที่เราจะลงมือทำสายเคเบิลและโค้ด คุณต้องเตรียมอุปกรณ์พื้นฐานบางอย่างให้พร้อม:

  • บอร์ด Arduino: รุ่นไหนก็ได้ครับ ถึงแม้ว่ารุ่นที่พบบ่อยที่สุดคือ Arduino UNO หรือแบบนาโน
  • เคเบิล USB เพื่อเชื่อมต่อ Arduino ของคุณกับคอมพิวเตอร์
  • Python ติดตั้งบนคอมพิวเตอร์ของคุณ- คุณสามารถรับมันได้จาก เว็บไซต์ Python อย่างเป็นทางการ.
  • การติดตั้ง PySerialไลบรารีที่ทำให้สามารถสื่อสารแบบอนุกรมระหว่าง Arduino และ Python ได้ คุณสามารถติดตั้งได้โดยรันในเทอร์มินัล:
pip install pyserial

PySerial คือชิ้นส่วนสำคัญ ซึ่งทำให้เราสามารถส่งคำสั่งจาก Python และรับการตอบกลับจาก Arduino ได้เช่นเดียวกับการสนทนากับหุ่นยนต์อิเล็กทรอนิกส์

ขั้นตอนที่ 1: เชื่อมต่อ Arduino กับ Python ผ่านพอร์ตซีเรียล

รูปแบบการโต้ตอบที่พบบ่อยที่สุดรูปแบบหนึ่งคือการส่งข้อมูลจากสคริปต์ Python ไปยัง Arduino เพื่อเปิดหรือปิดไฟ LED- มาดูวิธีทำทีละขั้นตอนกัน

1. อัพโหลดโปรแกรมพื้นฐานไปยัง Arduino

โค้ดนี้โหลดจาก Arduino IDE และจะรับผิดชอบในการควบคุม LED ที่รวมอยู่บนพิน 13 ขึ้นอยู่กับข้อมูลที่ได้รับผ่านทางพอร์ตซีเรียล:

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    char data = Serial.read();
    if (data == '1') {
      digitalWrite(13, HIGH);
    } else if (data == '0') {
      digitalWrite(13, LOW);
    }
  }
}

สเก็ตช์นี้จะตีความข้อมูลที่ได้รับจากพอร์ตซีเรียล- หากได้รับเลข '1' ไฟ LED จะเปิดขึ้น ถ้าได้รับเลข '0' มันจะปิด สำหรับตัวอย่างเพิ่มเติมของโครงการ Arduino โปรดไปที่บทความของเราที่ วิธีการสร้างชุดหมากรุกด้วย Arduino.

2. ส่งคำสั่งจาก Python

เมื่อโหลดโค้ดลงบนบอร์ดแล้ว เราจะสร้างสคริปต์ Python ที่รับผิดชอบในการส่งคำสั่ง:

import serial
import time

# Inicializa la conexión
arduino = serial.Serial('COM3', 9600)
time.sleep(2)

# Enciende el LED
arduino.write(b'1')
print("LED encendido")
time.sleep(2)

# Apaga el LED
arduino.write(b'0')
print("LED apagado")

# Cierra la conexión
arduino.close()

โปรดทราบว่าคุณต้องแทนที่ 'COM3' ด้วยพอร์ตที่สอดคล้องกัน บนระบบปฏิบัติการของคุณ ใน Windows มักจะเป็น COM3 หรือ COM4 บน Linux จะเป็นประมาณ /dev/ttyUSB0

การอ่านข้อมูลจากเซ็นเซอร์ที่เชื่อมต่อกับ Arduino

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

1.โค้ด Arduino เพื่ออ่านเซนเซอร์

รูทีนต่อไปนี้จะอ่านค่าแอนะล็อก (เช่น เอาต์พุตของเซ็นเซอร์ LM35) และส่งผ่านทางพอร์ตซีเรียล:

int sensorPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(1000);
}

2. สคริปต์ Python สำหรับการอ่านค่า

จาก Python เราสามารถอ่านข้อมูลนี้และแสดงบนหน้าจอได้:

import serial
import time

arduino = serial.Serial('COM3', 9600)
time.sleep(2)

while True:
  sensor_data = arduino.readline().decode('utf-8').strip()
  print(f"Valor del sensor: {sensor_data}")
  time.sleep(1)

ลูปง่ายๆ นี้ช่วยให้เราแสดงค่าที่วัดได้โดยตรงบนเทอร์มินัลของเรา

การส่งข้อมูลจาก Python ไปยัง Arduino พร้อมตัวอย่างเชิงปฏิบัติ

ลองดูตัวอย่างอื่นที่เราส่งตัวเลขตั้งแต่ 1 ถึง 9 จาก Python และ Arduino กะพริบ LED ตามจำนวนครั้งดังกล่าว:

ร่างภาพใน Arduino

const int pinLED = 13;

void setup() {
  Serial.begin(9600);
  pinMode(pinLED, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    char option = Serial.read();
    if (option >= '1' && option <= '9') {
      option -= '0';
      for (int i = 0; i < option; i++) {
        digitalWrite(pinLED, HIGH);
        delay(100);
        digitalWrite(pinLED, LOW);
        delay(200);
      }
    }
  }
}

สคริปต์ Python สำหรับส่งค่า

import serial
import time

arduino = serial.Serial("COM4", 9600)
time.sleep(2)

arduino.write(b'5')  # Parpadea 5 veces
arduino.close()

การโต้ตอบประเภทนี้เหมาะอย่างยิ่งสำหรับการสร้างอินเทอร์เฟซผู้ใช้ใน Pythonและสามารถควบคุมอุปกรณ์ทางกายภาพโดยสัญชาตญาณ ในบริบทนี้ คุณยังสามารถสำรวจเพิ่มเติมเกี่ยวกับ วิธีใช้จอแสดงผลอิเล็กทรอนิกส์กับ Arduino.

ตัวอย่างขั้นสูง: การตรวจจับด้วยวิสัยทัศน์คอมพิวเตอร์

โครงการขั้นสูงที่แสดงให้เห็นถึงพลังของการรวม Arduino เข้ากับ Python คือการใช้ การมองเห็นคอมพิวเตอร์ด้วย OpenCV และ MediaPipe เพื่อตรวจจับว่าบุคคลกำลังสวมหน้ากากหรือไม่ และควบคุม LED บน Arduino ตามการตรวจจับ

Arduino: ควบคุม LED สองดวง

int led1 = 50;
int led2 = 51;
int option;

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  if (Serial.available() > 0){
    option = Serial.read();
    if(option == 'P'){
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
    }
    if(option == 'N'){
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
    }
  }
}

Python กับ OpenCV และ MediaPipe

ในโค้ด Python ภาพจากกล้องจะถูกวิเคราะห์ ตรวจจับใบหน้า และขึ้นอยู่กับว่าบุคคลนั้นสวมหน้ากากหรือไม่ จากนั้นจะส่งค่าที่สอดคล้องกัน:

# fragmento clave
if LABELS] == "Con_mascarilla":
    ser.write(b'P')
else:
    ser.write(b'N')

ตัวอย่างนี้แสดงให้เห็นถึงพลังของการผสมผสานระหว่าง Python และ Arduinoเนื่องจากช่วยให้สามารถเชื่อมโยงโลกกายภาพเข้ากับอัลกอริทึมที่ซับซ้อน เช่น การจดจำใบหน้าหรือการตรวจจับวัตถุได้

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


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา