Общие сведения:
Управляющая плата 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(&Wire); // Определяем модули и создаём массив объектов 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.
Обсуждение