Inhoudsopgave:
- Stap 1: Enkele Shell-opdrachten
- Stap 2: Case One: I2c-apparaten hebben hetzelfde adres
- Stap 3: Case 2: Verschillende I2c-adressen
Video: Raspberry PI Meerdere I2C-apparaten - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Gefrustreerd omdat je geen veelvouden van dezelfde I2C-apparaten in je project kunt gebruiken. Het is niet nodig om langzame multiplexers te gebruiken. De nieuwste raspbian-kernel ondersteunt het maken van meerdere I2C-bussen met behulp van GPIO-pinnen. Deze oplossing is supersnel.
Stap 1: Enkele Shell-opdrachten
Sluit een van je i2c-apparaten aan terwijl je raspberry pi uit staat, start je raspberry pi en start
sudo i2cdetect -y 1
U ziet een tabel zoals in de bijgevoegde afbeelding. Ik heb een BMP280 temperatuur- en luchtdruksensor bevestigd. Het i2c-adres is 0x76 volgens de tabel. Noteer dit adres.
Doe dit voor al je i2c-apparaten.
Stap 2: Case One: I2c-apparaten hebben hetzelfde adres
Dit was altijd het problematische geval. Een i2c-bus kan meerdere apparaten aan, maar ze moeten verschillende i2c-adressen hebben. Sommige i2c-apparaten hebben jumpers om andere i2c-adressen in te stellen, maar veel niet. In dit geval kunt u een i2c-multiplexer (hardware) gebruiken om de i2c SDA (Data) en SCL (Clock) te roteren of u kunt een extra i2c-bus of meer maken.
Ik maak nog twee bussen aan, nl bus 3 en 4
Open de cli en start
cd /boot
sudo nano config.txt
Voeg de volgende regel code toe, bij voorkeur in de sectie waar spi en i2c zijn ingeschakeld.
dtoverlay=i2c-gpio, bus=4, i2c_gpio_delay_us=1, i2c_gpio_sda=23, i2c_gpio_scl=24
Deze lijn creëert een extra i2c-bus (bus 4) op GPIO 23 als SDA en GPIO 24 als SCL (GPIO 23 en 24 zijn standaard)
Voeg ook de volgende regel toe om i2c-bus 3. te maken
dtoverlay=i2c-gpio, bus=3, i2c_gpio_delay_us=1, i2c_gpio_sda=17, i2c_gpio_scl=27
GPIO 17 wordt de SDA en GPIO 27 wordt de SCL voor i2c bus 4.
Tipe controle X om af te sluiten.
Opmerking over de busnummering en bestelling:
Gebruik nooit bus 0 en 2, het is te gebruiken voor andere dingen op het bord zoals eprom op hoeden enz.
Voor de raspbian-release van april 2019:
Je moet altijd beginnen met de hoogste bus (Bus 4 in dit geval) in je config.txt en doorwerken naar de laagste bus (bus 3).
De laagste bus moet altijd bus 3. zijn
Als je 5 extra bussen nodig hebt, moeten de bussen bi in de volgorde 7, 6, 5, 4, 3
Dit probleem met de busbestelling was er niet toen deze Instructable oorspronkelijk werd geschreven. Het lijkt erop dat er wijzigingen zijn aangebracht in de kernel.
Zet je PI uit, zet hem uit. Sluit uw i2c-apparaten aan op bus 4 (SDA naar GPIO 23 en SCL naar GPIO 24) en de andere op i2c-bus 3 (SDA naar GPIO 17 en SCL naar GPIO 27).
Zet de pi aan.
Loop:
sudo i2cdetect -l (Kleine letters L)
Je zult nu zien dat i2c bus 3 en 4 ook in de lijst staan. Voer ook uit:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
Nu kunt u uw sensor in uw programmeertaal gebruiken. Vergeet niet om de juiste i2c-bussen op te geven.
Attach is een voorbeeld voor de populaire BMP280 temperatuur- en druksensor. Geen enkele multiplexer kan 2 BMP280's zo snel lezen.
Een voorbeeld van 2 Sensirion SDP 810 sensoren is ook bevestigd. Werkt weer veel sneller dan de multiplexer die ik in het verleden gebruikte
Ik heb python-code gemaakt om twee nieuwe BMP388's van adafruit te lezen.
Ik kan in de toekomst ook andere sensoren toevoegen aan
Stap 3: Case 2: Verschillende I2c-adressen
Eenvoudig. i2c is een bus. Een busdoel is om met meerdere apparaten te communiceren. Sluit de apparaten parallel aan op dezelfde i2c-bus. U kunt bus één gebruiken.
Loop:
sudo i2cdetect -y 1
U ziet de apparaten in de lijst.
Aanbevolen:
Meerdere USB-poorten zonder PCB: 4 stappen
Meerdere USB-poorten zonder PCB: dit is mijn tweede instructable en hier ga ik een project met je delen waar je meerdere USB-poorten kunt maken om op je pc te gebruiken, want als je vanuit huis werkt, heb je een groot probleem om veel te gebruiken apparaten zoals de meeste apparaten nu h
Meerdere ESP-gesprekken voeren via ESP-NOW met ESP32 en ESP8266: 8 stappen
Meerdere ESP-gesprekken maken via ESP-NOW ESP32 en ESP8266 gebruiken: voor mijn lopende project heb ik meerdere ESP nodig om met elkaar te praten zonder een router. Om dit te doen, zal ik de ESP-NOW gebruiken om draadloos met elkaar te communiceren zonder een router op de ESP
Meerdere elektronische kaarsen: 3 stappen
Meerdere elektronische kaarsen: elektronische kaarsen zijn vaak op Instructables geplaatst, dus waarom deze? Thuis heb ik deze kleine semi-transparante kersthuisjes met een LED-inzicht en een kleine batterij. Sommige huizen hebben LED's met een kaarseffect en sommige hebben LED's t
Meerdere monitoren aansluiten op een laptop: 3 stappen
Sluit meerdere monitoren aan op een laptop: Benodigde componenten: Monitoren (Belangrijk: VGA-connectiviteit met USB-voeding) - 2 nr. muurbevestiging voor tv/monitoren - 2 nr. USB 3.0 naar VGA-converter - 1 nr. 1 naar 2 of 1 naar 4 USB splitter/adapter (om monitoren op te laden) - 1 No.PVC schuim 5mm dikte
Meerdere LED's besturen met Python en de GPIO-pinnen van je Raspberry Pi: 4 stappen (met afbeeldingen)
Meerdere LED's besturen met Python en de GPIO-pinnen van je Raspberry Pi: deze Instructable laat zien hoe je meerdere GPIO-pinnen op je RaspberryPi kunt besturen om 4 LED's van stroom te voorzien. Het zal je ook kennis laten maken met parameters en voorwaardelijke uitspraken in Python.Onze vorige Instructable met behulp van de GPIO-pinnen van je Raspberry Pi om