Краткое описание
Развитие микроконтроллеров достигло такого уровня, что на их базе изготавливают полноценные микрокомпьютеры. Именно так позиционируется один из многочисленных продуктов «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:
Кроме самого модуля 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, и несколько различных вариантов крепления, в том числе и с ремешком, для ношения на запястье:
Товар приходит в стандартном пузырчатом пакете, с информацией о содержимом и получателе. Внутри него находится продолговатая пластиковая коробочка с плотно упакованным самим устройством, и всей его комплектацией:
Устройство уже прикреплено к ремешку, а отдельно при этом имеется ещё два разных крепления, с помощью которых можно произвести установку на стену, или прикрепить к другому устройству. В комплекте имеется так же два, так называемых модуля «HAT» в пластиковых корпусах, подключаемых к основному блоку снаружи, к специализированному разъёму, имеющему 8 контактов. Один модуль предназначен для воспроизведения звуковых сигналов, а второй для измерения температуры и влажности окружающей среды, атмосферного давления, и магнитного поля земли.
Для подключения к компьютеру, в данной комплектации имеется так же кабель с USB-C на USB-A длиной 20 см. Да, непонятно зачем, но плата имеет разъём именно USB Type-C, хотя как видно, все возможности этого разъёма не задействованы, и с таким же успехом здесь можно было применить разъём USB-B micro. Другое дело, если бы с обеих концов кабеля был бы USB-C, но это не так, и задействованы всего 4 жилы кабеля:
Ремешок изготовлен из синтетического материала, он очень плотный и крепкий, устройство на нём держится хорошо, и его удобно будет носить на запястье. Имеются пластиковые элементы, но они довольно крепкие, и выглядят надёжно, а их долговечность покажет время. С ремешка устройство можно снять, оттянув 4 удерживающие его защёлки, по две с каждой стороны. Под эти защёлки на корпусе имеются небольшие прямоугольные прорези. С нижней стороны приклеена карта подключения выводов модуля ESP32 с некоторой дополнительной информацией:
Корпуса, как самого устройства, так и дополнительных модулей, собраны хорошо — ничего не скрепит и не разваливается, как это часто бывает с тонким пластиком. Их уверенно можно носить в кармане, или же в сумке вместе с другими устройствами.
Включение/Проверка
Сразу после извлечения из коробки устройство не реагировало ни на одну из кнопок и никак не подавало признаков жизни. По всей вероятности, за время доставки товара, аккумулятор разрядился полностью, и система защиты обесточила цепь питания микроконтроллера. Такое поведение конечно может быть обусловлено нерабочим состоянием устройства, но будем надеяться на лучшее. А для проверки предположений нужно попробовать зарядить аккумулятор микрокомпьютера. Для этого USB-кабель был подключён к адаптеру питания и устройство сразу запустилось. На экране отобразилась анимация фирменного логотипа, а затем появилась надпись ошибки батареи питания. Скорее всего за время бездействия её напряжение опустилось ниже предела для нормальной эксплуатации, так как выше нормы оно быть не могло:
Немного зарядившись устройство смогло продолжить работу в автономном режиме, после отсоединения кабеля, но всё же лучше отключить его и дать аккумулятору зарядится до конца. Отключение производится удержанием на несколько секунд боковой кнопки, которая расположена ближе к USB-разъёму. Кратковременным нажатием этой кнопки происходит включение, если устройство было отключено, или перезагрузка из включённого состояния. В плату уже была загружена демонстрационная программа. и тестирование напряжения аккумулятора с отображением ошибки оказалось частью этой программы. В нормальном режиме, сразу после запуска, происходит демонстрация работы гироскопа, и на экране отображается куб, со значениями отклонения от горизонтальных осей:
Здесь же можно обратить внимание на характеристики установленного экрана. Углы обзора у него хорошие со всех сторон, но по размерам он очень маленький и выводить на него что-то мелкое не очень комфортно и читабельно:
Нажатием на кнопку «A» или кнопку «B» осуществляется переключение на следующую подпрограмму демонстрации работы другого периферийного модуля, и после гироскопа на экран выводятся показания часов реального времени, а всё это время в углу устройства периодически вспыхивает встроенный красный светодиод. Что касается самих кнопок, то они очень жёсткие, но при нажатии ощущается чёткий щелчок, которого к сожалению нет при отпускании. Точнее при отпускании кнопки тоже есть щелчок, но размыкание контактов происходит до него, и если ослаблять усилие нажатия постепенно, то можно пропустить момент срабатывания:
Следующим нажатием на кнопку можно перейти к проверке микрофона, которая при обнаружении звука достаточной громкости, отображается графически в виде всплесков волны:
Далее следует проверка беспроводных коммуникаций и передача данных через инфракрасный светодиод, свечение которого не видно глазом и не заметно на обычную камеру, но его можно зафиксировать сравнительно простой камерой дешёвого телефона, у объектива которой менее эффективный инфракрасный фильтр. После передачи данных через световой канал идёт активация 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:
После произведения всех этих действий, с платой можно работать как и с любыми другими совместимыми платами Ардуино. Разница заключается в том, что к ней уже подключены определённые модули расширения и периферийные устройства, для которых просто понадобится добавить нужную библиотеку.
Для начала было решено скомпилировать и загрузить в плату общий демонстрационный тест модулей расширения, предварительно раскомментировав пункт сканирования беспроводных Wi-Fi сетей. Но для успешной компиляции этой программы требуется установить дополнительную библиотеку FastLED, ссылка на которую имеется в самом первом комментарии перед началом текста программы, и эта библиотека один раз используется в самой программе:
Также необходимо изменить схему раздела на «No OTA (Large APP)» или «Minimal SPIFFS (Large APPS with OTA)», так как исполняемый код этой программы получается довольно объёмный, и он не помещается вместе со стандартным беспроводным загрузчиком:
Компилирование скетча, по меркам Ардуино происходит очень долго и занимает несколько минут, хотя загрузка исполняемого кода происходит всего за несколько секунд, а после загрузки происходит аппаратный сброс микроконтроллера платы. Сам демонстрационный скетч можно открыть перейдя по пунктам «File >> Examples >> M5StickC >> Basics >> FactoryTest». Там же рядом находятся и все остальные примеры для рассматриваемой платы:
С загруженной, через среду разработки Ардуино, демонстрационной программой, плата работает почти так же, как и в предыдущем случае. Разница заключается в более частом мигании штатного светодиода, ну и в дополнительном пункте демонстрации работы встроенного модуля Wi-Fi, дойдя до которого, на экране отображаются доступные беспроводные сети:
Кроме того, если в любом из случаев, запустить демонстрационную программу с нажатой кнопкой «B», то включается так называемый режим тестирования (Test Mode), при котором происходит тестирование некоторых дополнительных интерфейсов, включая экран устройства (происходит заливка разными цветами, а затем отображаются различные цветные линии) и попытку проверки внешних выводов, которая завершается ошибками. Так же имеется пункт измерения температуры и влажности, но здесь тоже отображаются нули. Видимо необходимо подключение дополнительных датчиков, хотя модуль «ENV» из комплекта никак не влияет на эти показания:
В примерах библиотеки имеется скетч для работы с дополнительным модулем из комплекта, для измерения температуры, влажности, магнитного поля и давления. Но для успешной компиляции и загрузки этого скетча, необходимо установить ещё две библиотеки — Adafruit BMP280 и Adafruit Unified Sensor:
Перед включением устройства, к нему нужно подсоединить указанный внешний модуль ENV, который как и все модули расширения типа HAT-мама, подключается к наружному разъёму с восемью выводами. На этот разъём выведены контакты питания и три GPIO микроконтроллера. После подключения модуля, можно включить микрокомпьютер и запустить тестовую программу, которая при исправных деталях показывает на экране текущие данные о температуре, влажности, отклонении магнитного поля земли и атмосферном давлении. Правда на месте давления отображалась какая-то неадекватная величина:
Как Вы помните, в комплекте с устройством имеется ещё второй модуль расширения 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, но потребуется установка другого драйвера, который пришлось искать отдельно и скачивать с другого ресурса:
В диспетчере устройств плата отображается со следующим физическим идентификатором:
USBVID_0403&PID_6001&REV_0400 USBVID_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 сеть:
Кому удобно программировать устройство удалённо, смело может пользоваться предоставляемой функцией, но так как при длительной отладке штатный аккумулятор разрядится и всё равно придётся подключить USB-кабель хотя бы для зарядки, то мне лично удобней работать автономно, без подключения к интернету, через кабель USB. Это личное мнение, и кому-то наверное будет удобней наоборот, но здесь уже дело вкуса, и далее рассмотрим как это осуществить.
Итак, после записи интерпретатора нужно перевести устройство в режим программирования по USB. Делается это нажатием кнопки «B» сразу после включения или перезагрузки устройства. Теперь при подключении кабеля к компьютера интерпретатор будет общаться со средой разработки и можно будет отлаживать или загружать в память написанные программы. В нижнем левом углу окна UIFlow IDE, до обозначения версии программы, отображается используемый COM-порт и статус подключения, а рядом здесь же имеются значки-кнопки для совершения некоторых действий, таких как обновление, сохранение или открывание текста программы, а так же загрузка скрипта в память устройства:
Для быстрой проверки какого-либо совместимого модуля расширения платы, можно воспользоваться готовыми примерами, которые открываются с главной панели инструментов в правом верхнем углу окна среды разработки. В данном случае был загружен пример для работы с датчиком ENV HAT, который идёт в комплекте с данной платой.
После открывания проекта можно сразу видеть всю программу в виде блоков, а так же её исходный текст, если перейти в режим просмотра и ручного редактирования текста, но в таком случае возврат в блочный конструктор сбросит написанный в редакторе текст, поэтому сразу нужно определится с вариантом построения проекта и до конца следовать ему. Можно создать большую часть из блоков, а затем перейти в текстовый редактор и дописать необходимые данные вручную. Так же на графическом изображении виртуального устройства появляются некоторые элементы, которые можно добавить инструментами из верхнего левого угла окна программы, а нажатием на них всплывает окно, где можно задать необходимые параметры отображения. Физическая загрузка написанного скрипта в память устройства производится выбором пункта «Download» во всплывающем меню в правом верхнем углу окна программы:
Скрипт загружается очень быстро и по всей вероятности занимает мало места в памяти устройства. После его записи плата перезагружается и начинается выполнение последнего загруженного скрипта, в нашем случае примера для датчика ENV. На экране графически и текстом отображаются значения температуры, влажности и атмосферного давления окружающей среды:
Article2
От Ардуиновского примера проект отличается тем, что здесь не происходит измерение, и соответственно отображение направления магнитного поля, но имеется графическая визуализация значений.
Далее был загружен пример для работы с модулем громкоговорителя, который в среде Ардуино имел кривую реализацию и не представлял никакой практической ценности. Здесь же, с использование этого модуля HAT-SPK, создан примитивный музыкальный инструмент. На экране устройства отображается виртуальная клавиатура, а при наклонении, по ней перекатывается шарик, и нажимая на кнопку «A» раздаётся звуковой сигнал, по тональности соответствующий положению шарика на клавишах:
Скрипт проекта можно отлаживать не загружая его в устройство и не пуская его на перезагрузку. Для этого на главной панели инструментов среды разработки имеется треугольник, запускающий выполнение скрипта, и меняя параметры можно быстро видеть изменения на самом устройстве в живую. Правда в таком некоторые вещи могут отображаться некорректно и может потребоваться перезагрузка микроконтроллера.
Так же приятной особенностью написания программ на языке Python оказалось то, что в памяти устройства можно одновременно хранить несколько скриптов, и в нужный момент выбирать для исполнения один из них. Делается это через меню интерпретатора, которое вызывается зажатием кнопки «A» во время включения платы. Скрипты хранятся в памяти с названием проекта, и можно быстро ориентироваться по этому названию:
Кроме вполне законченных примеров, в среде разработки так же имеется много готовых функций для работы с периферийными устройствами и внутренними модулями микрокомпьютера. Они сгруппированы в единое дерево, которое располагается по левую сторону от области блочного конструктора, и не видны в режиме текстового редактора.
Из раздела «Hardware’s» этого дерева был выбран подраздел «Power», в котором находятся функции для работы с модулем питания платы. На основе этих функций был создан простой проект контроля и мониторинга основных параметров встроенного аккумулятора.
Во время своего исполнения, программа измеряет напряжение и ток аккумулятора, а так же состояние зарядки и температуру самого контроллера питания. Если какой-то из параметров выходит за пределы нормы, то происходит выключение устройства с предварительным предупреждением в виде текстового сообщения, а в нормальном режиме, вместе со статусом зарядки, происходит отображение на экране тока и напряжения. При автономном питании от аккумулятора, сила тока отображается с отрицательным значением, означающим отдачу энергии, а при достижении определённого значения напряжения во время зарядки, она прекращается и сила тока принимает нулевое значение, так как дальнейшее питание происходит от кабеля:
На основе этого можно создать графическую визуализацию состояния и уровня заряда аккумулятора для других, более сложных проектов, и отображать всё это в виде значков, как на мобильном телефоне или ноутбуке.
В заключение можно сказать, что среда разработки UIFlow представляет немалый интерес, и даёт некоторое удобство, в связи с написанием скриптов на языке Python, и дальнейшего их запуска по выбору в интерпретаторе. Имеется много готовых функций и различных блоков для работы с данными и переменными, но полностью законченных примеров пока мало, и многое придётся писать самому, но платформа для этого предоставляет всё необходимое, в виде основных устройств и модулей расширения, так что не нужно будет отвлекаться на пайку и сборку, а тем более на составление и проектирование схем.
Разборка и внутренний осмотр
Теперь давайте немного приоткроем пластиковую завесу и заглянем внутрь нашего устройства, и двух его модулей расширения из комплекта. Обычно Я это делаю сразу после распаковки, до включения и проверки работоспособности, но в данном случае был реальный риск повредить что-нибудь физически, и очень хотелось показать читателю возможности платы и рабочее устройство. Теперь, когда все тесты пройдены, настал момент проведения экспертизы конструкции на качество сборки и оформления.
Для разборки микрокомпьютера нужно открутить два винта и снять верхнюю часть корпуса, под которой находится экран. Винты вкручены прямо в пластик верхней крышки, а на экране с задней стороны наклеен небольшой отрезок двухстороннего скотча, на второй стороне которого оставлена защитная плёнка, и экран свободно двигается, удерживаясь лишь верхней крышкой корпуса. Его шлейф прямо припаян к контактным площадкам платы без какого-либо разъёма.
На плате можно увидеть цифровой микрофон, несколько микросхем, кнопки и светодиоды, а также маленький круглый литиевый аккумулятор MS614SE для питания часов реального времени. Для дальнейшей разборки устройства необходимо отпаять несколько соединений, но так как обзор для чистых программистов, то паять Мы ничего не будем, и оставим всё остальное втайне, так как на данный момент нет никакой надобности полностью разбирать рабочее устройство, ну а под капот мы заглянули.
Далее был разобран сенсорный модуль расширения HAT-ENV, работающий по протоколу I²C, где так же нужно открутить два винта, закрученные прямо в пластик. Потом надо снять пластиковую крышку с информационной наклейкой, и вытащить небольшую печатную плату, к которой с одной стороны припаян разъём для подключения, а с другой вторая маленькая плата с четырьмя выводами, и установленным на ней датчиком температуры и влажности DHT12. На основной плате, со стороны разъёма, установлены так же датчики атмосферного давления BMP280 и направления магнитного поля BMM150. Монтаж выполнен качественно, но немного огорчает факт закручивания винтов прямо в пластик, хотя держится всё хорошо и довольно надёжно:
И наконец последний модуль расширения из приобретённого комплекта — это модуль воспроизведения звуковых сигналов HAT-SPK на основе усилителя D-класса PAM8303, развивающий на нагрузке сопротивлением 4 Ом мощность до 3 Ватт. Для его разборки, как Вы уже наверное догадались, так же нужно открутить два винта и снять пластиковую крышку. Внутри находится плата с разъёмом на одной стороне, и радиокомпонентами на другой. Громкоговоритель в пространстве расположен отдельно от платы, и к сожалению, как можно увидеть, диффузором он направлен к стенке корпуса, что естественно скажется на качестве воспроизведения звука, так как эта стенка полная, без прорезей и отверстий, а сетчатая часть находится с другой стороны корпуса.
Было решено извлечь громкоговоритель и повернуть его диффузором к свободному пространству, для передачи звука по воздуху. Немного мешали провода, так как они выходят у задней кромки динамика, а в углу корпуса имеется укрепляющая стойка, которая мешает этим проводам, что видно и послужило затруднением для правильной его установки. С помощью небольшой грубой силы, так что бы ничего не повредить, эти провода были загнуты, и громкоговоритель был установлен в необходимое положение. Принципиальные схемы модулей расширения взяты с официального сайта их разработчика:
Заключение
После нескольких недель работы с описываемой отладочной платой, можно сделать вывод, что это устройство реально позволяет забыть о состыковке не только аппаратных средств друг с другом, но и всех их вместе взятых со средой разработки. Неоспоримо большим достоинством платформы является низкий порог вхождения, несмотря на развитый современный микроконтроллер и сложную обширную периферию. Писать программы для данного устройства немногим сложнее, чем для самой простой отладочной платы Arduino UNO, которую мы кстати так же рассматривали в одной из прошлых статей. Называя плату разработчика M5StickC устройством, подразумевается наличие не только платы, но и всех необходимых компонентов для полноценной её работы и использования. Недостатком можно назвать слишком маленький экран, на котором плохо отображаются мелкие детали, и малую ёмкость встроенного аккумулятора, которого в обычном режиме работы, без использования энергосбережения, хватит максимум на два часа непрерывной работы, а то и ещё меньше. Но эти недостатки окупаются компактностью и малыми размерами устройства, а применяя режимы сна, можно рационально использовать заряд батареи и активировать другие режимы по мере необходимости.
Описанное устройство со своей платформой модулей и разработки является хорошей альтернативой платам на базе ESP8266 и тем более STM32, как по цене, так и по функционалу. Имеется так же сообщество, которое уже активно растёт и развивается, и в дальнейшем популярность платформы только увеличится.
Дополнительные материалы:
- ESP32 — A feature-rich MCU with integrated Wi-Fi and Bluetooth
- M5StickC — The reference docs for M5Stack products
- M5StickC UNIT and C-HAT class modules
- Arduino IDE Development
- UIFlow Quick Start
- Temperature, humidity, air pressure and magnetic field module
- M5StickC compatible speaker
- M5stack Download Store
- Проекты с использованием M5Stack M5StickC
- COVID-19 Real-Time Data Monitor