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

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

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

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

Для загрузки скетчей в плату управления Metro ESP из программы «Arduino IDE», необходимо выбрать пункт: «Инструменты» > Плата: «NodeMCU 1.0 (ESP-12E Module)».

Видео:

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

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

  • Микроконтроллер: ESP8266 (в модуле ESP-12E);
  • Ширина шины данных: 32-бит;
  • Тактовая частота 80 МГц;
  • Объём памяти программ (FLASH): 4 Мб (из которых 1 или 3 Мб можно выделить под файловую систему SPIFFS). Файловая система SPIFFS может использоваться для хранения любых файлов, например, для хранения файлов web-страниц, их картинок, видео, архивов и т.д.
  • Объем RAM (ОЗУ): 80 Кб (часть используется предустановленными библиотеками чипа);
  • Объем EEPROM: Данная память отсутствует. Но Вы можете воспользоваться библиотекой EEPROM которая имитирует наличие EEPROM используя для хранения (записи и чтения) данных один сектор памяти программ (FLASH);
  • Выводы на колодке для подключения модулей «Metro»:
    • SCL (GPIO_5) - линия тактирования шины I2C;
    • SDA (GPIO_4) - линия данных шины I2C;
    • 5V - питание модулей;
    • GND - общий;
    • ADR - вывод установки адреса (GPIO_16);
  • Рабочее напряжение: 5 В (постоянного тока);
  • Разъем питания и подключения к компьютеру: Micro USB;
  • Логика выводов: 3,3 В (толерантны к 5 В);
  • Максимальный ток на выводах: 12 мА;
  • Радиоинтерфейс Wi-Fi: 802.11 b/g/n с WEP, WPA, WPA2;
  • Режимы работы Wi-Fi: Клиент, точка доступа, клиент+точка доступа;
  • Выходная мощность Wi-Fi в режиме 802.11b: +19.5 дБм;

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

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

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

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

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

Питание:

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

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

Плата управления Metro ESP построена на базе модуля ESP-12E от компании «Ai-thinker» построенного на микроконтроллере ESP8266. На плате имеется колодка для подключения любых модулей линейки «Metro», состоящая из 5 выводов: SDA (GPIO_4), SCL (GPIO_5), ADR (GPIO_16), 5V и GND. К выводам шины I2C (SDA и SCL) можно подключать не только модули линейки «Metro» но и любые другие модули работающие по шине I2C (за исключением модулей с адресом 0x09 на шине I2C).

Плата управления Metro ESP (в отличии от платы управления Metro Leonardo) имеет встроенный WiFi модуль и значительно больший объем памяти, что позволяет подключать больше модулей «Metro», и управлять ими через интернет. Но для работы с платой управления Metro ESP необходимо добавить плату «NodeMCU 1.0 (ESP-12E Module)» через «менеджер плат» в программе «Arduino IDE».

Специально для работы с модулями «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 ESP будет выводить в монитор последовательного порта названия всех обнаруженных модулей линейки «Metro», присвоенные им адреса на шине I2C, версию прошивки и объем ОЗУ отведённый для работы с каждым модулем.

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

    Применение:

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

    Ссылки:

    Обсуждение