Talaan ng mga Nilalaman:

Raspberry PI Maramihang Mga I2C Device: 3 Hakbang
Raspberry PI Maramihang Mga I2C Device: 3 Hakbang

Video: Raspberry PI Maramihang Mga I2C Device: 3 Hakbang

Video: Raspberry PI Maramihang Mga I2C Device: 3 Hakbang
Video: LDmicro 20: I2C Liquid Crystal Display Resolved(Microcontroller PLC Ladder Programming with LDmicro) 2024, Hulyo
Anonim
Raspberry PI Maramihang Mga I2C Device
Raspberry PI Maramihang Mga I2C Device
Raspberry PI Maramihang Mga I2C Device
Raspberry PI Maramihang Mga I2C Device

Nabigo dahil hindi ka makakagamit ng maraming mga parehong aparato I2C sa iyong proyekto. Hindi na kailangang gumamit ng mabagal na multiplexer. Sinusuportahan ng pinakabagong raspbian kernel ang paglikha ng maraming mga bus na I2C gamit ang mga GPIO pin. Ang solusyon na ito ay napakabilis.

Hakbang 1: Ang Ilang Mga Sumusumite ng Shell

Ilang Mga Shell na Nag-uutos
Ilang Mga Shell na Nag-uutos

Ikonekta ang isa sa iyong mga aparatong i2c habang ang iyong raspberry pi ay, simulan ang iyong raspberry pi at tumakbo

sudo i2cdetect -y 1

Makakakita ka ng isang talahanayan tulad ng sa kalakip na figure. Nag-attach ako ng isang BMP280 temp at barometric pressure sensor. Ang i2c address ay 0x76 ayon sa talahanayan. Tandaan ang address na ito.

Gawin ito para sa lahat ng iyong i2c device.

Hakbang 2: Isa sa Kaso: Ang Mga I2c Device ay Mayroong Parehong Address

Isa sa Kaso: Ang I2c Devices Ay May Parehong Address
Isa sa Kaso: Ang I2c Devices Ay May Parehong Address

Ito ang palaging ang may problemang kaso. Ang isang i2c bus ay maaaring hawakan ang maramihang mga aparato, ngunit dapat silang magkaroon ng iba't ibang mga i2c address. Ang ilang mga i2c aparato ay may mga jumper upang magtakda ng iba pang mga i2c address, ngunit marami ang hindi. Sa kasong ito maaari kang gumamit ng i2c multiplexer (hardware) upang paikutin ang i2c SDA (Data) at SCL (Clock) o maaari kang lumikha ng isang karagdagang i2c bus o higit pa.

Lilikha ako ng dalawang aditional busses, nl bus 3 at 4

Buksan ang Tala at patakbuhin

cd / boot

sudo nano config.txt

Idagdag ang sumusunod na linya ng code, mas mabuti sa seksyon kung saan pinagana ang spi at i2c.

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

Lilikha ang linyang ito ng isang aditional i2c bus (bus 4) sa GPIO 23 bilang SDA at GPIO 24 bilang SCL (GPIO 23 at 24 ay mga default)

Idagdag din ang sumusunod na linya upang lumikha ng i2c bus 3

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

Ang GPIO 17 ay ang SDA at ang GPIO 27 ay ang SCL para sa i2c bus 4.

Tipe control X upang lumabas.

Tandaan sa Pagnunumero ng Bus at order:

Huwag kailanman gumamit ng bus 0 at 2, ginagamit ito para sa iba pang mga bagay sa board tulad ng eprom sa mga sumbrero atbp

Para sa Abril 2019 na paglabas ng raspbian:

Dapat kang laging magsimula sa pinakamataas na bus (Bus 4 sa kasong ito) sa iyong config.txt at gumana hanggang sa pinakamababang bus (bus 3).

Ang pinakamababang bus ay palaging magiging bus 3

Kung kailangan mo ng 5 dagdag na mga bus, ang mga bus ay dapat na bi sa pagkakasunud-sunod ng 7, 6, 5, 4, 3

Ang isyu sa order ng bus ay wala doon kapag ang Instructable na ito ay orihinal na isinulat. Mukhang ang mga pagbabago ay ginawa sa kernel.

Patayin ang iyong PI, palitan ito ng. Ikonekta ang iyong mga aparatong i2c sa bus 4 (SDA sa GPIO 23 at SCL sa GPIO 24) at ang isa pa sa i2c bus 3 (SDA hanggang GPIO 17 at SCL sa GPIO 27).

Buksan ang pi.

Patakbuhin:

sudo i2cdetect -l (Mas mababang Kaso L)

Makikita mo ngayon na nakalista din ang i2c bus 3 at 4. Patakbuhin din:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Ngayon ay maaari mong gamitin ang iyong sensor sa iyong wika ng programa. Tandaan na tukuyin ang tamang i2c busses.

Ang paglakip ay isang halimbawa para sa tanyag na sensor ng Temperatura at Presyon ng BMP280. Walang multiplexer na makakabasa ng 2 BMP280s ng mabilis.

Ang isang halimbawa ng 2 Sensirion SDP 810 sensor ay nakakabit din. Muli na nagtatrabaho nang mas mabilis kaysa sa multiplexer na ginamit ko sa nakaraan

Lumikha ako ng code ng sawa upang mabasa ang dalawang bagong BMP388 mula sa adafruit.

Maaari din akong magdagdag ng iba pang mga sensor sa hinaharap sa

Hakbang 3: Kaso 2: Iba't ibang I2c Address

Simple ang i2c ay isang bus. Ang bus purpouse ay upang makipag-usap sa maraming mga aparato. Ikonekta ang mga aparato kahilera sa parehong i2c bus. Maaari kang gumamit ng bus isa.

Patakbuhin:

sudo i2cdetect -y 1

Makikita mo ang mga nakalistang aparato.

Inirerekumendang: