คุณรู้หรือไม่ว่าคุณสามารถควบคุมบอร์ด 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 ของคุณกลับมามีชีวิตอีกครั้ง คอมโบนี้ถือเป็นทางเลือกที่ดีอย่างแน่นอน