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

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1926 статей для сайта.

Контакты:

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


Ambox content.png Черновик


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

X adaptor 01.jpg

Этот адаптер конвертирует данные 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».

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

XadowAdaptor2.jpg

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

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

  1. #include <Wire.h>
  2. #include <Streaming.h>
  3.  
  4. #define ADDR_ADC121             0x58
  5.  
  6. #define V_REF 3.00
  7.  
  8. #define REG_ADDR_RESULT         0x00
  9. #define REG_ADDR_ALERT          0x01
  10. #define REG_ADDR_CONFIG         0x02
  11. #define REG_ADDR_LIMITL         0x03
  12. #define REG_ADDR_LIMITH         0x04
  13. #define REG_ADDR_HYST           0x05
  14. #define REG_ADDR_CONVL          0x06
  15. #define REG_ADDR_CONVH          0x07
  16.  
  17. unsigned int getData;
  18. float analogVal=0;                            // конвертация
  19.  
  20. void init_adc()
  21. {
  22.     Wire.beginTransmission(ADDR_ADC121);      // начинаем передачу
  23.                                               // данных на устройство
  24.     Wire.write(REG_ADDR_CONFIG);              // регистр настроек
  25.     Wire.write(0x20);
  26.     Wire.endTransmission();
  27. }
  28.  
  29. void read_adc()                               //unsigned int *data
  30. {
  31.  
  32.     Wire.beginTransmission(ADDR_ADC121);      // начинаем передачу
  33.                                               // данных на устройство
  34.     Wire.write(REG_ADDR_RESULT);              // получаем результат
  35.     Wire.endTransmission();
  36.  
  37.     Wire.requestFrom(ADDR_ADC121, 2);         // запрашиваем два байта
  38.                                               // у устройства
  39.     delay(1);
  40.     if(Wire.available()<=2)
  41.     {
  42.         getData = (Wire.read()&0x0f)<<8;
  43.         getData |= Wire.read();
  44.     }
  45.     Serial.print("getData:");                 //  "Получили данные:"
  46.     Serial.println(getData);
  47.     delay(5);
  48.     Serial.print("The analog value is:");     //  "Аналоговое значение:"
  49.     Serial.print(getData*V_REF*2/4096);
  50.     Serial.println("V");
  51. }
  52. void setup()
  53. {
  54.     Serial.begin(9600);
  55.     Wire.begin();
  56.     init_adc();
  57. }
  58.  
  59. void loop()
  60. {
  61.     read_adc();                              //adcRead);
  62.     delay(50);
  63. }

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

Xadow Grove Adaptor Result.png

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

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

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

XadowAdaptor1.jpg

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

  1. /*  Демонстрационный скетч v1.0 для цифрового датчика света
  2.  *
  3.  *  Подключите датчик к I2C-порту на Arduino.
  4.  *
  5.  * By:http://www.seeedstudio.com
  6.  */
  7. #include <Wire.h>;
  8. #include <Digital_Light_TSL2561.h>;
  9.  
  10. void setup()
  11. {
  12.   Wire.begin();
  13.   Serial.begin(9600);
  14.   TSL2561.init();
  15. }
  16.  
  17. void loop()
  18. {
  19.   unsigned long  Lux;
  20.   TSL2561.getLux();
  21.   Serial.print("The Light value is: ");  //  "Яркость: "
  22.   Serial.println(TSL2561.calculateLux(0,0,1));
  23.   delay(1000);
  24.   }

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

Digital Light Sensor Score Picture.jpg

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

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

См.также

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

  1. wiki.seeed.cc - Xadow - Grove Adaptor