Главная » Arduino
Призовой фонд
на сентябрь 2020 г.
1. 1500 руб
Сайт Паяльник
2. Осциллограф DSO138
Сайт Паяльник
3. 50 руб.

Мини-компьютер M5StickC на модуле ESP32-PICO

Краткое описание

Развитие микроконтроллеров достигло такого уровня, что на их базе изготавливают полноценные микрокомпьютеры. Именно так позиционируется один из многочисленных продуктов "M5Stack" - корпусная плата разработчика с некоторым набором необходимой периферии, под названием "M5StickC". Плата основана на современном миниатюрном модуле "ESP32-PICO", от разработчика "Espressif Systems", который является продолжением идеи создания беспроводных модулей "ESP8266", и несмотря на свою миниатюрность, значительно превосходит их как по скорости работы, так и по поддерживаемым интерфейсам связи.. Модули "ESP32" имеют расширенные возможности и богатую периферию, и работать с ними нелегко как новичку, так и продвинутому программисту. Как раз для облегчения этой задачи и была создана платформа "M5Stack" со своими разработками и средой для их программирования. По определению создателей плату M5StickC вполне можно ассоциировать с персональным компьютером, так как она так же, как и компьютер имеет процессор, постоянную и оперативную память, экран для вывода информации и кнопки для взаимодействия с пользователем. Кроме этого в устройстве интегрированы различные датчики и сенсоры, а так же на плате расположены порты расширения для подключения всевозможных совместимых модулей:

Набор разработчика для программирования

В связи с этим можно просто заниматься программированием и разработкой приложений, не отвлекаясь на сборку самого устройства и состыковку разнообразных модулей с ним. Не придётся ничего паять, и даже использовать дополнительные провода. Плата имеет всё основное для её запуска и использования, в том числе цветной экран, кнопки и даже встроенный аккумулятор с цифровой системой мониторинга и управления питанием. Разрабатывать программы для платы можно как в Arduino IDE, так и в фирменной среде UIFlow, а для продвинутых программистов имеется возможность писать скрипты на языке "Python", так как имеется поддержка интерпретатора "MicroPython", а так же операционной системы реального времени для создания ответственных приложений повышенной точности. На базе рассматриваемого микрокомпьютера в первую очередь можно создавать различные устройства для интернета вещей, а также воплотить в жизнь множество других проектов, связанных с микроконтроллерами.

 

Характеристики и возможности

Как уже говорилось, плата (микрокомпьютер) разработана с применением миниатюрного модуля ESP32-PICO-D4, который в свою очередь основан на микроконтроллере ESP32 с двухъядерным 32-битным процессором Tensilica Xtensa®  LX6, работающим на тактовой частоте 240 МГц. Модуль имеет Flash-память 4 МБайт и, кроме множества распространённых для микроконтроллеров интерфейсов связи, обеспечивает поддержку беспроводных протоколов Wi-Fi и Bluetooth:

Возможности микрокомпьютера M5StickC

Кроме самого модуля PICO-D4 на плате микрокомпьютера интегрированы: жидкокристаллический экран, часы реального времени, гироскоп с акселерометром, микрофон, аккумулятор с системой контроля и управления питанием, ИК-передатчик, светодиод и кнопки. Для подключения внешних модулей и устройств имеется интерфейс GROVE(I2C+I/0+UART), а проводная связь с персональным компьютером осуществляется через порт USB, посредством встроенного USB-Serial конвертера. Через этот же порт происходит и зарядка штатного аккумулятора. Заявленные технические характеристики микрокомпьютера M5StickC приведены в таблице:

 Параметр   Значение 
 Микроконтроллер  ESP32 240MHz dual core, 600 DMIPS, 520KB SRAM 
 Флешь память  4MB
 Внешнее питание  5В, 500мА
 Проводные интерфейсы  USB-TypeC x 1, GROVE(I2C+I/0+UART) x 1
 Внешние порты  G0, G26, G36 (HAT)
 Беспроводные интерфейсы  Wi-Fi 802.11 b/g/ni и Bluetooth v4.2 BR/EDR/BLE
 Жидкокристаллический экран   0.96 inch, 80*160 Colorful TFT LCD, ST7735S
 Акселерометр и гироскоп  MPU6886 MEMS
 Цифровой микрофон  SPM1423 MIC
 Часы реального времени  BM8563 RTC
 Контроллер питания  AXP192 PMU
 Инфракрасный передатчик  Встроенный
 Светодиод  RED LED
 Кнопки  Две пользовательские кнопки
 Антенна  Встроенная 2.4G 3D антенна
 Автономное питание  Аккумулятор 3.7 В, 80 или 95 мА*Час
 Рабочая температура  0 - 40°C (32 - 104°F)
 Размеры  48.2 x 25.5 x 13.7 мм
 Масса  14 гр
 Материал корпуса  Пластик

