Агуулгын хүснэгт:

Raspberry PI олон I2C төхөөрөмжүүд: 3 алхам
Raspberry PI олон I2C төхөөрөмжүүд: 3 алхам

Видео: Raspberry PI олон I2C төхөөрөмжүүд: 3 алхам

Видео: Raspberry PI олон I2C төхөөрөмжүүд: 3 алхам
Видео: MJC Stream: Видишь енота? А он есть! Главное об ML и компьютерном зрении 2024, Долдугаар сарын
Anonim
Raspberry PI олон I2C төхөөрөмжүүд
Raspberry PI олон I2C төхөөрөмжүүд
Raspberry PI олон I2C төхөөрөмжүүд
Raspberry PI олон I2C төхөөрөмжүүд

Та төсөлдөө ижил I2C төхөөрөмжүүдийг ашиглах боломжгүй байгаа тул сэтгэл дундуур байна. Удаан мультиплексор ашиглах шаардлагагүй. Хамгийн сүүлийн үеийн raspbian цөм нь GPIO тээглүүр ашиглан олон I2C автобус үүсгэхийг дэмждэг. Энэхүү шийдэл нь маш хурдан юм.

Алхам 1: Зарим Shell Comands

Зарим Shell Comands
Зарим Shell Comands

Таны бөөрөлзгөнө pi байгаа үед i2c төхөөрөмжүүдийнхөө нэгийг холбож, бөөрөлзгөнө pi -ээ эхлүүлээд ажиллуулна уу

sudo i2cdetect -y 1

Хавсралт дээрх шиг хүснэгтийг харах болно. Би BMP280 температур ба барометрийн даралт мэдрэгчийг хавсаргасан. I2c хаяг нь хүснэгтийн дагуу 0x76 байна. Энэ хаягийг анхаарна уу.

Үүнийг i2c төхөөрөмжүүдийнхээ төлөө хий.

Алхам 2: Нэгдүгээр тохиолдол: I2c төхөөрөмжүүд ижил хаягтай байна

Нэгдүгээр тохиолдол: I2c төхөөрөмжүүд ижил хаягтай байна
Нэгдүгээр тохиолдол: I2c төхөөрөмжүүд ижил хаягтай байна

Энэ нь үргэлж асуудалтай байсан. I2c автобус нь олон төхөөрөмжтэй ажиллах боломжтой боловч өөр өөр i2c хаягтай байх ёстой. Зарим i2c төхөөрөмжүүд нь бусад i2c хаягийг тохируулах холбогчтой боловч ихэнх нь байдаггүй. Энэ тохиолдолд та i2c SDA (Өгөгдөл) ба SCL (Цаг) эргүүлэхийн тулд i2c мультиплексор (тоног төхөөрөмж) ашиглаж болно, эсвэл нэмэлт i2c автобус эсвэл түүнээс дээш үүсгэж болно.

Би nl автобус 3 ба 4 гэсэн хоёр нэмэлт автобус бий болгоно

Клипийг нээгээд ажиллуулна уу

cd /boot

sudo nano config.txt

Дараах кодын мөрийг spi болон i2c идэвхжүүлсэн хэсэгт нэмж оруулаарай.

dtoverlay = i2c-gpio, bus = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

Энэ шугам нь GPIO 23 дээр SDA, GPIO 24 дээр SCL (GPIO 23 ба 24 нь анхдагчаар) хэлбэрээр нэмэлт i2c автобус (4 -р автобус) үүсгэх болно.

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 нь i2c 4 автобусны SCL байх болно.

Гарах бол X товчлуурыг дарна уу.

Автобусны дугаарлалт, захиалгын талаархи тэмдэглэл:

0, 2 автобусыг хэзээ ч бүү ашиглаарай, энэ нь малгай дээрх eprom гэх мэт самбар дээрх бусад зүйлд ашиглагддаг

2019 оны 4 -р сарын raspbian хувилбарын хувьд:

Та config.txt файлдаа үргэлж хамгийн өндөр автобуснаас (энэ тохиолдолд 4 -р автобус) эхэлж хамгийн бага автобус руу явах ёстой (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 мэдрэгчийн жишээг мөн хавсаргасан болно. Дахин хэлэхэд миний урьд өмнө ашиглаж байсан мультиплексээс хамаагүй хурдан ажилладаг

Би adafruit -аас хоёр шинэ BMP388 уншихын тулд python кодыг бүтээсэн.

Би ирээдүйд https://github.com/JJSlabbert/Raspberry_PI_i2C_confict -т бусад мэдрэгчүүдийг нэмж болно.

Алхам 3: Кейс 2: Янз бүрийн I2c хаяг

Энгийн. i2c бол автобус юм. Автобусны зорилго бол олон төхөөрөмжтэй харилцах явдал юм. Төхөөрөмжүүдийг ижил i2c автобустай зэрэгцээ холбоно уу. Та нэг автобус ашиглаж болно.

Ажиллуулах:

sudo i2cdetect -y 1

Та жагсаасан төхөөрөмжүүдийг харах болно.

Зөвлөмж болгож буй: