Линейка "Metro" - первое включение, обзор

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

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

Модули "Metro" — новая линейка модулей, выполненная в едином форм-факторе, не требующая использования проводов, работающая по интерфейсу I2C и призванная упростить процесс создания и программирования ваших проектов.

Больше не надо думать о том, какого типа оборудование подключено к контроллеру - аналоговое или цифровое, - теперь всё работает по интерфейсу I2C.

Так же больше не надо переживать о том, что несколько устройств на шине I2C могут иметь одинаковый адрес. Библиотека iarduino_Metro автоматически назначит адреса всем модулям "Metro", а если на шине I2C присутствует стороннее оборудование, то библиотека учтёт это и не назначит модулям адреса, совпадающие с уже занятыми.

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

Управляющие платы:

  • Микроконтроллер: ATmega 32u4 / ESP8266(WiFI);
  • Интерфейс: I2C;
  • Питание: 5В;
  • Размеры: 38 х 25.5мм;

Модули:

  • Микроконтроллер: STM32;
  • Интерфейс: I2C;
  • Питание: 5В;
  • Размеры: 38 х 25.5мм;

Все модули линейки "Metro" выполнены в одном формате

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

Для подключения модулей  соотнесите выводы модуля с контактами контроллера и вставьте их до упора. При дальнейшем подключении модулей принцип сохраняется.

Подключение к контроллеру Leonardo:

Подключение к контроллеру ESP:

Количество подключенных модулей ограничено шиной I2C и количеством свободной памяти ОЗУ.

Библиотека iarduino_Metro

Библиотека iarduino_Metro была специально разработана и используется для упрощения работы с модулями "Metro".

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

По шине I2C возможно подключить до 128 устройств. Но по протоколу I2C часть адресов находится в резерве. Именно поэтому библиотека iarduino_Metro назначает адреса устройствам с 10 по 126, что позволяет подключить до 117 устройств.

Работа с модулями:

Основной особенностью линейки "Metro" является то, что вам больше не надо знать адрес устройства. Благодаря использованию библиотеки iarduino_Metro вам достаточно знать только его порядковый номер в общей цепи, чтобы начать с ним работать.

Принцип работы:

Рассмотрим принцип работы модуля светодиода на примере следующей схемы:

Как вы видите, в одну цепь подключены управляющая плата, кнопка, зуммер, датчик температуры и влажности, светодиод.

Зная порядковый номер модуля светодиода, достаточно просто отправить ему одну из команд библиотеки:

Metro[3].on()   — включаем светодиод;

Metro[3].off() — выключаем светодиод;

Пример:

После считывания всех модулей на шине I2C, библиотека создаёт массив Metro, который содержит элементы для управления модулями.

Светодиод в цепи имеет порядковый номер 3. Порядковый номер модуля в цепи совпадает с порядковым номером элемента в массиве. Обратите внимание, что нумерация начинается с 0:

  • Metro[0] — управляет ближайшим к управляющей плате модулем - Кнопкой;
  • Metro[1] — управляет следующим модулем - Зуммером;
  • Metro[2] — управляет Датчиком температуры и влажности;
  • Metro[3] — управляет Светодиодом;

Тогда скетч для работы с тем же светодиодом будет выглядеть следующим образом:

#include <Wire.h>                       // Подключаем библиотеку Wire.
#include <iarduino_Metro.h>             // Подключаем библиотеку.

void setup() {
  iarduino_Metro_Start();               //  Определяем все модули на шине I2C
}

void loop() {
  Metro[3].on();                        // Включаем светодиод.
  delay(1000);                          // Ждём 1 секунду.
  Metro[3].off();                       // Выключаем светодиод.
  delay(1000);                          // Ждём 1 секунду.
}

Подробнее о линейке:

Все модули, кроме управляющих, построены на базе микроконтроллера STM32, что позволяет снять часть нагрузки с управляющей платы.

Этот процесс выглядит следующим образом: управляющая плата отправляет команду один раз, а получает и следит за её выполнением уже  микроконтроллер STM32.

Линейка "Metro" включает в себя:

Управляющие платы:

Управляющая плата Leonardo — плата управления, выполненная на базе микроконтроллера ATmega32u4, что позволяет работать с ней как с обычной Arduino Leonardo без установки дополнительных драйверов и внесения каких-либо изменения в среду Arduino IDE.

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

  • Flash-память: 32 Кб, из которых 4 Кб используются для загрузчика;
  • ОЗУ: 2.5 Кб;
  • EEPROM: 1 Кб;
  • Тактовая частота: 16 МГц;

Управляющая плата ESP — плата управления, выполненная на базе микроконтроллера ESP8266 с поддержкой WiFi, и чипа CH340, что означает, что для  работы с ней вам необходимо будет настроить среду Arduino IDE.

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

  • Flash-память: 4Мб;
  • ОЗУ: ~36 Кб;
  • Тактовая частота: 80 - 160 МГц;
  • WiFi 802.11 b/g/n

      Количество модулей в цепи:

      Количество модулей, которое возможно подключить к управляющим платам, ограничено шиной I2C и количеством свободной памяти ОЗУ. Управляющие платы, построенные на разных микроконтроллерах, имеют разное количество памяти ОЗУ.

      Таким образом, количество модулей, подключаемых к плате Leonardo и к плате ESP будет разным.

      • Количество модулей, подключаемых к плате Leonardo: до 40 (при наличии питания не ниже 3.3В на каждом модуле);
      • Количество модулей, подключаемых к плате ESP: до 117 (при наличии питания не ниже 3.3В на каждом модуле);

      Модули:

      RGB-светодиод;

      Может использоваться для подачи световых и цветовых сигналов, формирования любого цвета за счёт смешивания цветов RGB.

      Имеет встроенные функции цветовых переливов.

      Можно использовать для создания декоративного освещения, подсветки, гирлянд и так далее.

      Кнопка;

      Считается, что кнопка может быть нажата или отпущена. Но это только 2 состояния кнопки, а есть ещё действия: нажимается или отпускается. Так же можно определить, что кнопка переключает состояние, используется в качестве триггера, удерживается нажатием в течении указанного времени. Всё это отслеживается микроконтроллером модуля.

      Зуммер;

      Используется для подачи звуковых сигналов задаваемой частоты и длительности. Можно задать количество сигналов.

      Имеются встроенные функции подачи сигналов "успех", "неудача", "тревога", а так же проигрывание мелодий.

      Датчик температуры и влажности;

      Используется для определения температуры и уровня влажности окружающей среды. 

      Благодаря тому, что модуль построен на базе датчика AM2320, по уровню точности он качественно превосходит аналоги, построенные на базе датчиков DHT11 DHT22.

      Модуль позволяет не только считывать текущий уровень температуры и влажности, но и фиксировать их изменения на заданное значение.

      Датчик освещённости;

      Создан на базе цифрового датчика BH1750, который позволяет получить уровень освещенности в люксах, а не абстрактные значения аналоговых датчиков света.

      Модуль позволяет не только считывать текущий уровень освещенности, но и фиксировать его изменение на заданное значение.

      Светодиодная матрица 8х8;

      Может использоваться для вывода графических изображений, текста, символов и цифр размером 8х8.

      Возможности светодиодной матрицы 8х8:

      • Отображение произвольных графических изображений;
      • Отображение цифр, символов кириллицы и латиницы по их коду;
      • Редактирование таблицы символов;
      • Отображение бегущей строки с заданием скорости, направления, а так же метода её вывода;
      • Задание нескольких вариантов анимации появления и исчезновения;
      • Установка яркости изображений;

      Примеры:

      Включение и выключение светодиода нажатием кнопки.

      Подключаем модули по следующей схеме:

      Функция iarduino_Metro_Start() находит модули на шине I2C, назначает им адреса и создаёт массив Metro.

      Первым модулем в цепи, после управляющей платы, является светодиод, вторым - кнопка, следовательно, элемент массива Metro с индексом "0" относится к светодиоду, а с индексом "1" относится к кнопке.

      #include <Wire.h>                                                    // Подключаем библиотеку Wire.
      #include <iarduino_Metro.h>                                          // Подключаем библиотеку.
      
      void setup() {
        iarduino_Metro_Start();                                            // Определяем все модули на шине I2C.
      }
      
      void loop() {
        //  Включаем или выключаем светодиод с каждым новым нажатием кнопки:
        if (Metro[1].read(KEY_TRIGGER)) {                                  // Проверяем кнопку. Функция read с параметром KEY_TRIGGER возвращает либо true либо false, меняя эти значения с каждым новым нажатием на кнопку.
            Metro[0].on();                                             // Включаем светодиод фиолетовым цветом, так как функция KEY_TRIGGER вернула true.
        } else {
            Metro[0].off();                                                // Выключаем светодиод, так как функция вернула false.
        }
      }

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

      Применение:

      • Умный дом;
      • Интернет вещей;

      Ссылки:

      Обсуждение