Metro Leonardo - Контроллер

Исходники изображение:
SVG, PNG (1000px), PNG (5000px), — id:1033

Общие сведения:

Управляющая плата Metro Leonardo - схематически является платой Arduino Leonardo но выполнена в более компактном формфакторе плат линейки «Metro» и снабжена только теми выводами, которые ей необходимы для управления модулями линейки «Metro». На плате имеется разъём Micro USB для подключения к компьютеру и гнездовая колодка из 5 выводов для подключения модулей «Metro».

Для загрузки скетчей в плату управления Metro Leonardo из программы «Arduino IDE», необходимо выбрать пункт: «Инструменты» > Плата: «Arduino Leonardo».

Видео:

Редактируется.

Спецификация:

  • Микроконтроллер: ATmega32u4;
  • Ядро микроконтроллера: AVR;
  • Ширина шины данных: 8-бит;
  • Тактовая частота 16 МГц;
  • Объём памяти программ (FLASH): 32 Кб (из которых 4 Кб используются для загрузчика);
  • Объем RAM (ОЗУ): 2.5 Кб;
  • Объем EEPROM: 1 Кб;
  • Выводы на колодке для подключения модулей «Metro»:
    • SCL (D3) - линия тактирования шины I2C;
    • SDA (D2)- линия данных шины I2C;
    • 5V - питание модулей;
    • GND - общий;
    • ADR - вывод установки адреса (D12);
  • Дополнительные выводы (без колодок):
    • CLK - линия тактирования шины SPI;
    • MOSI - линия данных шины SPI (от мастера к ведомому);
    • MISO - линия данных шины SPI (от ведомого к мастеру);
    • RX (D0) - линия данных шины UART (приём);
    • TX (D1) - линия данных шины UART (передача);
    • D9 (A9) - вывод используемый как цифровой, аналоговый, ШИМ;
    • D10 (A10) - вывод используемый как цифровой, аналоговый, ШИМ;
    • 5V - вывод питания;
    • GND - общий;
    • RES - вывод Reset (перезагрузка), активный уровень «0».
  • Рабочее напряжение: 5 В (постоянного тока);
  • Разъем питания и подключения к компьютеру: Micro USB;
  • Логика выводов: 5 В;
  • Максимальный ток на выводах: 40 мА;

Подключение:

Все модули линейки «Metro» подключаются друг к другу соединяя выход предыдущего модуля со входом следующего, образуя состав из модулей «Metro» в котором первым «вагоном» является плата управления Metro Leonardo или Metro ESP. Плата управления подключается к компьютеру или источнику питания через порт Micro USB.

Если скетч загруженный в плату управления Metro Leonardo написан с использованием библиотеки iarduino_Metro, то библиотека (после считывания всех модулей на шине I2C) сама создаст массив объектов Metro, каждый элемент которого предназначен для управления одним модулем:

  • Metro[0] - объект для управления модулем №0 (ближайшим к управляющей плате);
  • Metro[1] - объект для управления модулем №1 (следующим после ближайшего к плате);
  • Metro[2] - объект для управления модулем №2 (и т.д. по последнего модуля «Metro»).

Модули «Metro» не поддерживают «горячее» подключение! Перед подключением модулей «Metro» к плате управления, извлеките кабель из разъема Micro USB, так Вы обесточите все модули при их подключении. В противном случае потребуется отключить питание при уже подключённых модулях.

Питание:

Плата управления Metro Leonardo получает питание 5 В постоянного тока через разъем Micro USB. Источником 5 В питания может быть: блок питания, зарядное устройство, источник автономного питания, USB порт компьютера и т.д.

Подробнее о модуле:

Плата управления Metro Leonardo построена на базе микроконтроллера ATmega32u4 и работает как плата Arduino Leonardo. На плате имеется колодка для подключения любых модулей линейки «Metro», состоящая из 5 выводов: SDA (D2), SCL (D3), ADR (D12), 5V и GND. К выводам шины I2C (SDA и SCL) можно подключать не только модули линейки «Metro» но и любые другие модули работающие по шине I2C (за исключением модулей с адресом 0x09 на шине I2C).

Специально для работы с модулями «Metro» нами разработана библиотека iarduino_Metro, одна библиотека для всех модулей линейки «Metro». Библиотека сама определяет наличие и тип модулей на шине I2C, присваивает им адреса и создаёт массив объектов для работы с найденными модулями. Стоит отметить что пользователю даже не обязательно знать адреса присвоенные модулям, так как для обращения к любому модулю достаточно знать его номер по порядку от платы управления.

Сторонние модули на шине I2C: Библиотека iarduino_Metro допускает наличие на шине I2C сторонних модулей со своими библиотеками. Их наличие не повлияет на обнаружение модулей «Metro», не приведёт к присвоению неуникального адреса модулю и не нарушит очерёдность следования элементов массива Metro.

Пример:

#include <Wire.h>                                          // Подключаем библиотеку Wire (для Metro Leonardo можно не подключать).
#include <iarduino_Metro.h>                                // Подключаем библиотеку iarduino_Metro.
                                                           //
uint8_t sum;                                               // Объявляем переменную для хранения количества найденных модулей Metro.
                                                           //
void setup(){                                              //
  sum=iarduino_Metro_Start();                              // Определяем модули и создаём массив объектов Metro.
  Serial.begin(9600);                                      // Инициируем связь с монитором последовательного порта на скорости 9600 бит/сек.
  while(!Serial){;}                                        // Ждём готовность к работе аппаратной шины UART (для вывода данных в монитор последовательного порта).
  for(uint8_t i=0; i<sum; i++){                            // Проходим по всем модулям ...
                    Serial.print("Модуль Metro[" );        //
                    Serial.print(i);                       // Выводим номер по порядку.
                    Serial.print("]:\tтип - "    );        // 
    switch(Metro[i].model){                                // Сверяем тип модуля (тип определяется по значению model):
      case MOD_KEY: Serial.print("кнопка,       "); break; //
      case MOD_RGB: Serial.print("светодиод,    "); break; //
      case MOD_RES: Serial.print("потенциометр, "); break; //
      case MOD_BUZ: Serial.print("зуммер,       "); break; //
      case MOD_DHT: Serial.print("датчик DHT,   "); break; //
      case MOD_DSL: Serial.print("датчик света, "); break; //
      case MOD_8X8: Serial.print("матрица 8х8,  "); break; //
      default:      Serial.print("не определён, "); break; //
    }               Serial.print("адрес = "      );        //
                    Serial.print(Metro[i].address);        // Выводим адрес на шине I2C.
                    Serial.print(", версия "     );        //
                    Serial.print(Metro[i].version);        // Выводим версию прошивки.
                    Serial.print(", занимает "   );        // 
                    Serial.print(Metro[i].size   );        // Выводим занимаемое место в ОЗУ.
                    Serial.print(" байт ОЗУ.\r\n");        //
  }                                                        //
}                                                          //
                                                           //
void loop(){}                                              //

Данный скетч загруженный в плату управления Metro Leonardo будет выводить в монитор последовательного порта названия всех обнаруженных модулей линейки «Metro», присвоенные им адреса на шине I2C, версию прошивки и объем ОЗУ отведённый для работы с каждым модулем.

Библиотека iarduino_Metro содержит разные функции для разных типов модулей. С подробным описанием функций можно ознакомиться на страницах Wiki модулей линейки «Metro».

    Применение:

    Плата Metro Leonardo используется для управления всеми подключёнными к ней модулями линейки «Metro», а так же иными модулями использующими для подключения шину I2C.

    Ссылки:

    Обсуждение