Промышленное производство платы было запущено в марте 2019 года, а ровно через год была увеличена ёмкость встроенного аккумулятора с 80 мА*Час до 95 мА*Час. Проект имеет открытый исходный код, и на официальном сайте, в свободном доступе, предоставляется принципиальная схема всего устройства:

Принципиальная схема микрокомпьютера

Там же имеется карта подключения выводов модуля и структурная схема питания всех узлов:

Карта подключения выводов модуля Структурная схема питания узлов

Устройство может питаться как от штатного аккумулятора в автономном режиме, так и от порта USB. В последнем случае параллельно осуществляется и зарядка аккумулятора. Различные уровни питания могут подаваться и на внешние модули, подключаемые к выведенным наружу портам. Всем питанием управляет многофункциональный контроллер питания и зарядки AXP192, который вместе с другими устройствами подключён к микроконтроллеру ESP32 по шине I²C. Для удобства представления, данные о подключении всех имеющихся устройств и контроллера управления питанием сведены в таблицы:

 ESP32   Назначение 
 Светодиоды и кнопки 
 GPIO9  IR Transmitter
 GPIO10  RED LED
 GPIO37  BUTTON A
 GPIO39   BUTTON B
 Жидкокристаллический экран 
 GPIO5  TFT_CS
 GPIO13  TFT_CLK
 GPIO15  TFT_MOSI
 GPIO18  TFT_RST
 GPIO23  TFT_DC
 GROVE порт
 GPIO32  SDA
 GPIO33  SCL
 Микрофон
 GPIO0  SCL
 GPIO34  SDA
 Гироскоп/Акселерометр/Контроллер питания 
 GPIO21  SDA
 GPIO22  SCL

 

 PMU AXP192   Назначение 
 LDOio0  Microphone
 LDO1  RTC
 LDO2  TFT backlight 
 LDO3  TFT IC
 DC-DC1  ESP32/MPU6886/3.3V 
 IPSOUT  5V GROVE

 

Для написания программ предоставляется два простых варианта - Arduino IDE с загрузкой уже скомпилированного кода в память, или среда разработки UIFlow, которая имеет визуальный блочный конструктор исполняемых программ, и текстовый редактор, в котором можно писать скрипты на языке Python, и загружать их в микроконтроллер по нескольку, выбирая впоследствии один из них для исполнения. В таком случае, на самом микроконтроллере понадобится установка интерпретатора MicroPython, которая легко осуществляется из этой же среды UIFlow, и об этом будет рассказано немного позже, ну а пока посмотрим где и как можно приобрести данную плату разработчика M5StickC, для быстрой разработки и воплощения своих идей.

 

Заказ/Распаковка/Комплектация

Заказ делался в официальном магазине M5Stack на площадке AliExpress, и на момент написания обзора стоимость расширенной комплектации составила US $15.90 без учёта доставки. Кроме самой платы M5StickC в данную комплектацию входят два модуля HAT SPK и HAT ENV, кабель USB, и несколько различных вариантов крепления, в том числе и с ремешком, для ношения на запястье:

Товар в официальном магазине M5Stack на площадке AliExpress

Товар приходит в стандартном пузырчатом пакете, с информацией о содержимом и получателе. Внутри него находится продолговатая пластиковая коробочка с плотно упакованным самим устройством, и всей его комплектацией:

Пакет с товаром Коробочка с устройством

Устройство со всей комплектацией

Устройство уже прикреплено к ремешку, а отдельно при этом имеется ещё два разных крепления, с помощью которых можно произвести установку на стену, или прикрепить к другому устройству. В комплекте имеется так же два, так называемых модуля "HAT" в пластиковых корпусах, подключаемых к основному блоку снаружи, к специализированному разъёму, имеющему 8 контактов. Один модуль предназначен для воспроизведения звуковых сигналов, а второй для измерения температуры и влажности окружающей среды, атмосферного давления, и магнитного поля земли.

Для подключения к компьютеру, в данной комплектации имеется так же кабель с USB-C на USB-A длиной 20 см. Да, непонятно зачем, но плата имеет разъём именно USB Type-C, хотя как видно, все возможности этого разъёма не задействованы, и с таким же успехом здесь можно было применить разъём USB-B micro. Другое дело, если бы с обеих концов кабеля был бы USB-C, но это не так, и задействованы всего 4 жилы кабеля:

Комплект разработчика на базе M5StickC

Пальчиковый компьютер M5StickC на ремешке Дополнительные крепления для M5StickC

Дополнительный модуль ENV HAT для M5StickC Дополнительный модуль SPK HAT для M5StickC

Кабель USB-C на USB-A длиной 20 см

