جدول المحتويات:

أجهزة Raspberry PI Multiple I2C: 3 خطوات
أجهزة Raspberry PI Multiple I2C: 3 خطوات

فيديو: أجهزة Raspberry PI Multiple I2C: 3 خطوات

فيديو: أجهزة Raspberry PI Multiple I2C: 3 خطوات
فيديو: Arduino interface with Raspberry Pi using I2C 2024, يوليو
Anonim
أجهزة Raspberry PI متعددة I2C
أجهزة Raspberry PI متعددة I2C
أجهزة Raspberry PI متعددة I2C
أجهزة Raspberry PI متعددة I2C

محبط لأنه لا يمكنك استخدام مضاعفات نفس أجهزة I2C في مشروعك. لا حاجة لاستخدام معددات إرسال بطيئة. تدعم أحدث نواة raspbian إنشاء حافلات I2C متعددة باستخدام دبابيس GPIO. هذا الحل سريع للغاية.

الخطوة 1: بعض أوامر شل

بعض شركات شل
بعض شركات شل

قم بتوصيل أحد أجهزتك i2c أثناء تشغيل raspberry pi ، وابدأ تشغيل raspberry Pi وقم بتشغيله

sudo i2cdetect -y 1

سترى جدول كما في الشكل المرفق. لقد قمت بإرفاق مستشعر درجة الحرارة والضغط الجوي BMP280. عنوان i2c هو 0x76 طبقًا للجدول. لاحظ هذا العنوان.

افعل هذا لجميع أجهزة i2c الخاصة بك.

الخطوة 2: الحالة الأولى: أجهزة I2c لها نفس العنوان

الحالة الأولى: أجهزة I2c لها نفس العنوان
الحالة الأولى: أجهزة I2c لها نفس العنوان

كانت هذه دائمًا هي القضية الإشكالية. يمكن لحافلة i2c التعامل مع أجهزة متعددة ، ولكن يجب أن يكون لها عناوين i2c مختلفة. تحتوي بعض أجهزة i2c على وصلات عبور لتعيين عناوين i2c أخرى ، لكن الكثير منها لا يفعل ذلك. في هذه الحالة ، يمكنك استخدام مُضاعِف i2c (جهاز) لتدوير i2c SDA (البيانات) و SCL (الساعة) أو يمكنك إنشاء ناقل i2c إضافي أو أكثر.

سوف أقوم بإنشاء حافلتين إضافيتين ، nl bus 3 و 4

فتح cli وتشغيل

مؤتمر نزع السلاح / التمهيد

sudo نانو config.txt

أضف السطر التالي من التعليمات البرمجية ، ويفضل في القسم الذي يتم فيه تمكين spi و i2c.

dtoverlay = i2c-gpio ، ناقل = 4 ، i2c_gpio_delay_us = 1 ، i2c_gpio_sda = 23 ، i2c_gpio_scl = 24

سينشئ هذا الخط ناقل i2c إضافي (ناقل 4) على GPIO 23 مثل SDA و GPIO 24 مثل SCL (GPIO 23 و 24 هي الإعدادات الافتراضية)

أضف أيضًا السطر التالي لإنشاء i2c bus 3

dtoverlay = i2c-gpio ، ناقل = 3 ، i2c_gpio_delay_us = 1 ، i2c_gpio_sda = 17 ، i2c_gpio_scl = 27

سيكون GPIO 17 هو SDA وسيكون GPIO 27 هو SCL لـ i2c bus 4.

Tipe control X للخروج.

ملاحظة حول ترقيم الحافلة والنظام:

لا تستخدم الحافلة 0 و 2 أبدًا ، فهي تستخدم لأشياء أخرى في اللوحة مثل eprom على القبعات وما إلى ذلك

لإصدار أبريل 2019 raspbian:

يجب أن تبدأ دائمًا بأعلى ناقل (الحافلة 4 في هذه الحالة) في ملف config.txt الخاص بك والعمل حتى تصل إلى أدنى ناقل (الحافلة 3).

يجب أن تكون الحافلة الأدنى دائمًا هي الحافلة رقم 3

إذا كنت بحاجة إلى 5 حافلات إضافية ، فيجب أن تكون الحافلات ثنائية بالترتيب 7 ، 6 ، 5 ، 4 ، 3

لم تكن هذه المشكلة في طلب الحافلة موجودة عندما تمت كتابة هذه التعليمات في الأصل. يبدو أنه تم إجراء تغييرات على النواة.

قم بإيقاف تشغيل PI الخاص بك ، وقم بتبديله من. قم بتوصيل أجهزة i2c الخاصة بك بالناقل 4 (SDA إلى GPIO 23 و SCL إلى GPIO 24) والآخر بـ i2c bus 3 (SDA إلى GPIO 17 و SCL إلى GPIO 27).

قم بتشغيل pi.

يركض:

sudo i2cdetect -l (أحرف صغيرة L)

سترى الآن أن i2c bus 3 و 4 مدرجان أيضًا. تشغيل أيضًا:

سودو i2cdetect -y 3

sudo i2cdetect -y 4

الآن يمكنك استخدام المستشعر الخاص بك بلغة البرمجة الخاصة بك. تذكر أن تحدد حافلات i2c الصحيحة.

Attach هو مثال على مستشعر درجة الحرارة والضغط BMP280 الشهير. لا يوجد معدد إرسال يمكنه قراءة 2 BMP280s بهذه السرعة.

يتم أيضًا إرفاق مثال على مستشعرين Sensirion SDP 810. مرة أخرى تعمل بشكل أسرع بكثير من معدد الإرسال الذي استخدمته في الماضي

لقد أنشأت كود Python لقراءة اثنين من BMP388s جديدين من adafruit.

يمكنني أيضًا إضافة مستشعرات أخرى في المستقبل إلى

الخطوة 3: الحالة 2: عناوين I2c مختلفة

بسيط. i2c حافلة. الغرض من الحافلة هو التواصل مع أجهزة متعددة. قم بتوصيل الأجهزة الموازية لنفس ناقل i2c. يمكنك استخدام الحافلة الأولى.

يركض:

sudo i2cdetect -y 1

سترى الأجهزة المدرجة.

موصى به: