يمكن لـ 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:
- انتقل إلى خيارات الواجهة> المنفذ التسلسلي.
- تعطيل قذيفة تسجيل الدخول على تسلسل ولكن تمكين أجهزة المنفذ التسلسلي.
- أعد تشغيل Raspberry Pi:
الخطوة 2: تثبيت المكتبات المطلوبة
تأكد من أن Raspberry Pi الخاص بك لديه أدوات الاتصال التسلسلية الضرورية المثبتة.
للتحقق من المنافذ التسلسلية المتاحة:
لاتصال USB ، ابحث عن /dev/ttyUSB0
أو /dev/ttyACM0
.
الخطوة 3: تحميل رسم Arduino
لإرسال بيانات من Arduino إلى Raspberry Pi ، قم بتحميل هذا بسيط رسم Arduino باستخدام Arduino IDE.
الخطوة 4: اقرأ البيانات التسلسلية على Raspberry Pi
قم بإنشاء نص Python على Raspberry Pi لقراءة البيانات من Arduino.
مثال رمز بيثون
- تأكد من ذلك
/dev/ttyUSB0
يطابق منفذ التسلسلي المكتشف. - قم بتشغيل البرنامج النصي:
- يجب أن ترى "مرحبا من أردوينو!" طبعت كل ثانية.
الخطوة 5: إرسال البيانات من Raspberry Pi إلى Arduino
تعديل رمز Arduino لتلقي البيانات من Raspberry Pi:
تعديل كود بيثون لإرسال البيانات إلى Arduino:
- الآن ، سيتلقى Arduino رسائل ترسلها Raspberry Pi.
طرق الاتصال البديلة
-
اتصال I2C (للعديد من Arduinos)
- يتصرف التوت بي كـ يتقن، Arduino يعمل كـ عبد.
- تمكين I2C:
- تثبيت المكتبات المطلوبة:
- يستخدم
Wire.h
على جانب Arduino للاتصال I2C.
-
اتصال SPI (لنقل البيانات عالي السرعة)
- يتطلب Arduino الممكّن من SPI و
SPI.h
مكتبة. - أسرع من UART و I2C ولكن يتطلب المزيد من الأسلاك.
- يتطلب Arduino الممكّن من SPI و
استكشاف الأخطاء وإصلاحها
-
لم يتم اكتشاف Arduino على Raspberry Pi
- يجري
ls /dev/tty*
للتحقق من الأجهزة التسلسلية المتاحة. - تأكد من تحديد المنفذ التسلسلي الصحيح في البرنامج النصي Python.
- يجري
-
تم رفض الإذن خطأ
- أضف المستخدم الخاص بك إلى
dialout
مجموعة:
- أضف المستخدم الخاص بك إلى
-
أحرف القمامة في الإخراج
- يضمن يستخدم كلا الجهازين نفس معدل باود (على سبيل المثال ،
9600
). - أضف تأخيرًا صغيرًا (
time.sleep(2)
) قبل قراءة البيانات في بيثون.
- يضمن يستخدم كلا الجهازين نفس معدل باود (على سبيل المثال ،
خاتمة
باتباع هذا الدليل ، يمكنك إنشاء التواصل التسلسلي بين Arduino و Raspberry Pi ، مما يسمح لهم بتبادل البيانات مشاريع إنترنت الأشياء ، تكامل المستشعرات ، وأنظمة التشغيل الآلي. تجربة مع I2C و SPI لمزيد من التطبيقات المتقدمة!