Indholdsfortegnelse:
- Trin 1: Nogle Shell -kommandoer
- Trin 2: Sag et: I2c -enheder har samme adresse
- Trin 3: Sag 2: Forskellige I2c -adresser
Video: Hindbær PI Flere I2C -enheder: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Frustreret, fordi du ikke kan bruge multipler af de samme I2C -enheder i dit projekt. Ingen grund til at bruge langsomme multiplexere. Den nyeste raspbian -kerne understøtter oprettelsen af flere I2C -busser ved hjælp af GPIO -pins. Denne løsning er super hurtig.
Trin 1: Nogle Shell -kommandoer
Tilslut en af dine i2c -enheder, mens din hindbærpi er af, start din hindbærpi og kør
sudo i2cdetect -y 1
Du vil se et bord som i vedhæftede figur. Jeg har vedhæftet en BMP280 temp og barometrisk tryk sensor. I2c -adressen er 0x76 ifølge tabellen. Bemærk denne adresse.
Gør dette for alle dine i2c -enheder.
Trin 2: Sag et: I2c -enheder har samme adresse
Dette var altid den problematiske sag. En i2c -bus kan håndtere flere enheder, men de skal have forskellige i2c -adresser. Nogle i2c -enheder har jumpere til at indstille andre i2c -adresser, men mange gør det ikke. I dette tilfælde kan du bruge en i2c -multiplexer (hardware) til at rotere i2c SDA (data) og SCL (ur), eller du kan oprette en ekstra i2c -bus eller mere.
Jeg vil oprette to ekstra busser, nl bus 3 og 4
Åbn cli og kør
cd /boot
sudo nano config.txt
Tilføj følgende kodelinje, helst i afsnittet, hvor spi og i2c er aktiveret.
dtoverlay = i2c-gpio, bus = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24
Denne linje opretter en ekstra i2c -bus (bus 4) på GPIO 23 som SDA og GPIO 24 som SCL (GPIO 23 og 24 er standard)
Tilføj også følgende linje for at oprette i2c bus 3
dtoverlay = i2c-gpio, bus = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27
GPIO 17 bliver SDA og GPIO 27 bliver SCL for i2c bus 4.
Rør kontrol X for at afslutte.
Bemærk om busnummerering og ordre:
Brug aldrig bus 0 og 2, den kan bruges til andre ting i tavlen som eprom på hatte osv
Til raspbian -udgivelsen i april 2019:
Du bør altid starte med den højeste bus (Bus 4 i dette tilfælde) i din config.txt og arbejde videre til den laveste bus (bus 3).
Den laveste bus skal altid være bus 3
Hvis du har brug for 5 ekstra busser, skal busserne have bi i størrelsesordenen 7, 6, 5, 4, 3
Dette problem om busordre var der ikke, da denne instruktionsbog oprindeligt blev skrevet. Det ser ud til, at der blev foretaget ændringer i kernen.
Luk din PI, sluk den. Tilslut dine i2c -enheder til bus 4 (SDA til GPIO 23 og SCL til GPIO 24) og den anden til i2c -bus 3 (SDA til GPIO 17 og SCL til GPIO 27).
Tænd for pi.
Løb:
sudo i2cdetect -l (små bogstaver L)
Du vil nu se, at i2c bus 3 og 4 også er angivet. Kør også:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
Nu kan du bruge din sensor i dit programmeringssprog. Husk at angive de korrekte i2c -busser.
Attach er et eksempel på den populære BMP280 temperatur- og tryksensor. Ingen multiplexer kan læse 2 BMP280'er så hurtigt.
Et eksempel på 2 Sensirion SDP 810 sensorer er også vedhæftet. Igen arbejdede meget hurtigere end multiplexeren, jeg tidligere brugte
Jeg oprettede python -kode for at læse to nye BMP388'er fra adafruit.
Jeg kan også fremover tilføje andre sensorer til
Trin 3: Sag 2: Forskellige I2c -adresser
Enkel. i2c er en bus. Et busformål er at kommunikere med flere enheder. Tilslut enhederne parallelt med den samme i2c -bus. Du kan bruge bus en.
Løb:
sudo i2cdetect -y 1
Du vil se enhederne på listen.
Anbefalede:
Hindbær Pi nedlukning indikator: 6 trin
Raspberry Pi Shutdown Indicator: Det er et meget simpelt kredsløb til at vise driftsstatus for hindbær pi (i det følgende RPI). Måske er det nyttigt, når du kører RPI som hovedløs (uden skærm). Nogle gange er jeg bekymret, hvornår det er det rigtige tidspunkt for fuldstændig slukning efter nedlukning af RPI
Hindbær Pi, Python og en TB6600 Stepper Motor Driver: 9 trin
Raspberry Pi, Python og en TB6600 Stepper Motor Driver: Denne instruktion følger de trin, jeg tog for at forbinde en Raspberry Pi 3b til en TB6600 Stepper Motor Controller, en 24 VDC strømforsyning og en 6 -tråds trinmotor. Jeg er nok som mange af jer og har tilfældigvis en " gribetaske " af rest par
Læsning og tegning af lys- og temperatursensordata med hindbær Pi: 5 trin
Læsning og tegning af lys- og temperatursensordata med Raspberry Pi: I denne instruks kan du lære at læse en lys- og temperatursensor med hindbær pi og ADS1115 analog til digital konverter og tegne den ved hjælp af matplotlib. Lad os starte med de nødvendige materialer
Harry Potter IR -fjernbetjening med hindbær Pi: 5 trin
Harry Potter IR -fjernbetjening med Raspberry Pi: Denne instruktør beskriver, hvordan man laver et simpelt Python -script, der styres af Harry Potter universel fjernbetjeningsstav lavet af The Noble Collection. Det kræver en Raspberry Pi som controller og en Flirc USB IR -modtager i kombination
Tutorial: Sådan styrer Arduino flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: 3 trin
Tutorial: Hvordan Arduino styrer flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: Beskrivelse: TCA9548A I2C Multiplexer -modulet gør det muligt at forbinde enheder med den samme I2C -adresse (op til 8 samme adresse I2C) tilsluttet en mikrokontroller. Multiplexeren fungerer som en portvagt og sender kommandoerne til det valgte sæt