Как заставить 2 лидара lite v3 работать с 1 Arduino?

Я использую приведенный ниже код, но безуспешно.

Я использую этот соединительный провод: На фотографии Arduino не показаны контакты SCL и SDA, но учтите, что у него есть 2 контакта SCL и 2 контакта SDA в тех местах, где я их отметил на изображении.

Оба датчика работают, однако отображают показания друг друга.

Эта ссылка из таблицы данных: https://static.garmin.com/pumac/LIDAR_Lite_v3_Operation_Manual_and_Technical_Specifications.pdf

#include <Wire.h>
#include <LIDARLite.h>

#define LIDAR1_ADDRESS 0x62 // I2C-адрес LIDAR Lite 1
#define LIDAR2_ADDRESS 0x63 // Адрес I2C LIDAR Lite 2

LIDARLite lidar1; // Объект для LIDAR Lite 1
LIDARLite lidar2; // Объект для LIDAR Lite 2

void setup() {
  Wire.begin();        // Инициализируем библиотеку Wire (I2C)
  Serial.begin(115200);  // Инициализируем последовательную связь

  // Инициализируем объекты LIDAR
  lidar1.begin(LIDAR1_ADDRESS); // Инициализация LIDAR Lite 1
  lidar2.begin(LIDAR2_ADDRESS); // Инициализация LIDAR Lite 2
}

void loop() {
  int distance1 = lidar1.distance();
  int distance2 = lidar2.distance();

  // Отображает измерения LIDAR на последовательном мониторе
  Serial.print("LIDAR 1: ");
  Serial.print(distance1);
  Serial.print(" cm | LIDAR 2: ");
  Serial.print(distance2);
  Serial.println(" cm");

  delay(500); // Интервал между чтениями
}

, 👍2

Обсуждение

что означает «зеркалирование измерений друг друга»?, @jsotola

вы подключили один к шине I2C, а другой к шине SPI... почему бы вам не подключить оба датчика к одной шине?, @jsotola

*безуспешно* мало что нам говорит. Что происходит на самом деле? Что появляется на последовательном мониторе?, @Nick Gammon

Я согласен с @jsotola — если это устройства I2C, зачем подключать их к порту SPI? Устройства I2C можно подключать параллельно., @Nick Gammon

@jsotola, мне очень жаль, я не совсем ясно выразился. Позвольте мне попробовать еще раз, кажется, что оба датчика проводят измерения, но когда я помещаю препятствие перед любым из них, оба показывают одинаковые показания на последовательном мониторе., @GUSTAVO TELES

@NickGammon Оба датчика, кажется, измеряют, но когда я помещаю препятствие перед любым из них, оба показывают одинаковые показания на последовательном мониторе, и мне нужно, чтобы оба отображали отдельные показания., @GUSTAVO TELES

@jsotola извини, но ардуино на изображении не такое, как у меня. У моего Arduino есть два контакта scl и sda. Там, где вы видите контакты ISCP, на самом деле есть контакты scl и sda., @GUSTAVO TELES

Я указал эти два адреса, но не уверен, верны ли они. как я могу получить адрес тезисов?, @GUSTAVO TELES

Я привел пример провода, чтобы получить адрес, но последовательный монитор показывает мне только «устройство, найденное по адресу 0x62»., @GUSTAVO TELES

Можно ли настроить адрес обоих модулей лидара, и настроили ли вы их на платах (аппаратно)? В противном случае возможно, что оба адреса прослушивают и реагируют на оба адреса одновременно, а затем I2C передает суперпозицию битов с обоих устройств на Arduino, который затем получает одинаковые (возможно, неправильные) значения независимо от того, к какому устройству он пытается подключиться. ., @Peter Paul Kiefer

@PeterPaulKiefer нет, я не настраивал оборудование, я просто подключал, как показано на рисунке, и помещал код., @GUSTAVO TELES

Какой тип лидара вы используете (я имею в виду плату, а не только чип/датчик)? У вас есть ссылка на его документацию? Как вы узнали, какие адреса подходят? Есть ли у вас ссылка на документы используемой библиотеки Arduino (LIDARlite). Если вы прочитаете документацию, возможно, вы найдете ответы сами. Если нет, покажите нам ссылки; Я имею в виду, добавьте их в свой вопрос, и вы увеличите вероятность того, что кто-то потратит больше времени и сможет вам помочь., @Peter Paul Kiefer

@GUSTAVOTELES Ты не ответил на мой вопрос. Вы говорите «оба датчика вроде измеряют», на вашей схеме вы показываете один, подключенный к порту SPI. Это не сработает. Если схема совершенно неправильная, исправьте ее или удалите. Вы используете адреса I2C 0x62 и 0x63. Если вы не настроили оборудование, они оба будут реагировать на 0x62, что будет означать одинаковые показания. Судя по таблице данных, есть возможность изменить адрес. *Адрес I2C можно изменить по сравнению со значением по умолчанию.* Вы это сделали?, @Nick Gammon

*У моего Arduino есть два контакта scl и sda.* - Не публикуйте фотографии, на которых изображено что-то совершенно отличное от реальности. Это просто всех сбивает с толку. Либо сфотографируйте свою собственную установку на телефон и загрузите ее, либо просто нарисуйте принципиальную схему., @Nick Gammon

@NickGammon Вы уверены, что я только что изменил схему на настоящую, которую использую, на самом деле я не понимал, как настраивать оборудование., @GUSTAVO TELES

@PeterPaulKiefer Я только что добавил ссылку на документацию. На странице 5 таблицы данных есть инструкция по изменению, но я не совсем понял, как это сделать., @GUSTAVO TELES

Возможно моя страница не обновилась, я это вижу сейчас., @Nick Gammon

Запустите сканер I2C, описанный [здесь](http://gammon.com.au/i2c) – если он показывает только одно устройство, то, естественно, он даст только одно показание. Если нет, измените свой вопрос, чтобы показать, каковы результаты., @Nick Gammon

@NickGammon Я использовал мультиплексор TCA9548A и решил проблему адресации., @GUSTAVO TELES

@NickGammon Я очень ценю вашу поддержку, спасибо., @GUSTAVO TELES

Пожалуйста, ответьте на этот вопрос самостоятельно и опишите, как вы его решили, чтобы помочь будущим людям с такой же проблемой. Спасибо!, @Nick Gammon


1 ответ


2

Если это Garmin Lidar Lite V3, вот ссылка на их технические данные. На странице 5 В таблице данных вы найдете инструкции по настройке их адресов I2C. Если вы еще этого не сделали, вполне вероятно, что оба устройства одновременно отвечают на один и тот же запрос.

Если вы это уже сделали, обновите свой вопрос, указав эти и другие соответствующие данные — например, производителя. Если я ошибся, добавьте любые внесенные вами изменения конфигурации.

,