Taula de continguts:

Dispositius I2C múltiples Raspberry PI: 3 passos
Dispositius I2C múltiples Raspberry PI: 3 passos

Vídeo: Dispositius I2C múltiples Raspberry PI: 3 passos

Vídeo: Dispositius I2C múltiples Raspberry PI: 3 passos
Vídeo: I2C on the Raspberry Pi - HOW TO use I2C with Python 2024, Juliol
Anonim
Dispositius I2C múltiples Raspberry PI
Dispositius I2C múltiples Raspberry PI
Dispositius I2C múltiples Raspberry PI
Dispositius I2C múltiples Raspberry PI

Frustrat perquè no podeu utilitzar múltiples dels mateixos dispositius I2C al vostre projecte. No cal fer servir multiplexors lents. L'últim nucli raspbian admet la creació de diversos autobusos I2C mitjançant pins GPIO. Aquesta solució és súper ràpida.

Pas 1: alguns comandaments de Shell

Alguns comandaments de Shell
Alguns comandaments de Shell

Connecteu un dels vostres dispositius i2c mentre el raspberry pi estigui activat, engegueu el raspberry pi i executeu

sudo i2cdetect -y 1

Veureu una taula com a la figura adjunta. Tinc connectat un sensor de temperatura i pressió baromètrica BMP280. L'adreça i2c és 0x76 segons la taula. Tingueu en compte aquesta adreça.

Feu això per a tots els vostres dispositius i2c.

Pas 2: primer cas: els dispositius I2c tenen la mateixa adreça

Primer cas: els dispositius I2c tenen la mateixa adreça
Primer cas: els dispositius I2c tenen la mateixa adreça

Aquest va ser sempre el cas problemàtic. Un bus i2c pot gestionar diversos dispositius, però haurien de tenir adreces i2c diferents. Alguns dispositius i2c tenen ponts per configurar altres adreces i2c, però molts no. En aquest cas, podeu utilitzar un multiplexor i2c (maquinari) per girar l'i2c SDA (dades) i SCL (rellotge) o podeu crear un bus i2c addicional o més.

Crearé dos autobusos addicionals, nl bus 3 i 4

Obriu el cli i executeu

cd / boot

sudo nano config.txt

Afegiu la següent línia de codi, preferible a la secció on s’activen spi i i2c.

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

Aquesta línia crearà un bus i2c addicional (bus 4) a GPIO 23 com a SDA i GPIO 24 com a SCL (GPIO 23 i 24 són els valors predeterminats)

Afegiu també la línia següent per crear el bus i2c 3

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

GPIO 17 serà l’SDA i GPIO 27 serà el SCL del bus 4 d’i2c.

Escriu el control X per sortir.

Nota sobre la numeració i la comanda del bus:

No utilitzeu mai els autobusos 0 i 2, sinó per a altres coses del tauler com eprom en barrets, etc.

Per a la versió raspbian d'abril del 2019:

Sempre heu de començar amb el bus més alt (Bus 4 en aquest cas) al vostre config.txt i anar fins al bus més baix (bus 3).

El bus més baix ha de ser sempre el bus 3

Si necessiteu 5 autobusos addicionals, els autobusos hauran de ser de l’ordre de 7, 6, 5, 4, 3

Aquest problema de la comanda d’autobús no hi era quan es va escriure originalment aquest instructiu. Sembla que es van fer canvis al nucli.

Apagueu el PI, canvieu-lo. Connecteu els vostres dispositius i2c al bus 4 (SDA a GPIO 23 i SCL a GPIO 24) i l’altre al bus i2c 3 (SDA a GPIO 17 i SCL a GPIO 27).

Enceneu el pi.

Correr:

sudo i2cdetect -l (minúscula L)

Ara veureu que també hi apareixen els busos i2c 3 i 4. Executeu també:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Ara podeu utilitzar el sensor en el vostre llenguatge de programació. Recordeu especificar els autobusos i2c correctes.

Adjuntar és un exemple per al popular sensor de temperatura i pressió BMP280. Cap multiplexor no pot llegir 2 BMP280 tan ràpidament.

També s’adjunta un exemple de 2 sensors Sensirion SDP 810. De nou, treballo molt més ràpid que el multiplexor que feia servir en el passat

Vaig crear codi Python per llegir dos nous BMP388 d’Adafruit.

També puc afegir altres sensors en el futur a

Pas 3: cas 2: diferents adreces I2c

Senzill. i2c és un autobús. El propòsit d'un autobús és comunicar-se amb diversos dispositius. Connecteu els dispositius paral·lels al mateix bus i2c. Podeu fer servir un autobús.

Correr:

sudo i2cdetect -y 1

Veureu els dispositius que apareixen a la llista.

Recomanat: