Электронный компонент:Grove-адаптер для плат Xadow

Материал из Онлайн справочника
Версия от 18:09, 14 мая 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик


Grove-адаптер для плат Xadow[1]

Этот адаптер конвертирует данные Grove-порта в данные Xadow-порта, чтобы создать совместимость между Grove-модулями и платами Xadow. Сигнал от двух аналоговых Grove-портов идет через АЦП на Xadow-порт с интерфейсом I2C. Сигнал от Grove-порта с интерфейсом I2C идет напрямую и без конвертации на Xadow-порт с интерфейсом I2C. Аналогового-цифровое преобразование выполняется при помощи 12-битного АЦП ADCC121C021.

Купить Grove-адаптер для плат Xadow можно по этой ссылке.

Характеристики

  • Рабочее напряжение – 3.3 вольта
  • Разрешение аналогового-цифрового преобразователя – 12 бит
  • Частота дискретизации – 188.9 Гц
  • I2C-адрес – можно менять
  • Размеры – 25.43 мм х 20.35 мм

Демо-проекты

Здесь мы покажем несколько примеров того, как считывать данные с Grove-модулей при помощи Grove-адаптера для плат Xadow.

Считывание аналогового сигнала

Чтобы прочесть аналоговый сигнал, идущий от Grove-модуля, вам нужно подключить Grove-модуль к аналоговому Grove-порту на Grove-адаптере. Всего их два, и они помочены надписями «A0» и «A1».

Все устройства должны быть подключены друг к другу следующим образом:

В данном случае Grove-модуль с датчиком газа подключен к Grove-порту A0, поэтому в тестовом коде нужно будет указать I2C-адрес 0x58 (это I2C-адрес порта A0 по умолчанию). Если бы датчик газа был подключен к Grove-порту A1, нужно было бы использовать I2C-адрес 0x59 (это I2C-адрес порта A1 по умолчанию).

Вот тестовый код:

#include <Wire.h>
#include <Streaming.h>

#define ADDR_ADC121             0x58

#define V_REF 3.00

#define REG_ADDR_RESULT         0x00
#define REG_ADDR_ALERT          0x01
#define REG_ADDR_CONFIG         0x02
#define REG_ADDR_LIMITL         0x03
#define REG_ADDR_LIMITH         0x04
#define REG_ADDR_HYST           0x05
#define REG_ADDR_CONVL          0x06
#define REG_ADDR_CONVH          0x07

unsigned int getData;
float analogVal=0;                            // конвертация

void init_adc()
{
    Wire.beginTransmission(ADDR_ADC121);      // начинаем передачу 
                                              // данных на устройство
    Wire.write(REG_ADDR_CONFIG);              // регистр настроек
    Wire.write(0x20);
    Wire.endTransmission();
}

void read_adc()                               //unsigned int *data
{

    Wire.beginTransmission(ADDR_ADC121);      // начинаем передачу 
                                              // данных на устройство
    Wire.write(REG_ADDR_RESULT);              // получаем результат
    Wire.endTransmission();

    Wire.requestFrom(ADDR_ADC121, 2);         // запрашиваем два байта
                                              // у устройства
    delay(1);
    if(Wire.available()<=2)
    {
        getData = (Wire.read()&0x0f)<<8;
        getData |= Wire.read();
    }
    Serial.print("getData:");                 //  "Получили данные:"
    Serial.println(getData);
    delay(5);
    Serial.print("The analog value is:");     //  "Аналоговое значение:"
    Serial.print(getData*V_REF*2/4096);
    Serial.println("V");
}
void setup()
{
    Serial.begin(9600);
    Wire.begin();
    init_adc();
}

void loop()
{
    read_adc();                              //adcRead);
    delay(50);
}

Загрузите этот код на главную плату Xadow, а затем откройте монитор порта, чтобы увидеть результат.

Измерение I2C-сигнала

Если Grove-модуль передает данные через I2C, его нужно подключить к Grove-порту с интерфейсом I2C на Grove-адаптере для плат Xadow. В этом случае Grove-адаптер будет передавать данные на Xadow-порт с интерфейсом I2C, минуя АЦП. Ниже показан пример считывания I2C-данных с Grove-модуля с цифровым датчиком света.

Устройства должны быть подключены друг к другу вот так:

Теперь загрузите с GitHub библиотеку «Grove Digital Light Sensor» и установите ее в IDE Arduino. О том, как устанавливать новые библиотеки в IDE Arduino, читайте здесь или здесь. Установив библиотеку, откройте в IDE Arduino вот этот код:

/*  Демонстрационный скетч v1.0 для цифрового датчика света
 *
 *  Подключите датчик к I2C-порту на Arduino.
 *
 * By:http://www.seeedstudio.com
 */
#include <Wire.h>;
#include <Digital_Light_TSL2561.h>;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  TSL2561.init();
}

void loop()
{
  unsigned long  Lux;
  TSL2561.getLux();
  Serial.print("The Light value is: ");  //  "Яркость: "
  Serial.println(TSL2561.calculateLux(0,0,1));
  delay(1000);
  }

Откройте монитор порта, чтобы увидеть считанное значение яркости (в люксах). Попробуйте искусственно изменить освещение в комнате – в результате данные в мониторе порта тоже должны измениться.

Чип ADC121C021 – это тот же АЦП, который используется в Grove-модуле с АЦП с интерфейсом I2C. Способ изменения I2C-адреса тот же. О том, как изменить I2C-адрес, читайте в этой статье в разделе «Reference». На Grove-адаптере изменение I2C-адреса выполняется с помощью 4 перемычек, находящихся на лицевой стороне – «0», «1», «2» и «3». Перемычки «0» и «1» предназначены для порта A0, а «2» и «3» – для порта A1.

Полезные ссылки

См.также

Внешние ссылки