يمكن لـ Raspberry Pi و Arduino التواصل مع بعضهما البعض باستخدام بروتوكولات مختلفة ، بما في ذلك المسلسل (UART) ، I2C ، و SPI. سيوضح لك هذا الدليل كيفية إعداد التواصل بين Raspberry Pi و Arduino باستخدام الواجهة التسلسلية (UART)، وهي الطريقة الأكثر شيوعًا والمباشرة.
ماذا ستحتاج
- التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
- أردوينو (على سبيل المثال ، UNO ، Mega ، Nano)
- كابل USB (لتوصيل Arduino بالتوت PI)
- الأسلاك الطائر (إذا كان استخدام الاتصالات التسلسلية GPIO)
- بيثون مثبت على التوت PI
- Arduino IDE مثبت على Raspberry Pi أو جهاز كمبيوتر منفصل
الخطوة 1: توصيل Arduino إلى Raspberry Pi
يمكنك توصيل Raspberry Pi بـ Arduino باستخدام USB أو دبابيس GPIO.
الطريقة 1: اتصال USB (موصى به)
- توصيل Arduino إلى Raspberry Pi باستخدام كابل USB.
- سوف يكتشف Raspberry Pi Arduino كجهاز تسلسلي (على سبيل المثال ، /dev/ttyUSB0أو/dev/ttyACM0).
الطريقة 2: استخدام دبابيس GPIO (مسلسل الأجهزة)
- توصيل Arduino TX (PIN 1) ل Raspberry Pi Rx (GPIO 15 ، PIN 10).
- توصيل Arduino RX (PIN 0) ل Raspberry Pi TX (GPIO 14 ، PIN 8).
- يتصل GND إلى GND.
- تعطيل وحدة التحكم التسلسلية المدمجة في 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.
طرق الاتصال البديلة
- 
اتصال I2C (للعديد من Arduinos) - يتصرف التوت بي كـ يتقن، Arduino يعمل كـ عبد.
- تمكين I2C:
sudo raspi-config
- تثبيت المكتبات المطلوبة:
sudo apt install python3-smbus i2c-tools
- يستخدم Wire.hعلى جانب Arduino للاتصال I2C.
 
- 
اتصال SPI (لنقل البيانات عالي السرعة) - يتطلب Arduino الممكّن من SPI و SPI.hمكتبة.
- أسرع من UART و I2C ولكن يتطلب المزيد من الأسلاك.
 
- يتطلب Arduino الممكّن من SPI و 
استكشاف الأخطاء وإصلاحها
- 
لم يتم اكتشاف Arduino على Raspberry Pi - يجري ls /dev/tty*للتحقق من الأجهزة التسلسلية المتاحة.
- تأكد من تحديد المنفذ التسلسلي الصحيح في البرنامج النصي Python.
 
- يجري 
- 
تم رفض الإذن خطأ - أضف المستخدم الخاص بك إلى dialoutمجموعة:sudo usermod -aG dialout $USER sudo reboot
 
- أضف المستخدم الخاص بك إلى 
- 
أحرف القمامة في الإخراج - يضمن يستخدم كلا الجهازين نفس معدل باود (على سبيل المثال ، 9600).
- أضف تأخيرًا صغيرًا (time.sleep(2)) قبل قراءة البيانات في بيثون.
 
- يضمن يستخدم كلا الجهازين نفس معدل باود (على سبيل المثال ، 
خاتمة
باتباع هذا الدليل ، يمكنك إنشاء التواصل التسلسلي بين Arduino و Raspberry Pi ، مما يسمح لهم بتبادل البيانات مشاريع إنترنت الأشياء ، تكامل المستشعرات ، وأنظمة التشغيل الآلي. تجربة مع I2C و SPI لمزيد من التطبيقات المتقدمة!
 
             
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  