كيفية برمجة Arduino باستخدام Python: دليل كامل وأمثلة

  • تتيح مكتبة PySerial التواصل بشكل سلس بين Arduino وPython عبر المنفذ التسلسلي.
  • من الممكن إرسال الأوامر واستقبال البيانات بين لوحات Arduino وبرامج Python بسهولة.
  • يؤدي التكامل مع معالجة الصور باستخدام OpenCV إلى توسيع قدرات Arduino.
  • يمكن أتمتة المهام الإلكترونية عن طريق الجمع بين Python وأجهزة الاستشعار والمحركات 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 UNO أو النانو.
  • كابل USB لتوصيل Arduino بالكمبيوتر الخاص بك.
  • Python مثبتًا على جهاز الكمبيوتر الخاص بك. يمكنك الحصول عليه من الموقع الرسمي لبايثون.
  • تثبيت PySerial، المكتبة التي تمكن الاتصال التسلسلي بين Arduino وPython. يمكنك تثبيته عن طريق تشغيله في المحطة الطرفية:
pip install pyserial

PySerial هي القطعة الأساسية الذي يسمح لنا بإرسال الأوامر من بايثون وتلقي الاستجابات من أردوينو كما لو كنا نتحدث مع روبوت إلكتروني.

الخطوة 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 المسؤول عن إرسال الأوامر:

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. نص بايثون لقراءة القيم

من بايثون يمكننا قراءة هذه البيانات وعرضها على الشاشة:

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)

تسمح لنا هذه الحلقة البسيطة بعرض القيم المقاسة مباشرة على محطتنا.

إرسال البيانات من بايثون إلى أردوينو مع أمثلة عملية

دعونا نلقي نظرة على مثال آخر حيث نرسل رقمًا من 1 إلى 9 من Python، ويقوم Arduino بوميض LED هذا العدد من المرات:

رسم تخطيطي في اردوينو

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);
      }
    }
  }
}

نص بايثون لإرسال القيمة

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 بناءً على الكشف.

أردوينو: التحكم في اثنين من مصابيح 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);
    }
  }
}

بايثون مع 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 الخاصة بك حياة ثانية، فهذه المجموعة هي بالتأكيد الطريق الصحيح.