Как подключить MPU9250 к NodeMCU с помощью SPI или I2C Slave?
Я хочу подключить 3 датчика MPU9250, но так как шина I2C всего одна, то есть еще 2 датчика, которые я хочу подключить через SPI.
Используемая библиотека — https://github.com/bolderflight/MPU9250/blob/ master/examples/Basic_SPI/Basic_SPI.ino
Написан пример кода SPI, но я не знаю о соединениях. На датчике, который я использую, нет MISO и других контактов, но он совместим с SPI. Как подключить 2 MPU9250 к NodeMCU с помощью SPI?
Если соединение SPI невозможно, опубликуйте сообщение о подчиненном соединении I2C.
@suu, 👍2
Обсуждение3 ответа
Для подключения нескольких компонентов SPI вам потребуется всего 4 контакта на каждом "ведомом" устройстве (то есть на датчиках): SLCK, MOSI, MISO и SS (выбор подчиненного устройства).
Вывод выбора ведомого устройства зависит от того, с каким мастером (в вашем случае NodeMCU) «тоже разговаривает». Таким образом, на вашем NodeMCU у вас будет 3 контакта SS (по одному на каждый подчиненный датчик). NodeMCU должен одновременно взаимодействовать только с одним ведомым устройством, установив для этого контакта SS НИЗКИЙ уровень (в то время как другие контакты SS имеют высокий уровень).
Полную статью см. на странице Multiple-SPI-devices-to. -микроконтроллер Arduino.
Я загрузил изображение датчика, какой контакт в данном случае SCLK, MOSI, MISO и SS?, @suu
Это подчиненные устройства I2C, SPI — это совершенно другой протокол., @Michel Keijzers
Можете ли вы опубликовать ответ о подключении 3 датчиков mpu9250 с ведомым устройством i2c? Спасибо пока, @suu
У меня нет большого опыта работы с I2C, я думаю, что SDA и SCL - это соединение/контакты I2C по умолчанию, поэтому используйте их., @Michel Keijzers
Выводы MPU-9250 должны быть подключены следующим образом:
--Vcc: это должен быть источник питания от 2,4 до 3,6 В.
--GND: земля.
--FSYNC: не используется, должен быть заземлен.
--SDA/SDI: подключение к MOSI.
--SCL/SCLK: подключение к SCK.
--AD0/SDO: подключение к MISO.
--nCS: подключиться к контакту выбора чипа (любой цифровой контакт, но в вашем примере это PIN 10).
Кроме того, вы можете проверить соединение с:
https://learn.sparkfun.com/tutorials/mpu-9250 -hookup- guide?_ga=1.139382715.926858641.1470020364
Если вы хотите использовать SPI-
Домашняя страница библиотеки, о которой вы упомянули, четко объясняет соединения цепей.-
Выводы MPU-9250 должны быть подключены следующим образом:
- VDD: это должен быть источник питания с напряжением от 2,4 В до 3,6 В.
- Земля: земля.
- VDDI: напряжение питания цифрового ввода/вывода. Оно должно быть между 1,71 В и ВДД.
- FSYNC: не используется, должен быть заземлен.
- INT: (необязательно) используется для настройки выхода прерывания в enableDataReadyInterrupt и enableWakeOnMotion. Подключиться к прерываемый вывод на микроконтроллере.
- SDA/SDI: подключение к MOSI.
- SCL/SCLK: подключение к SCK.
- AD0/SDO: подключение к MISO.
- nCS: подключение к контакту выбора чипа. Пин 10 использовался во фрагментах кода. в этом документе и во включенных примерах, но любой цифровой контакт ввода-вывода можно использовать.
- AUXDA: не используется.
- AUXCL: не используется.
Вывод nCS (выбор чипа) каждого датчика должен быть подключен к выводу выбора подчиненного устройства (любому цифровому выводу) на NodeMCU. Это позволяет NodeMCU выбирать, с каким датчиком он хочет взаимодействовать.
Еще один простой способ подключения нескольких датчиков с одним и тем же адресом I2C — использование мультиплексора I2C, такого как Adafruit TCA9548A Это позволит вам подключить до 8 датчиков с одинаковым адресом I2C. Вот видео на YouTube, объясняющее, как это сделать.
Однако, если вы просто хотите подключить два MPU9250, вам не нужно ничего делать, так как плата предлагает два уникальных адреса через контакт AD0-
- 0x68, если AD0 заземлен
- 0x69, если AD0 получает высокий уровень
- MPU-9250 IMU на SPI, внешнем датчике или магнитометре с использованием мастера I2C
- Сбой при записи данных MPU-6050 на SD-карту
- Можно ли подключить 3 MPU9250 к Node MCU без мультиплексора?
- NodeMCU V3 и MPU6050 странные значения
- LILYGO TTGO T-Display не может обнаружить акселерометр, гироскоп и датчик температуры MPU 6050
- Не удается преобразовать строку в целое число при получении данных из pubnub
- MPU6050 Проблема с NodeMCU
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
I2C-адрес MPU-9250 будет 0x68, если контакт AD0 заземлен, или 0x69, если контакт AD0 имеет высокий уровень. Итак, их 2. Третий был бы более сложным, хотя вы могли бы использовать 2 i2c и 1 spi. Вы также можете просто использовать 2-ю пару контактов для запуска дополнительной шины i2c к 3-му датчику, создать экземпляр другого экземпляра Wire (передав ему номера контактов) и передать этот экземпляр провода конструктору MPU9250FIFO., @dandavis
если вы работаете над датчиком, вам следует сначала прочитать его техническое описание, а не использовать какую-либо библиотеку Arduino., @Vaibhav