Mundarija:

Raspberry PI bir nechta I2C qurilmalari: 3 qadam
Raspberry PI bir nechta I2C qurilmalari: 3 qadam

Video: Raspberry PI bir nechta I2C qurilmalari: 3 qadam

Video: Raspberry PI bir nechta I2C qurilmalari: 3 qadam
Video: How to use SSD1306 128x64 OLED Display I2C with Arduino code 2024, Iyul
Anonim
Raspberry PI bir nechta I2C qurilmalari
Raspberry PI bir nechta I2C qurilmalari
Raspberry PI bir nechta I2C qurilmalari
Raspberry PI bir nechta I2C qurilmalari

Sizning loyihangizda bir xil I2C qurilmalarini ishlata olmaganingiz uchun xafa bo'ldingiz. Sekin multipleksorlardan foydalanish shart emas. Eng yangi raspbian yadrosi GPIO pinlari yordamida bir nechta I2C avtobuslarini yaratishni qo'llab -quvvatlaydi. Bu yechim juda tez.

1 -qadam: Ba'zi Shell buyruqlari

Ba'zi Shell Komandalar
Ba'zi Shell Komandalar

Sizning malina pi bo'lsa, i2c qurilmalaringizdan birini ulang, malina pi ni ishga tushiring va ishga tushiring

sudo i2cdetect -y 1

Siz qo'shimchadagi rasmdagi kabi jadvalni ko'rasiz. Menda BMP280 harorat va barometrik bosim sensori biriktirilgan. I2c manzili jadvalga muvofiq 0x76. Bu manzilga e'tibor bering.

Buni barcha i2c qurilmalaringiz uchun qiling.

2 -qadam: Birinchi holat: I2c qurilmalari bir xil manzilga ega

Birinchi holat: I2c qurilmalari bir xil manzilga ega
Birinchi holat: I2c qurilmalari bir xil manzilga ega

Bu har doim muammoli holat edi. I2c avtobusi bir nechta qurilmalarni boshqarishi mumkin, lekin ular har xil i2c manzillarga ega bo'lishi kerak. Ba'zi i2c qurilmalarida boshqa i2c manzillarini o'rnatish uchun o'tish moslamalari mavjud, lekin ko'pchilikda yo'q. Bunday holda siz i2c SDA (Ma'lumotlar) va SCL (Soat) ni aylantirish uchun i2c multipleksoridan (apparat) foydalanishingiz mumkin yoki qo'shimcha i2c avtobusini yoki undan ko'pini yaratishingiz mumkin.

Men ikkita qo'shimcha avtobus yarataman, nl avtobus 3 va 4

Klipni oching va ishga tushiring

CD /yuklash

sudo nano config.txt

Quyidagi kod qatorini qo'shing, spi va i2c yoqilgan bo'limda afzalroq.

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

Bu yo'nalish GPIO 23 -da SDA sifatida GPIO 24 -da qo'shimcha i2c avtobusini (4 -avtobus) yaratadi va SCL sifatida (GPIO 23 va 24 -standart)

I2c avtobus 3 yaratish uchun quyidagi qatorni qo'shing

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

GPIO 17 SDA bo'ladi va GPIO 27 i2c 4 -avtobus uchun SCL bo'ladi.

Chiqish uchun X tugmachasini bosing.

Avtobuslarni raqamlash va buyurtma berish haqida eslatma:

Hech qachon 0 va 2 -avtobuslardan foydalanmang, bu taxtadagi boshqa narsalar uchun, masalan, bosh kiyimdagi eprom va boshqalar

2019 yil aprel oyida raspbian versiyasi uchun:

Siz har doim config.txt -dagi eng yuqori avtobusdan (bu holda 4 -avtobus) boshlashingiz va eng past avtobusga o'tishingiz kerak (3 -avtobus).

Eng past avtobus har doim 3 -avtobus bo'lishi kerak

Agar sizga 5 ta qo'shimcha avtobus kerak bo'lsa, avtobuslar 7, 6, 5, 4, 3 tartibda bo'lishi kerak.

Dastlabki yo'riqnoma yozilganda, avtobus buyurtmasidagi bu muammo yo'q edi. Yadroga o'zgartirishlar kiritilganga o'xshaydi.

PI -ni o'chiring, o'chiring. I2c qurilmalaringizni 4 -avtobusga (SDA GPIO 23 va SCL GPIO 24 ga), ikkinchisi esa i2c 3 -avtobusga (SDA GPIO 17 ga va SCL GPIO 27 ga) ulang.

Pi -ni yoqing.

Yugurish:

sudo i2cdetect -l (kichik harf L)

Siz ko'rasiz, i2c 3 va 4 -avtobuslar ham ro'yxatda. Shuningdek ishga tushirish:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Endi siz sensorni dasturlash tilida ishlatishingiz mumkin. To'g'ri i2c avtobuslarini ko'rsatishni unutmang.

Qo'shish - mashhur BMP280 harorat va bosim sensori uchun namuna. Hech bir multipleksor 2 BMP280 -ni tez o'qiy olmaydi.

2 Sensirion SDP 810 datchiklariga misol ham ilova qilingan. Yana men ilgari ishlatgan multipleksorga qaraganda ancha tezroq ishlayapman

Men adafruitdan ikkita yangi BMP388 ni o'qish uchun python kodini yaratdim.

Kelgusida boshqa sensorlarni ham qo'shishim mumkin

3 -qadam: 2 -holat: Turli I2c manzillari

Oddiy. i2c - bu avtobus. Avtobusning maqsadi - bir nechta qurilmalar bilan aloqa qilish. Qurilmalarni bir xil i2c avtobusiga parallel ulang. Siz bitta avtobusdan foydalanishingiz mumkin.

Yugurish:

sudo i2cdetect -y 1

Siz ro'yxatga olingan qurilmalarni ko'rasiz.

Tavsiya: