فهرست مطالب:

Raspberry PI Multile I2C Devices: 3 Step
Raspberry PI Multile I2C Devices: 3 Step

تصویری: Raspberry PI Multile I2C Devices: 3 Step

تصویری: Raspberry PI Multile I2C Devices: 3 Step
تصویری: I2C on the Raspberry Pi - HOW TO use I2C with Python 2024, جولای
Anonim
Raspberry PI Multile I2C Devices
Raspberry PI Multile I2C Devices
Raspberry PI Multile I2C Devices
Raspberry PI Multile I2C Devices

ناامید شده اید زیرا نمی توانید از چندین دستگاه از دستگاه های I2C یکسان در پروژه خود استفاده کنید. نیازی به استفاده از مولتی پلکسرهای کند نیست. جدیدترین هسته raspbian از ایجاد چندین اتوبوس I2C با استفاده از پین های GPIO پشتیبانی می کند. این راه حل فوق سریع است.

مرحله 1: برخی دستورات پوسته

برخی از دستورات پوسته
برخی از دستورات پوسته

یکی از دستگاه های i2c خود را در حالی که رزبری پای شما از آن متصل شده است ، raspberry pi خود را راه اندازی کرده و اجرا کنید

sudo i2cdetect -y 1

شما یک جدول مانند شکل ضمیمه مشاهده خواهید کرد. من یک سنسور دما و فشار فشارسنج BMP280 وصل کرده ام. آدرس i2c طبق جدول 0x76 است. به این آدرس توجه کنید.

این کار را برای همه دستگاه های i2c انجام دهید.

مرحله 2: مورد اول: دستگاه های I2c آدرس یکسانی دارند

مورد اول: دستگاههای I2c آدرس یکسانی دارند
مورد اول: دستگاههای I2c آدرس یکسانی دارند

این همیشه مورد مشکل ساز بود. یک گذرگاه i2c می تواند چندین دستگاه را اداره کند ، اما باید آدرس i2c متفاوتی داشته باشند. برخی از دستگاههای i2c برای تنظیم آدرسهای دیگر i2c دارای jumper هستند ، اما بسیاری دیگر ندارند. در این حالت شما می توانید از یک نرم افزار i2c (سخت افزار) برای چرخاندن i2c SDA (Data) و SCL (Clock) استفاده کنید یا می توانید یک گذرگاه i2c یا بیشتر ایجاد کنید.

من دو اتوبوس اضافی ایجاد می کنم ، nl bus 3 و 4

cli را باز کرده و اجرا کنید

سی دی /بوت

sudo nano config.txt

خط زیر را ترجیحاً در قسمتی که spi و i2c فعال است اضافه کنید.

dtoverlay = i2c-gpio ، bus = 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 3 اضافه کنید

dtoverlay = i2c-gpio ، bus = 3 ، i2c_gpio_delay_us = 1 ، i2c_gpio_sda = 17 ، i2c_gpio_scl = 27

GPIO 17 SDA و GPIO 27 SCL برای گذرگاه i2c 4 خواهد بود.

برای خروج روی کنترل X ضربه بزنید.

توجه به شماره گذرگاه و ترتیب:

هرگز از گذرگاه 0 و 2 استفاده نکنید ، برای موارد دیگر در برد مانند eprom روی کلاه و غیره استفاده می شود

برای انتشار raspbian آوریل 2019:

شما همیشه باید از بالاترین گذرگاه (در این مورد گذرگاه 4) در config.txt خود شروع کرده و به پایین ترین اتوبوس (گذرگاه 3) بروید.

پایین ترین اتوبوس همیشه باید اتوبوس 3 باشد

اگر به 5 اتوبوس اضافی نیاز دارید ، اتوبوس ها باید به ترتیب 7 ، 6 ، 5 ، 4 ، 3

وقتی این دستورالعمل در اصل نوشته شد ، این مشکل در سفارش اتوبوس وجود نداشت. به نظر می رسد تغییراتی در هسته ایجاد شده است.

PI خود را خاموش کنید ، آن را تغییر دهید. دستگاه های i2c خود را به گذرگاه 4 (SDA به GPIO 23 و SCL به GPIO 24) و دستگاه دیگر را به گذرگاه i2c 3 (SDA به GPIO 17 و SCL به GPIO 27) وصل کنید.

pi را روشن کنید.

اجرا کن:

sudo i2cdetect -l (حروف کوچک L)

اکنون خواهید دید که گذرگاه i2c 3 و 4 نیز فهرست شده است. همچنین اجرا کنید:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

اکنون می توانید از سنسور خود در زبان برنامه نویسی خود استفاده کنید. به یاد داشته باشید که گذرگاه های صحیح i2c را مشخص کنید.

ضمیمه نمونه ای برای سنسور محبوب دما و فشار BMP280 است. هیچ مالتی پلکسری نمی تواند 2 BMP280 را با این سرعت بخواند.

نمونه ای از 2 سنسور Sensirion SDP 810 نیز ضمیمه شده است. باز هم بسیار سریعتر از مولتی پلکسری که در گذشته استفاده می کردم

من کد پایتون را برای خواندن دو BMP388 جدید از adafruit ایجاد کردم.

همچنین ممکن است در آینده سنسورهای دیگری را به https://github.com/JJSlabbert/Raspberry_PI_i2C_conficts اضافه کنم

مرحله 3: مورد 2: آدرس های مختلف I2c

ساده. i2c یک اتوبوس است. یک اتوبوس برای برقراری ارتباط با چندین دستگاه است. دستگاهها را به موازات همان گذرگاه i2c متصل کنید. می توانید از اتوبوس یک استفاده کنید.

اجرا کن:

sudo i2cdetect -y 1

دستگاه های ذکر شده را مشاهده خواهید کرد.

توصیه شده: