Мазмуну:

Raspberry PI бир нече I2C түзмөктөрү: 3 кадам
Raspberry PI бир нече I2C түзмөктөрү: 3 кадам

Video: Raspberry PI бир нече I2C түзмөктөрү: 3 кадам

Video: Raspberry PI бир нече I2C түзмөктөрү: 3 кадам
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 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

I2c түзмөктөрүңүздүн бирин туташтырыңыз, малина пиңиз турганда, малина пиңизди баштаңыз жана чуркаңыз

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 боюнча кошумча i2c автобусун (4 -автобус) түзөт (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 i2c автобус 4 үчүн SCL болот.

Чыгуу үчүн X түрүн көзөмөлдөө.

Автобустун номери жана тартиби жөнүндө эскертүү:

0 жана 2 автобусту эч качан колдонбоңуз, бул тактадагы башка нерселер үчүн колдонулат, шляпалардагы eprom ж

2019 -жылдын апрель айында raspbian чыгарылышы үчүн:

Сиз ар дайым config.txt файлыңыздын эң бийик автобусунан (4 -автобус) баштаңыз жана эң төмөнкү автобуска чейин иштеңиз (3 -автобус).

Эң төмөн автобус дайыма 3 -автобус болушу керек

Эгер сизге 5 кошумча автобус керек болсо, автобустар 7, 6, 5, 4, 3 иретинде би болушу керек

Автобустун заказы боюнча бул маселе бул Нускама башында жазылганда болгон эмес. Ядрого өзгөртүүлөр киргизилген окшойт.

Пиңизди өчүрүп коюңуз. I2c түзмөктөрүңүздү 4 -автобуска (SDA GPIO 23кө жана SCL GPIO 24кө), экинчиси i2c автобус 3кө (SDA GPIO 17ге жана SCL GPIO 27ге) туташтырыңыз.

Пити күйгүзүңүз.

Чуркоо:

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 кодун түздүм.

Мен келечекте башка сенсорлорду кошо алам

3 -кадам: Case 2: Ар түрдүү I2c даректери

Жөнөкөй. i2c - бул автобус. Автобустун максаты - бир нече түзмөк менен байланышуу. Түзмөктөрдү бир эле i2c шинасына туташтырыңыз. Сиз автобусту колдоно аласыз.

Чуркоо:

sudo i2cdetect -y 1

Сиз тизмеленген түзмөктөрдү көрөсүз.

Сунушталууда: