التواصل مع Arduino باستخدام Raspberry Pi

Communicating with an Arduino Using a Raspberry Pi

يمكن لـ Raspberry Pi و Arduino التواصل مع بعضهما البعض باستخدام بروتوكولات مختلفة ، بما في ذلك المسلسل (UART) ، I2C ، و SPI. سيوضح لك هذا الدليل كيفية إعداد التواصل بين Raspberry Pi و Arduino باستخدام الواجهة التسلسلية (UART)، وهي الطريقة الأكثر شيوعًا والمباشرة.


ماذا ستحتاج

  1. التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
  2. أردوينو (على سبيل المثال ، UNO ، Mega ، Nano)
  3. كابل USB (لتوصيل Arduino بالتوت PI)
  4. الأسلاك الطائر (إذا كان استخدام الاتصالات التسلسلية GPIO)
  5. بيثون مثبت على التوت PI
  6. Arduino IDE مثبت على Raspberry Pi أو جهاز كمبيوتر منفصل

الخطوة 1: توصيل Arduino إلى Raspberry Pi

يمكنك توصيل Raspberry Pi بـ Arduino باستخدام USB أو دبابيس GPIO.

الطريقة 1: اتصال USB (موصى به)

  1. توصيل Arduino إلى Raspberry Pi باستخدام كابل USB.
  2. سوف يكتشف Raspberry Pi Arduino كجهاز تسلسلي (على سبيل المثال ، /dev/ttyUSB0 أو /dev/ttyACM0).

الطريقة 2: استخدام دبابيس GPIO (مسلسل الأجهزة)

  1. توصيل Arduino TX (PIN 1) ل Raspberry Pi Rx (GPIO 15 ، PIN 10).
  2. توصيل Arduino RX (PIN 0) ل Raspberry Pi TX (GPIO 14 ، PIN 8).
  3. يتصل GND إلى GND.
  4. تعطيل وحدة التحكم التسلسلية المدمجة في Raspberry Pi:
    sudo raspi-config
    
    • انتقل إلى خيارات الواجهة> المنفذ التسلسلي.
    • تعطيل قذيفة تسجيل الدخول على تسلسل ولكن تمكين أجهزة المنفذ التسلسلي.
    • أعد تشغيل Raspberry Pi:
      sudo reboot
      

الخطوة 2: تثبيت المكتبات المطلوبة

تأكد من أن Raspberry Pi الخاص بك لديه أدوات الاتصال التسلسلية الضرورية المثبتة.

sudo apt update
sudo apt install python3-serial

للتحقق من المنافذ التسلسلية المتاحة:

ls /dev/tty*

لاتصال USB ، ابحث عن /dev/ttyUSB0 أو /dev/ttyACM0.


الخطوة 3: تحميل رسم Arduino

لإرسال بيانات من Arduino إلى Raspberry Pi ، قم بتحميل هذا بسيط رسم Arduino باستخدام Arduino IDE.

void setup() {
  Serial.begin(9600); // Start serial communication
}

void loop() {
  Serial.println("Hello from Arduino!"); // Send message
  delay(1000);
}

الخطوة 4: اقرأ البيانات التسلسلية على Raspberry Pi

قم بإنشاء نص Python على Raspberry Pi لقراءة البيانات من Arduino.

مثال رمز بيثون

import serial
import time

# Open the serial port (Change ttyUSB0 if necessary)
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
time.sleep(2)  # Wait for connection

try:
    while True:
        if ser.in_waiting > 0:
            data = ser.readline().decode('utf-8').strip()
            print(f"Received: {data}")
except KeyboardInterrupt:
    print("Exiting...")
    ser.close()
  • تأكد من ذلك /dev/ttyUSB0 يطابق منفذ التسلسلي المكتشف.
  • قم بتشغيل البرنامج النصي:
    python3 serial_read.py
    
  • يجب أن ترى "مرحبا من أردوينو!" طبعت كل ثانية.

الخطوة 5: إرسال البيانات من Raspberry Pi إلى Arduino

تعديل رمز Arduino لتلقي البيانات من Raspberry Pi:

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

void loop() {
  if (Serial.available() > 0) {
    String received = Serial.readStringUntil('\\n');
    Serial.print("Raspberry Pi Sent: ");
    Serial.println(received);
  }
}

تعديل كود بيثون لإرسال البيانات إلى Arduino:

ser.write(b"Hello from Raspberry Pi!\\n")
  • الآن ، سيتلقى Arduino رسائل ترسلها Raspberry Pi.

طرق الاتصال البديلة

  1. اتصال I2C (للعديد من Arduinos)

    • يتصرف التوت بي كـ يتقن، Arduino يعمل كـ عبد.
    • تمكين I2C:
      sudo raspi-config
      
    • تثبيت المكتبات المطلوبة:
      sudo apt install python3-smbus i2c-tools
      
    • يستخدم Wire.h على جانب Arduino للاتصال I2C.
  2. اتصال SPI (لنقل البيانات عالي السرعة)

    • يتطلب Arduino الممكّن من SPI و SPI.h مكتبة.
    • أسرع من UART و I2C ولكن يتطلب المزيد من الأسلاك.

استكشاف الأخطاء وإصلاحها

  1. لم يتم اكتشاف Arduino على Raspberry Pi

    • يجري ls /dev/tty* للتحقق من الأجهزة التسلسلية المتاحة.
    • تأكد من تحديد المنفذ التسلسلي الصحيح في البرنامج النصي Python.
  2. تم رفض الإذن خطأ

    • أضف المستخدم الخاص بك إلى dialout مجموعة:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. أحرف القمامة في الإخراج

    • يضمن يستخدم كلا الجهازين نفس معدل باود (على سبيل المثال ، 9600).
    • أضف تأخيرًا صغيرًا (time.sleep(2)) قبل قراءة البيانات في بيثون.

خاتمة

باتباع هذا الدليل ، يمكنك إنشاء التواصل التسلسلي بين Arduino و Raspberry Pi ، مما يسمح لهم بتبادل البيانات مشاريع إنترنت الأشياء ، تكامل المستشعرات ، وأنظمة التشغيل الآلي. تجربة مع I2C و SPI لمزيد من التطبيقات المتقدمة!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.