Как обращаться программно к устройствам(если их несколько) по i2c

Vicrus
Offline
Зарегистрирован: 12.08.2015

Вообщем вопрос таков: есть 3 гироскопа, подключенные по i2c шине к Arduino uno, как получить данные с каждого, т.е как к нему обращаться. Например, если подключить 2 и более Arduino по этой шине, то у каждой есть свой номер, который ты задаешь.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

По адресу устройства на шине I2C. Как узнать адрес? как вариант - I2C Scanner, этот скетч где только не валяется.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Vicrus пишет:
Вообщем вопрос таков: есть 3 гироскопа, подключенные по i2c шине к Arduino uno, как получить данные с каждого, т.е как к нему обращаться. Например, если подключить 2 и более Arduino по этой шине, то у каждой есть свой номер, который ты задаешь.

А как Вы с одного получаете?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Vicrus, на всякий случай конкретизируйте: у Вас один трехосевой гироскоп или именно 3 (всего 9 осей)?

Vicrus
Offline
Зарегистрирован: 12.08.2015

Сформулирую по конкретней. Значит: есть 3 трехосевых гироскопа GY-521.  Все они подкючены к ведущей плате ардуино по i2c шине.

1.Но как к ним обращаться, если у всех один адресс 0х68;

2.И не понял как получить с них сами показания(если можно с примером);

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Vicrus пишет:

Сформулирую по конкретней. Значит: есть 3 трехосевых гироскопа GY-521.  Все они подкючены к ведущей плате ардуино по i2c шине.

1.Но как к ним обращаться, если у всех один адресс 0х68;

2.И не понял как получить с них сами показания(если можно с примером);

http://playground.arduino.cc/Main/MPU-6050 - цитата оттуда:

Цитата:

The pin "AD0" selects between I2C address 0x68 and 0x69. That makes it possible to have two of these sensors in a project. Most breakout boards have a pullup or pulldown resistor to make AD0 default low or high. Connect AD0 to GND or 3.3V for the other I2C address.

Вывод - можно иметь до ДВУХ этих устройств на одной шине I2C без особого секса. В общем, советую прочитать по ссылке - там сказано, как можно подключить больше двух.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Кстати - да, идея классная! Как я сам не допёр?

Vicrus
Offline
Зарегистрирован: 12.08.2015

Note that requesting data from many MPU-6050 sensors is slow, because the I2C-bus is slow. A sensor with SPI interface is faster.

At this moment (15 July 2014) it is not known if this trick works for the MPU-6050.

там говорят как подключить 2, но если больше двух, то i2c шина медленная для этого и решения для подключения более 2 модулей гироскопа на i2c нет. Написано про использование spi. Можно по подробнее? Как подключить и как в коде использовать?

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Vicrus пишет:

там говорят как подключить 2, 

Неправда. Мне за вас прочитать?

Цитата:

When more MPU-6050 sensors are needed in a project, the I2C-bus can be extended with multiplexers. However, someone in the forum mentioned a nice trick:

Trick

Using more than two MPU-6050 sensors can be achieved by connecting each of the AD0pins to a separate output of the Arduino. If the number of pins is a problem, then a shift register or a port expander can be used.

The output of a 5V Arduino can not be used. In that case a voltage divider or level shifter for 3.3 volts on each of the outputs is needed. The 5V output pins can also be converted in 3.3V open collector outputs by using transistors or an open-collector driver. Pullup resistors to 3.3V should be added for a high level of 3.3V.

Suppose all AD0 lines are default high (3.3V), so every MPU-6050 is I2C address 0x69. ThatI2C address is however never used ! The Arduino makes one of the AD0 lines low, and uses that sensor at I2C address 0x68. After that is finished, the Arduino selects another AD0 line, and can use that sensor.

So every sensor is used at I2C address 0x68 (one by one) and 0x69 is never used.

This should make it possible to have many MPU-6050 sensors in a project. Even more than 10 sensor should be possible.

Vicrus
Offline
Зарегистрирован: 12.08.2015

Пардон, пролистал

a5021
Offline
Зарегистрирован: 07.07.2013

DIYMan пишет:
В общем, советую прочитать по ссылке - там сказано, как можно подключить больше двух.

Оу! И правда идея изящная.  Мерси за наводку.