Ремешок изготовлен из синтетического материала, он очень плотный и крепкий, устройство на нём держится хорошо, и его удобно будет носить на запястье. Имеются пластиковые элементы, но они довольно крепкие, и выглядят надёжно, а их долговечность покажет время. С ремешка устройство можно снять, оттянув 4 удерживающие его защёлки, по две с каждой стороны. Под эти защёлки на корпусе имеются небольшие прямоугольные прорези. С нижней стороны приклеена карта подключения выводов модуля ESP32 с некоторой дополнительной информацией:

M5StickC с ремешком на запястье Застёгивание ремешка M5StickC на запястье

M5StickC без держателя Информационная наклейка с картой подключения выводов

 

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

Включение/Проверка

Сразу после извлечения из коробки устройство не реагировало ни на одну из кнопок и никак не подавало признаков жизни. По всей вероятности, за время доставки товара, аккумулятор разрядился полностью, и система защиты обесточила цепь питания микроконтроллера. Такое поведение конечно может быть обусловлено нерабочим состоянием устройства, но будем надеяться на лучшее. А для проверки предположений нужно попробовать зарядить аккумулятор микрокомпьютера. Для этого USB-кабель был подключён к адаптеру питания и устройство сразу запустилось. На экране отобразилась анимация фирменного логотипа, а затем появилась надпись ошибки батареи питания. Скорее всего за время бездействия её напряжение опустилось ниже предела для нормальной эксплуатации, так как выше нормы оно быть не могло:

Анимация логотипа при загрузке

Надпись ошибки батареи питания

 

Немного зарядившись устройство смогло продолжить работу в автономном режиме, после отсоединения кабеля, но всё же лучше отключить его и дать аккумулятору зарядится до конца. Отключение производится удержанием на несколько секунд боковой кнопки, которая расположена ближе к USB-разъёму. Кратковременным нажатием этой кнопки происходит включение, если устройство было отключено, или перезагрузка из включённого состояния. В плату уже была загружена демонстрационная программа. и тестирование напряжения аккумулятора с отображением ошибки оказалось частью этой программы. В нормальном режиме, сразу после запуска, происходит демонстрация работы гироскопа, и на экране отображается куб, со значениями отклонения от горизонтальных осей:

Работа устройства в автономном режиме

Демонстрация работы гироскопа

 

Здесь же можно обратить внимание на характеристики установленного экрана. Углы обзора у него хорошие со всех сторон, но по размерам он очень маленький и выводить на него что-то мелкое не очень комфортно и читабельно:

Угол обзора экрана слева Угол обзора экрана справа

Угол обзора экрана сверху Угол обзора экрана снизу

 

Нажатием на кнопку "A" или кнопку "B" осуществляется переключение на следующую подпрограмму демонстрации работы другого периферийного модуля, и после гироскопа на экран выводятся показания часов реального времени, а всё это время в углу устройства периодически вспыхивает встроенный красный светодиод. Что касается самих кнопок, то они очень жёсткие, но при нажатии ощущается чёткий щелчок, которого к сожалению нет при отпускании. Точнее при отпускании кнопки тоже есть щелчок, но размыкание контактов происходит до него, и если ослаблять усилие нажатия постепенно, то можно пропустить момент срабатывания:

Отображение часов реального времени

Вспыхивание встроенного светодиода

 

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

Графическая визуализация работы микрофона

 

Далее следует проверка беспроводных коммуникаций и передача данных через инфракрасный светодиод, свечение которого не видно глазом и не заметно на обычную камеру, но его можно зафиксировать сравнительно простой камерой дешёвого телефона, у объектива которой менее эффективный инфракрасный фильтр. После передачи данных через световой канал идёт активация Bluetooth, но проверить его работу не удалось, так как в наличии не было второго Bluetooth-устройства:

Включение инфракрасного передатчика

Передача данных через инфракрасный канал связи

Активация модуля Bluetooth

 

Далее всё идёт по кругу и, нажимая кнопки, можно циклически переключаться между данными режимами работы. На самом деле, в Ардуиновском тексте демонстрационной программы, имеются и другие пункты для проверки остальной периферии, но некоторые из них, например такой как проверка Wi-Fi, почему то закомментированы, и следовательно не включены в файл прошивки. Но что бы загрузить демонстрационную программу в память микроконтроллера, не обязательно устанавливать среду разработки и компилировать исходный текст. Платформа предоставляет небольшие программы под операционные системы MacOS и Windows с различными демонстрационными прошивками. Предварительно установив драйвер устройства, и запустив такую программу, можно просто указав номер порта, загрузить прошивку в микроконтроллер. Именуются такие небольшие загрузчики EasyLoader, но для их нормального функционирования понадобится установка дополнительных компонентов операционной системы, так как с первого раза загрузка не удалась и появилось сообщение об ошибке:

Ошибка при запуске загрузчика

 

Изначально утилита загрузчика запускалась в операционной системе Windows 8.1 X86 (32-Bit) и отображаемая ошибка означает, что для работы приложения необходимо установить пакет "Visual C++ Redistributable for Visual Studio 2015", но установить данный пакет не удалось, по какой-либо одной из общеизвестных причин. Вообще установка этого пакета довольно проблематична, и в своё время пришлось отказаться от некоторых нужных программ, требующих для своей работы наличие версии именно 2015. После долгих поисков был найден ноутбук с установленной операционной системой Windows 10 x64, на которой утилита-загрузчик запускается без проблем и одним нажатием записывает код демонстрационной программы в память микроконтроллера:

Загрузка программы в память микроконтроллера

Успешное завершение записи

 

Таким образом можно легко и просто проверить работу большинства периферийных модулей устройства. Ну а для написания собственных, или использования готовых пользовательских проектов, нужно установить среду разработки, и для этого есть два простых и быстрых варианта. Есть ещё и третий, но он скорее для профессионального использования и требует некоторого обучения, поэтому здесь этот вариант рассматриваться не будет.

 

Разработка программ для M5StickC в среде Arduino IDE

Для тех, кто уже освоился в среде разработки Ардуино, самым простым и доступным способом работы с обозреваемой платой, будет добавление её поддержки в Arduino IDE. Производитель предлагает так же скачать уже настроенный и адаптированный под работу с платой дистрибутив этой среды, но более правильным решением будет добавление платы в уже имеющуюся и установленную у Вас среду разработки Ардуино, а делается это довольно просто. Для этой цели на сайте производителя так же имеется инструкция, которую мы сейчас и рассмотрим.

Данную инструкцию можно применить к различным версиям Arduino IDE на операционных системах Windows, Mac OS X или Linux. В первую очередь в среде разработки Ардуино нужно перейти на вкладку "File >> Preferences >> Settings" и в поле "Additional Boards Manager URLs" добавить адрес ресурса:

https://dl.espressif.com/dl/package_esp32_index.json

Далее нужно открыть вкладку "Tools >> Board: >> Boards Manager..." и в поле поиска ввести и найти "ESP32". После чего надо нажать "Install" и дождаться успешной загрузки и установки пакета для поддержки плат на базе ESP32. Теперь уже на вкладке "Tools >> Board:" можно выбрать плату "M5Stick-C" и остаётся только добавить библиотеку для неё. Для добавления совместимой библиотеки нужно перейти на вкладку "Sketch >> Include Library >> Manage Libraries..." и в поле поиска ввести и найти "M5StickC". После чего надо нажать "Install" и дождаться успешной загрузки и установки библиотеки.

При подключении платы к компьютеру, все драйверы для неё без проблем устанавливаются из каталога драйверов дистрибутива Arduino IDE. Проверка в среде разработки Ардуино производилась на операционной системе Windows 8.1 X86 и в диспетчере устройств плата определилась как "M5 Serial Converter", так как на ней установлен USB-TTL UART Serial Adapter:

M5 Serial Converter

 

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

Для начала было решено скомпилировать и загрузить в плату общий демонстрационный тест модулей расширения, предварительно раскомментировав пункт сканирования беспроводных Wi-Fi сетей. Но для успешной компиляции этой программы требуется установить дополнительную библиотеку FastLED, ссылка на которую имеется в самом первом комментарии перед началом текста программы, и эта библиотека один раз используется в самой программе:

Библиотека FastLED в скетче FactoryTest Библиотека FastLED в скетче FactoryTest

 

Также необходимо изменить схему раздела на "No OTA (Large APP)" или "Minimal SPIFFS (Large APPS with OTA)", так как исполняемый код этой программы получается довольно объёмный, и он не помещается вместе со стандартным беспроводным загрузчиком:

Схема раздела "No OTA (Large APP)" Схема раздела "Minimal SPIFFS (Large APPS with OTA)"

 

Компилирование скетча, по меркам Ардуино происходит очень долго и занимает несколько минут, хотя загрузка исполняемого кода происходит всего за несколько секунд,  а после загрузки происходит аппаратный сброс микроконтроллера платы. Сам демонстрационный скетч можно открыть перейдя по пунктам "File >> Examples >> M5StickC >> Basics >> FactoryTest". Там же рядом находятся и все остальные примеры для рассматриваемой платы:

Компилирование и загрузка исходного текста программы File >> Examples >> M5StickC >> Basics >> FactoryTest

 

С загруженной, через среду разработки Ардуино, демонстрационной программой, плата работает почти так же, как и в предыдущем случае. Разница заключается в более частом мигании штатного светодиода, ну и в дополнительном пункте демонстрации работы встроенного модуля Wi-Fi, дойдя до которого, на экране отображаются доступные беспроводные сети:

Демонстрация работы модуля Wi-Fi

 

Кроме того, если в любом из случаев, запустить демонстрационную программу с нажатой кнопкой "B", то включается так называемый режим тестирования (Test Mode), при котором происходит тестирование некоторых дополнительных интерфейсов, включая экран устройства (происходит заливка разными цветами, а затем отображаются различные цветные линии) и попытку проверки внешних выводов, которая завершается ошибками. Так же имеется пункт измерения температуры и влажности, но здесь тоже отображаются нули. Видимо необходимо подключение дополнительных датчиков, хотя модуль "ENV" из комплекта никак не влияет на эти показания:

Режим Test Mode - температура и влажность Режим Test Mode - внешние выводы

 

В примерах библиотеки имеется скетч для работы с дополнительным модулем из комплекта, для измерения температуры, влажности, магнитного поля и давления. Но для успешной компиляции и загрузки этого скетча, необходимо установить ещё две библиотеки - Adafruit BMP280 и Adafruit Unified Sensor:

Библиотека Adafruit Unified Sensor

Скетч для работы с модулем ENV

 

Перед включением устройства, к нему нужно подсоединить указанный внешний модуль ENV, который как и все модули расширения типа HAT-мама, подключается к наружному разъёму с восемью выводами. На этот разъём выведены контакты питания и три GPIO микроконтроллера. После подключения модуля, можно включить микрокомпьютер и запустить тестовую программу, которая при исправных деталях показывает на экране текущие данные о температуре, влажности, отклонении магнитного поля земли и атмосферном давлении. Правда на месте давления отображалась какая-то неадекватная величина:

Интерфейс наружного разъёма типа HAT-мама

Демонстрация работы модуля расширения HAT-ENV

 

Как Вы помните, в комплекте с устройством имеется ещё второй модуль расширения HAT-SPK для воспроизведения звука, но в примерах Ардуино для его проверки имеется очень примитивная и непонятная программа. Поэтому его работоспособность будет проверена дальше, из примеров среды UIFlow.

Ну а из более серьёзных Ардуиновских примеров был подготовлен и загружен "Светодиод, управляемый по Wi-Fi". Это стандартный пример библиотеки, но в него была добавлена возможность управления светодиодом и со штатной кнопки, имеющейся на плате устройства, а так же отображение состояния светодиода на экране. При работе с этим примером можно открыть монитор последовательного порта, в котором будут отображаться запросы и процесс подключения. Самим устройством создаётся точка доступа, с именем и паролем, заданными в скетче. При подключении к этой точке доступа, в браузере телефона или ноутбука нужно перейти на адрес 192.168.4.1 и откроется страница с двумя ссылками, нажимая на которые можно удалённо включать и выключать штатный светодиод микрокомпьютера. То же самое происходит при нажатии и удержании кнопки "A" на самой плате:

Подключение к созданной точке доступа Удалённое управление штатным светодиодом

Выключенное состояние светодиода Включённое состояние светодиода

 

Дополнительно были испробованы ещё три скетча: сторонняя программа с демонстрацией работы гироскопа и акселерометра, которую можно скачать на официальной странице сообщества платформы, и две азартные игры - кости и слоты. В режимах гироскопа или акселерометра на экране отображаются постепенно заполняющиеся три линии разных цветов (график определённого интервала времени), которые при неподвижном устройстве являются ровными, и отклоняются от своих осей при наклоне в режиме гироскопа, или при сильной тряске в режиме акселерометра:

Наглядная демонстрация работы гироскопа Наглядная демонстрация работы акселерометра

 

При запуске игры "Кости" на экране появляется предложение встряхнуть устройство, и после каждого встряхивания выпадают случайные комбинации двух костяшек - можно немного развлечься с другом и выиграть у него, ну или проиграть - это как повезёт. А игра "Слоты" представляет собой обычный игровой автомат с различными картинками, который запускается кнопкой "A", и так же этой кнопкой происходит остановка отдельных секций, которых всего три. При совпадении картинок со всех трёх секций, они подсвечиваются синим цветом, подтверждающим выигрыш:

Игра "Кости" - предложение встряхнуть Игра "Кости" - результат

Игра "Слоты" - различные картинки Игра "Слоты" - выигрыш

 

И под конец, из стандартного примера библиотеки, был разработан проект простых часов, с использованием внутреннего модуля RTC. Можно отключить устройство кнопкой питания, а когда нужно, включить, и на экране будет отображаться реальное время. При нажатии на кнопку "A" несколько секунд отображается текущая дата. В блоке "Setup" скетча имеется две закоментированные строки для установки даты и времени, перед которыми можно задать текущее время и записать его в микросхему модуля: По желанию можно реализовать синхронизацию параметров с доступного сервера через интернет, но для упрощения и минимализации программы этого сделано не было,  да и вообще это всего лишь часть для большого проекта, так как использовать такую многофункциональную плату только для часов нецелесообразно, а в данном случае просто было показано как можно применить часть возможностей данного микрокомпьютера:

Отображение времени Отображение даты

 

На этом быстрая проверка платы разработчика со средой Ардуино подошла к концу, и далее будет коротко рассмотрена фирменная среда разработки UIFlow IDE. Писать программы под рассматриваемое устройство в Arduino IDE оказалось просто и очень доступно, особенно для тех, кто уже знаком с Ардуино и имеет некоторый опыт работы с ней. Но компиляция занимает много времени, а исполняемый код получается довольно большим. Посмотрим что предлагают нам сами производители этой платы в плане разработки программ.

 

Разработка программ для M5StickC в среде UIFlow IDE

Для разработки программ под продукцию M5Stack производитель рекомендует использовать среду UIFlow, в которой имеется возможность строить проекты в конструкторе из пазлов, или писать текст программы на языке MicroPython во встроенном редакторе. Имеется два варианта среды - веб-версия для работы онлайн, и автономная программа "UIFlow Desktop IDE" под различные операционные системы. Мы рассмотрим версию для установки на операционную систему Windows 10, и для начала работы понадобится произвести определённые действия, которые описаны в инструкции на официальном сайте компании. Установочный файл нужно скачать в соответствии с Вашей операционной системой (в данном случае соответственно под Windows 10). Следует отметить что на момент написания статьи, для операционных систем от компании Microsoft, имеется только версия программы именно под Windows 10, и эта версия даже не запустилась на операционной системе Windows 8.1 X86. После же успешной установки и запуска программы, она предлагает установить драйвер CP210x, который не требуется для устройств M5StickC, но потребуется установка другого драйвера, который пришлось искать отдельно и скачивать с другого ресурса:

Предложение об установке драйвера во время запуска

Идентификатор устройства в диспетчере Отображение USB-устройства в диспетчере

 

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

USB\VID_0403&PID_6001&REV_0400
USB\VID_0403&PID_6001

 

По этим данным поисковик подсказал, что для корректной работы устройства необходимы FTDI-драйвера, которые далее были скачаны с официального сайта производителя FTDI Chip. После установки этих драйверов появляется виртуальный COM-порт, который и нужно в дальнейшем указать в настройках UIFlow. Так же нужно выбрать тип устройства, в данном случае Stick-C, а дополнительно ещё имеется возможность выбора языка меню и темы оформления:

Основные настройки программы

 

Перед началом работы с устройством через среду UIFlow, на нём нужно установить интерпретатор языка MicroPython. Для это нужно загрузить необходимый пакет, открыв раздел "FirmwareBurner" в левом верхнем углу программы. Откроется дополнительное окно, в котором указываем наше устройство, загружаем, а затем записываем необходимый пакет интерпретатора. Во время записи пакета в память микроконтроллера, отображаются его характеристики и весь текущий процесс, после завершения которого можно использовать устройство для работы со скриптами, которые ещё нужно написать, ну или взять готовые:

Меню в левом верхнем углу программы

Загрузка пакета интерпретатора Запись пакета интерпретатора

Процесс записи пакета интерпретатора

 

В этом же окне загрузчика, в полях SSID и Password можно предварительно указать идентификатор и пароль беспроводной сети, для дальнейшего подключения устройства к ней, в случае удалённого программирования платы. Если этого не сделать, то при запуске в режиме удалённого программирования, устройство само создаст беспроводную сеть без пароля, с идентификатором M5-6214 в данном случае. На экране самого устройства при этом будет отображаться название созданной сети и IP-адрес для открывания страницы настройки подключения. После подключения к этой сети, в телефоне или компьютере нужно будет открыть браузер и перейти по адресу 192.168.4.1 где откроется страница настройки, для подключения к беспроводной сети с доступом в интернет. Указав корректные данные, плата подключится к серверу UIFlow и отобразит на своём экране ключ API, который нужно будет использовать в веб-версии среды разработки для загрузки скриптов в память устройства через Wi-Fi сеть:

Заполнение полей SSID и Password

Создание беспроводной сети с идентификатором M5-6214 Подключение к беспроводной сети с идентификатором M5-6214

Ввод данных SSID и Password в браузере

 

Кому удобно программировать устройство удалённо, смело может пользоваться предоставляемой функцией, но так как при длительной отладке штатный аккумулятор разрядится и всё равно придётся подключить USB-кабель хотя бы для зарядки, то мне лично удобней работать автономно, без подключения к интернету, через кабель USB. Это личное мнение, и кому-то наверное будет удобней наоборот, но здесь уже дело вкуса, и далее рассмотрим как это осуществить.

Итак, после записи интерпретатора нужно перевести устройство в режим программирования по USB. Делается это нажатием кнопки "B" сразу после включения или перезагрузки устройства. Теперь при подключении кабеля к компьютера интерпретатор будет общаться со средой разработки и можно будет отлаживать или загружать в память написанные программы. В нижнем левом углу окна UIFlow IDE, до обозначения версии программы, отображается используемый COM-порт и статус подключения, а рядом здесь же имеются значки-кнопки для совершения некоторых действий, таких как обновление, сохранение или открывание текста программы, а так же загрузка скрипта в память устройства:

Режим автономного программирования по USB

Отображение состояния устройства в UIFlow IDE

 

Для быстрой проверки какого-либо совместимого модуля расширения платы, можно воспользоваться готовыми примерами, которые открываются с главной панели инструментов в правом верхнем углу окна среды разработки. В данном случае был загружен пример для работы с датчиком ENV HAT, который идёт в комплекте с данной платой.

После открывания проекта можно сразу видеть всю программу в виде блоков, а так же её исходный текст, если перейти в режим просмотра и ручного редактирования текста, но в таком случае возврат в блочный конструктор сбросит написанный в редакторе текст, поэтому сразу нужно определится с вариантом построения проекта и до конца следовать ему. Можно создать большую часть из блоков, а затем перейти в текстовый редактор и дописать необходимые данные вручную. Так же на графическом изображении виртуального устройства появляются некоторые элементы, которые можно добавить инструментами из верхнего левого угла окна программы, а нажатием на них всплывает окно, где можно задать необходимые параметры отображения. Физическая загрузка написанного скрипта в память устройства производится выбором пункта "Download" во всплывающем меню в правом верхнем углу окна программы:

Список примеров среды разработки UIFlow

Пример ENV-HAT среды разработки UIFlow

Блочный конструктор среды разработки UIFlow Текстовый редактор среды разработки UIFlow

Пункт "Download" во всплывающем меню программы

 

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

Демонстрация работы примера для датчика ENV

Article2

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

Далее был загружен пример для работы с модулем громкоговорителя, который в среде Ардуино имел кривую реализацию и не представлял никакой практической ценности. Здесь же, с использование этого модуля HAT-SPK, создан примитивный музыкальный инструмент. На экране устройства отображается виртуальная клавиатура, а при наклонении, по ней перекатывается шарик, и нажимая на кнопку "A" раздаётся звуковой сигнал, по тональности соответствующий положению шарика на клавишах:

Пример для работы с модулем громкоговорителя HAT-SPK

Перекатывание шарика по виртуальным клавишам Перекатывание шарика по виртуальным клавишам

Воспроизведение звукового сигнала при нажатии кнопки

 

Скрипт проекта можно отлаживать не загружая его в устройство и не пуская его на перезагрузку. Для этого на главной панели инструментов среды разработки имеется треугольник, запускающий выполнение скрипта, и меняя параметры можно быстро видеть изменения на самом устройстве в живую. Правда в таком некоторые вещи могут отображаться некорректно и может потребоваться перезагрузка микроконтроллера.

Так же приятной особенностью написания программ на языке Python оказалось то, что в памяти устройства можно одновременно хранить несколько скриптов, и в нужный момент выбирать для исполнения один из них. Делается это через меню интерпретатора, которое вызывается зажатием кнопки "A" во время включения платы. Скрипты хранятся в памяти с названием проекта, и можно быстро ориентироваться по этому названию:

Главная панель инструментов

Вызывание меню интерпретатора Выбор скрипта для исполнения

 

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

Из раздела "Hardware's" этого дерева был выбран подраздел "Power", в котором находятся функции для работы с модулем питания платы. На основе этих функций был создан простой проект контроля и мониторинга основных параметров встроенного аккумулятора.

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

 

 

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

В заключение можно сказать, что среда разработки UIFlow представляет немалый интерес, и даёт некоторое удобство, в связи с написанием скриптов на языке Python, и дальнейшего их запуска по выбору в интерпретаторе. Имеется много готовых функций и различных блоков для работы с данными и переменными, но полностью законченных примеров пока мало, и многое придётся писать самому, но платформа для этого предоставляет всё необходимое, в виде основных устройств и модулей расширения, так что не нужно будет отвлекаться на пайку и сборку, а тем более на составление и проектирование схем.

 

Разборка и внутренний осмотр

