Проблемные данные I2C к датчику GY955/BNO055 (Китай)

Я хочу спросить, у меня возникла проблема при запуске датчика Arduino, я не могу вывести данные, но обнаруживает, что адрес датчика был сопряжен.
Как будто I2C имеет проблемы или блокирует его.

Прошлой ночью это сработало только потому, что мои двойные датчики попробовали другой с той же программой после того, как я скомпилировал и загрузил, я вижу, что последовательный монитор - это только датчик обнаружения, но он не отображает данные, поэтому шаг испаряется, а рулон данные 0.0,0.

Похоже, проблема с i2c: данные не выходят, определяет только адрес датчика, а содержимое все нулевое. Вы когда-нибудь сталкивались с этим?

Первоначально это работало, потому что датчик был тот же, и я попробовал его с той же программой после чтения GY 955 / BNO055 на Euler_streaming, он показал только ноль на ось.

Это код на макетной плате

/*************************************************** ************************************

Euler_Streaming.pde — часть примера ПО для использования BNO055 с Arduino

(C) Все права принадлежат ROBERT BOSCH GMBH.

Авторское право (C) Bosch Sensortec GmbH, 2014 г.

Эта программа является бесплатным программным обеспечением: вы можете распространять ее и/или модифицировать
на условиях Стандартной общественной лицензии GNU, опубликованной
Free Software Foundation, либо версию 3 Лицензии, либо
(на ваш выбор) любую более позднюю версию.

Эта программа распространяется в надежде, что она будет полезна,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии
КОММЕРЧЕСКАЯ ПРИГОДНОСТЬ или ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. См.
Стандартная общественная лицензия GNU для более подробной информации.

Вы должны были получить копию Стандартной общественной лицензии GNU.
вместе с этой программой. Если нет, см. <http://www.gnu.org/licenses/>.

******************************************************* ************************/
/* Дата: 07.01.2014
Редакция: 1.2

*/
#include "BNO055_support.h"     //Содержит код моста между API и Arduino
#include <Wire.h>

// В этом примере адрес устройства установлен на BNO055_I2C_ADDR2. Вы можете изменить это в файле BNO055.h в сегменте кода, показанном ниже.
// /* bno055 I2C-адрес */
// # определить BNO055_I2C_ADDR1 0x28
// # определить BNO055_I2C_ADDR2 0x29
// # определить BNO055_I2C_ADDR BNO055_I2C_ADDR2

//Назначение контактов, проверенное на Arduino Due.
//Vdd,Vddio : 3,3 В
//Земля : Земля
//SDA/SCL : SDA/SCL
//PSO/PS1 : GND/GND (режим I2C)

//Эта структура содержит сведения о подключенном устройстве BNO055. (Обновлено после инициализации)
struct bno055_t myBNO;
struct bno055_euler myEulerData; //Структура для хранения данных Эйлера

unsigned long lastTime = 0;

void setup() // Этот код выполняется один раз
{
  // Инициализация связи I2C
  Wire.begin();

  //Инициализация BNO055
  BNO_Init(&myBNO); //Назначение структуры для хранения информации об устройстве

  //Конфигурация в режим NDoF
  bno055_set_operation_mode(OPERATION_MODE_NDOF);

  delay(1);

  // Инициализируем последовательный порт для просмотра информации на последовательном мониторе
  Serial.begin(115200);
}

void loop() // Этот код зациклен навсегда
{
  if ((millis() - lastTime) >= 100) //Для потоковой передачи с частотой 10 Гц без использования дополнительных таймеров
  {
    lastTime = millis();

    bno055_read_euler_hrp(&myEulerData);            // Обновляем данные Эйлера в структуру

    Serial.print("Time Stamp: ");               //Чтобы прочитать метку времени
    Serial.println(lastTime);

    Serial.print("Heading(Yaw): ");             //Прочитать Заголовок (Yaw)
    Serial.println(float(myEulerData.h) / 16.00);       // Преобразовать в градусы

    Serial.print("Roll: ");                 //Чтобы прочитать список
    Serial.println(float(myEulerData.r) / 16.00);       // Преобразовать в градусы

    Serial.print("Pitch: ");                //Чтобы прочитать шаг
    Serial.println(float(myEulerData.p) / 16.00);       // Преобразовать в градусы

    Serial.println();                   //Дополнительная строка для различения пакетов
  }
}

, 👍0

Обсуждение

Может кто-нибудь найти схему gy955?, @Jot

Как узнать, что датчик найден по адресу? Какую библиотеку вы используете (ссылка)? Определен ли адрес в BNO055_support.h?, @chrisl

Hari_Murti, вы подключили vcc модуля к контакту 3.3v или 5v arduino mega 2560?, @Jot


1 ответ


1

У меня была такая же проблема с библиотекой Adafruit. Когда используется китайский модуль, в конструкторе необходимо указать id следующим образом:

Adafruit_BNO055 bno = Adafruit_BNO055(55,0x29);
,