Arduino Polska Forum

Pełna wersja: Komunikacja BMP280 MPU6050 i NRF24l01
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam. Buduję samolot sterowany przez moduł NRF24l01 i arduino pro mini. chcę jednocześnie, aby arduino używało czujników ciśnienia BMP280 i położenia MPU6050. Jednak arduino ma  tylko po jednej magistrali SPI i I2c, a wifi używa SPI, MPU6050 I2c, a BMP280 SPI lub Ic2. Czy da się w jakoś sposób komunikować jednocześnie ze wszystkimi czujnikami? Można w jakoś sposób używać multipleksera, aby wybierał czujnik z którego mają być odczytane pomiary, lub użyć innych pinów i programowo napisać emulator jednej z magistrali?
Do magistrali I2C można podłączyć wiele urządzeń jednocześnie. Każde urządzenie ma swój adres. No chyba, że adresy się pokrywają i nie można je zmienić. Do SPI też możesz podłączyć wiele urządzeń i wybierasz z którym chcesz" rozmawiać"szynami SS osobnymi dla każdego urządzenia.
Tu do poczytania o SPI https://forbot.pl/blog/kurs-stm32-9-spi-...-io-id8466
Czyli jeżeli autorzy bibliotek czujników przewidzieli kilka urządzeń jednocześnie, można bez zmian w programie połączyć czujniki razem?
W zasadzie tak, można podłączyć czujniki równolegle. Adresy czujnikom nadają producenci. Niektóre czujniki posiadają możliwość zmiany tego adresu przez zwarcie do masy odpowiednich wyprowadzeń. Biblioteki mają zwykle możliwość zmiany tego adresu, jak producent pozwala na to. Jak nie ma, to trzeba pogrzebać w bibliotece, ale trzeba znać adres urządzenia. Do "wykrywania" adresu I2C służą programiki, skanery I2C.
Informacja o adresach jest w dokumentacji czujników - dla BMP280 to 0x50, natomiast MPU6050 może mieć adres 0x68 lub 0x69. Nie powinno być więc problemów z komunikacją przy użyciu jednego interfejsu i2c. Oczywiście nie będzie to "jednoczesne" odczytywanie wszystkich wyników, ale spokojnie można je odczytać "jeden-po-drugim".