Теперь давайте немного приоткроем пластиковую завесу и заглянем внутрь нашего устройства, и двух его модулей расширения из комплекта. Обычно Я это делаю сразу после распаковки, до включения и проверки работоспособности, но в данном случае был реальный риск повредить что-нибудь физически, и очень хотелось показать читателю возможности платы и рабочее устройство. Теперь, когда все тесты пройдены, настал момент проведения экспертизы конструкции на качество сборки и оформления.

Для разборки микрокомпьютера нужно открутить два винта и снять верхнюю часть корпуса, под которой находится экран. Винты вкручены прямо в пластик верхней крышки, а на экране с задней стороны наклеен небольшой отрезок двухстороннего скотча, на второй стороне которого оставлена защитная плёнка, и экран свободно двигается, удерживаясь лишь верхней крышкой корпуса. Его шлейф прямо припаян к контактным площадкам платы без какого-либо разъёма.

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

Разборка мини-компьютера M5StickC

Внутреннее устройство платы разработчика M5StickC

 

Далее был разобран сенсорный модуль расширения HAT-ENV, работающий по протоколу I²C, где так же нужно открутить два винта, закрученные прямо в пластик. Потом надо снять пластиковую крышку с информационной наклейкой, и вытащить небольшую печатную плату, к которой с одной стороны припаян разъём для подключения, а с другой вторая маленькая плата с четырьмя выводами, и установленным на ней датчиком температуры и влажности DHT12. На основной плате, со стороны разъёма, установлены так же датчики атмосферного давления BMP280 и направления магнитного поля BMM150. Монтаж выполнен качественно, но немного огорчает факт закручивания винтов прямо в пластик, хотя держится всё хорошо и довольно надёжно:

Разборка сенсорного модуля расширения ENV

Датчик влажности модуля ENV Датчики температуры и магнитного поля модуля ENV

Принципиальная схема сенсорного модуля ENV

 

И наконец последний модуль расширения из приобретённого комплекта - это модуль воспроизведения звуковых сигналов HAT-SPK на основе усилителя D-класса PAM8303, развивающий на нагрузке сопротивлением 4 Ом мощность до 3 Ватт. Для его разборки, как Вы уже наверное догадались, так же нужно открутить два винта и снять пластиковую крышку. Внутри находится плата с разъёмом на одной стороне, и радиокомпонентами на другой. Громкоговоритель в пространстве расположен отдельно от платы, и к сожалению, как можно увидеть, диффузором он направлен к стенке корпуса, что естественно скажется на качестве воспроизведения звука, так как эта стенка полная, без прорезей и отверстий, а сетчатая часть находится с другой стороны корпуса.

Было решено извлечь громкоговоритель и повернуть его диффузором к свободному пространству, для передачи звука по воздуху. Немного мешали провода, так как они выходят у задней кромки динамика, а в углу корпуса имеется укрепляющая стойка, которая мешает этим проводам, что видно и послужило затруднением для правильной его установки. С помощью небольшой грубой силы, так что бы ничего не повредить, эти провода были загнуты, и громкоговоритель был установлен в необходимое положение. Принципиальные схемы модулей расширения взяты с официального сайта их разработчика:

Разборка звукового модуля расширения SPK

Плата звукового модуля SPK с громкоговорителем Правильная установка громкоговорителя в корпусе модуля

Принципиальная схема звукового модуля расширения SPK

 

Заключение

После нескольких недель работы с описываемой отладочной платой, можно сделать вывод, что это устройство реально позволяет забыть о состыковке не только аппаратных средств друг с другом, но и всех их вместе взятых со средой разработки. Неоспоримо большим достоинством платформы является низкий порог вхождения, несмотря на развитый современный микроконтроллер и сложную обширную периферию. Писать программы для данного устройства немногим сложнее, чем для самой простой отладочной платы Arduino UNO, которую мы кстати так же рассматривали в одной из прошлых статей. Называя плату разработчика M5StickC устройством, подразумевается наличие не только платы, но и всех необходимых компонентов для полноценной её работы и использования. Недостатком можно назвать слишком маленький экран, на котором плохо отображаются мелкие детали, и малую ёмкость встроенного аккумулятора, которого в обычном режиме работы, без использования энергосбережения, хватит максимум на два часа непрерывной работы, а то и ещё меньше. Но эти недостатки окупаются компактностью и малыми размерами устройства, а применяя режимы сна, можно рационально использовать заряд батареи и активировать другие режимы по мере необходимости.

Описанное устройство со своей платформой модулей и разработки является хорошей альтернативой платам на базе ESP8266 и тем более STM32, как по цене, так и по функционалу. Имеется так же сообщество, которое уже активно растёт и развивается, и в дальнейшем популярность платформы только увеличится.

 

Дополнительные материалы:

 

 

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (1) | Я собрал (0) | Подписаться

+1
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Бокс для хранения компонентов Конструктор регулируемого преобразователя напряжения LM317
вверх