Доброго дня!
Подскажите, пожалуйста, как подключить N датчиков GY-291 ADXL345? Для N предполагается изменения от 2-3 в начальное время с расширением до 10-12 в перспективе.
Нашёл вариант подключения по I2C, описанного так:
In general it is like this:
Connect GND of both ADXL345 to Arduino GND.
Connect VCC of both ADXL345 to Arduino 3.3V.
Connect SDA of both ADXL345 to Arduino SDA (or A4 for an Arduino Uno).
Connect SCL of both ADXL345 to Arduino SCL (or A5 for an Arduino Uno).
Connect CS of both ADXL345 to 3.3V.
One module should have the SDO connect to GND, and the other module should have it connected to 3.3V.
И как я понимаю в этом случае можно использовать только 2 модуля, один из которых будет предоставлять данные по обычному адресу (0x1D), а второй по альтернативному 0x53.
Нашёл так же, что для случая более чем 2-x I2C устройств нужно использовать мультиплексор типа TCA9548A, который даст возможность подключить 8 устройств, и считывать данные путем установки адреса одного из них. Со схемой пока не разбирался.
И вот в чём вопрос, что лучше и надёжней - последовательный доступ к одному из 8-ми устройств через мультиплексор, или соединить устройства по SPI и щёлкать данные последовательно? Тут даже больше 8-ми устройств можно будет подключить. И то, что не будет прямого доступа не важно - мне нужны данные со всех устройств и обрабатывать данные с них буду последовательно.
Где-то на буржуйских форумах прочитал, что I2C медленней. Так ли это в моём случае? Мне нужно измерять вибрацию в диапазоне 30-400 Гц. ODR по спеке 3,2кГц.
У меня расстояние от датчиков до контроллера будет достигать 3-4 метров, I2C вроде не любит длинных хвостов?
SPI проще в настройке и поиске неисправности?
Количество проводов роли не играет, главное помехоустойчивость и надёжность. Провода от датчиков будут все собираться у контроллера, соединять их где-то проводами друг с другом не будет возможности.
Может кто-нибудь добавить аргументов в пользу SPI или I2C для данного случая?