يتيح لك التواصل بين Python و Arduino UNO على المسلسل التحكم في الأجهزة باستخدام البرامج النصية Python أو إرسال بيانات من Arduino إلى Python للمعالجة. سيوجهك هذا البرنامج التعليمي من خلال إعداد واستخدام Python للتواصل مع Arduino UNO على اتصال متسلسل.
ماذا ستحتاج
- Arduino Uno مع كابل USB
- Python مثبت على جهاز الكمبيوتر الخاص بك (الإصدار 3.x موصى به)
- Arduino IDE مثبتة
- مكتبة للاتصال التسلسلي لـ Python (على سبيل المثال ،
pyserial
)
الخطوة 1: تثبيت البرنامج المطلوب
1. تثبيت بيثون
إذا لم يكن لديك تثبيت Python ، فقم بتنزيله من Python.org واتبع تعليمات التثبيت.
2. قم بتثبيت Arduino IDE
قم بتنزيل وتثبيت Arduino IDE من Arduino.cc.
3. تثبيت مكتبة Pyserial
مطلوب Pyserial لبيثون للتواصل عبر المنافذ التسلسلية. تثبيته باستخدام الأمر التالي:
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");
}
}
}
- افتح Arduino IDE.
- الصق الكود أعلاه في المحرر.
- حدد الصحيح سبورة و ميناء تحت أدوات قائمة طعام.
- انقر رفع لتحميل الرمز إلى Arduino Uno.
الخطوة 3: اكتب رمز Python
فيما يلي مثال على نص Python للتواصل مع Arduino:
كود بيثون
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: اختبار الإعداد
- قم بتوصيل Arduino بجهاز الكمبيوتر الخاص بك عبر USB.
- ابحث عن منفذ Arduino:
- على Windows: تحقق من المنفذ في مدير الأجهزة (على سبيل المثال ، COM3).
- على macos/linux: استخدم
ls /dev/tty.*
الأمر للعثور على المنفذ الصحيح (على سبيل المثال ،/dev/ttyUSB0
).
- تحديث
port
القيمة في البرنامج النصي Python لتتناسب مع منفذ Arduino الخاص بك. - قم بتشغيل البرنامج النصي Python باستخدام الأمر:
python your_script_name.py
- راقب التواصل بين Python و Arduino في الشاشة الطرفية والسلسلة.
تطبيقات اتصال Python-arduino
- أتمتة مهام الأجهزة (على سبيل المثال ، تشغيل مصابيح LED ، والسيطرة على المحركات)
- تسجيل بيانات مستشعر التسجيل إلى ملف أو قاعدة بيانات
- إنشاء واجهة المستخدم الرسومية المخصصة لمشاريع Arduino باستخدام مكتبات Python مثل Tkinter أو Pyqt
- دمج Arduino مع منصات إنترنت الأشياء
استكشاف الأخطاء وإصلاحها
-
لا علاقة لأردوينو:
- تأكد من تحديد المنفذ الصحيح في البرنامج النصي Python.
- تحقق من أن معدل باود يتطابق مع رسم Arduino.
-
لا استجابة من أردوينو:
- أضف تأخير بعد فتح الاتصال التسلسلي (
time.sleep(2)
). - تأكد من عدم استخدام Arduino بواسطة برنامج آخر (على سبيل المثال ، الشاشة التسلسلية في Arduino IDE).
- أضف تأخير بعد فتح الاتصال التسلسلي (
-
UnicodedEcodeerror:
- تحقق من ترميز البيانات التي يتم إرسالها/استلامها. يستخدم
.decode(errors='ignore')
إذا لزم الأمر.
- تحقق من ترميز البيانات التي يتم إرسالها/استلامها. يستخدم
خاتمة
لقد نجحت في إعداد التواصل بين Python و Arduino UNO على المسلسل. هذا يفتح إمكانيات لا نهاية لها لدمج مكتبات Python القوية مع إمكانات أجهزة Arduino. جرب المزيد من خلال إضافة أجهزة استشعار أو محركات أو إنشاء واجهة المستخدم الرسومية المستندة إلى Python لمشاريعك!