8 сентября Seeed Studio анонсировала три новых устройства: IPS-дисплеи диагональю 0,96 дюйма, 1,14 дюйма и 1,47 дюйма, каждый — плата-носитель с уже припаянным к ней XIAO nRF52840 Plus. Экран, кнопки, 6-осевой IMU, микрофон и разъём для батареи — всё это размером с кончик пальца.
Теперь они есть в Velxio. Можно открыть одну, нажать Run и увидеть, как собственная демонстрационная прошивка Seeed рисует на стекле — без заказа платы и на бесплатном тарифе. Плата на холсте нарисована так, как её фотографирует Seeed, спереди и сзади: стекло, кнопки USR и микрофон на одной стороне; припаянный XIAO nRF52840 Plus, разъём батареи, переключатель питания, слот для карты или порт Grove и контактные площадки для проводов — на другой.

Три платы
Все три несут один и тот же компьютер — XIAO nRF52840 Plus — и одни и те же датчики вокруг него: 6-осевой IMU, PDM-микрофон, Bluetooth Low Energy и разъём JST для батареи с контролем заряда. Различаются стекло и то, что Seeed разместила вокруг него.
XIAO 0.96” IPS Display — панель ST7789, 80 x 160, с двумя пользовательскими кнопками. Маленькая: индикатор состояния, носимое устройство, всё, что требует строки текста и числа.

XIAO 1.14” IPS Display — панель ST7789, 135 x 240, три пользовательские кнопки и, в отличие от двух других, разъём Grove I2C. Именно из-за этого разъёма стоит выбрать её, если хотите подключить к ней датчик.

XIAO 1.47” IPS Touch Display — панель JD9853A, 172 x 320, с ёмкостным сенсорным слоем и слотом microSD. Флагман, и внутри у него происходит больше всего.
Что на самом деле рисует браузер

Эти три картинки — не макеты. Каждая из них — это буфер кадра эмулируемого контроллера дисплея, заполненный собственной скомпилированной прошивкой Seeed.
Цепочку стоит расписать подробно, потому что в ней весь смысл. Ваш
скетч компилируется настоящим arduino-cli с собственным ядром nRF52
от Seeed, под собственный FQBN платы. Полученная прошивка исполняется
инструкция за инструкцией новым браузерным движком nRF52840 — таким же
движком, который уже запускает платы ESP32 и RP2040 в Velxio. Прошивка
поднимает периферию SPI и начинает выдавать байты; модель ST7789
считывает линии chip-select и data/command с пинов на каждом байте и
декодирует, что ей велено делать. То, что вы видите на экране, — это
содержимое памяти этого контроллера.
Ничего не перехватывается на уровне библиотеки. Если заменить графическую библиотеку Seeed собственными записями по SPI, панель всё равно будет рисовать.
Начните с графического теста
- Откройте velxio.dev/example/xiao-114-graphictest. Аккаунт не нужен.
- Нажмите кнопку воспроизведения на панели инструментов. Скетч компилируется на серверах Velxio — первая сборка новой библиотеки занимает пару минут, последующие быстрые — а затем плата загружается.
- Смотрите, как панель проходит через десять графических примитивов: цветные полосы, линии, прямоугольники, круги, треугольники, текст, градиент по пикселям. Монитор порта внизу печатает, сколько времени занял каждый из них, точно так же, как по USB на столе.
- Затем что-нибудь измените. Поменяйте цвет, добавьте
fillCircle, запустите снова.
Наклоните, коснитесь, положите файл на карту
Панель — это сложная часть, но не самая интересная. Эти платы стоит симулировать из-за всего остального на них, и всё это подключено к чему-то, чем можно управлять мышью.
IMU. Демонстрация Electronic Quicksand от Seeed сбрасывает несколько сотен песчинок и позволяет им падать в ту сторону, в которую наклонена плата. Нажмите Sensors на панели инструментов холста, перетащите точку на площадке Tilt — и песок потечёт в угол. LSM6DS3TR-C отвечает по I2C по своему реальному адресу и с чувствительностью, указанной в его даташите, так что числа, которые преобразует скетч, — это числа, которые выдал бы реальный компонент. Та же площадка теперь управляет IMU на голых XIAO nRF52840 Sense, MG24 Sense и nRF54L15 Sense, в которых стоит тот же компонент.
Сенсорное стекло. На плате 1,47 дюйма ёмкостный контроллер отвечает тем же 14-байтовым отчётом, который читает драйвер Seeed, с линией прерывания, притянутой к низкому уровню, пока палец прижат. Рисуйте на панели мышью — и круги появятся там, где вы кликнули.
Слот microSD. Карта и панель на реальной плате делят одну шину SPI, различаясь линиями chip select, и здесь они тоже её делят. Файлы вашего проекта находятся на карте, когда скетч её монтирует, а свои можно добавить через панель SD Card платы.
Батарея. Это самый приятный сюрприз. Демонстрация батареи от Seeed не доверяет статическому напряжению — при подключении по USB узел зарядного устройства сам может выглядеть как ячейка — поэтому сначала она изучает базовый уровень только по USB и объявляет о наличии батареи только после устойчивого падения. Опустите ползунок батареи на той же панели Sensors на десятую долю вольта и посмотрите, как конечный автомат скетча принимает решение.

Что выявил запуск вендорского кода
Четырнадцать из пятнадцати примеров в галерее — это собственные файлы
Seeed, изменённые всего двумя способами: примечание о портировании
вверху превращается в короткий заголовок с указанием происхождения
скетча, и удаляется один #include, который ядро и так предоставляет.
Их запуск выявил две реальные проблемы в Seeed_GFX2 1.0.0 —
графической библиотеке, с которой поставляются эти платы.
Она не собирается на регистрозависимой файловой системе. Каталог
продуктов библиотеки включает XIAO_ePaper_Boards.h и
reTerminal_ePaper_Boards.h, тогда как сами файлы называются EPaper
— и каждый из этих двух заголовков затем называет свой собственный
заголовок конфигурации так же неправильно, так что вторая пара
всплывает только после исправления первой. Четыре строки #include в
трёх файлах. На macOS и Windows это разрешается; на Linux — а именно
на нём работает ферма компиляции — каждый скетч, затрагивающий
библиотеку, останавливается с «No such file or directory». Это до сих
пор в основной ветке апстрима. Velxio исправляет эти четыре строки,
когда загружает библиотеку, так что примеры собираются.
В конфигурации панели 1,14 дюйма неправильный порядок цветов. Библиотека настраивает эту плату как RGB; панель подключена как BGR. Seeed знают об этом — их собственные демонстрации для платы несут локальное переопределение в скетче с комментарием «the panel is physically wired for BGR color order» — но собственная конфигурация библиотеки не догнала это, и последствие видно в собственной записи Seeed их графического теста на вики: первая цветная полоса рисуется красной, а выходит синей, а та, что рисуется жёлтой, выходит голубой.
Второе изменило то, как Velxio моделирует панель. Модель дисплея с фиксированным флагом «поменять красный и синий» не может это воспроизвести, потому что замена — не свойство одной лишь панели; это то, что получается, когда разводка панели и бит порядка цветов контроллера противоречат друг другу. Поэтому Velxio моделирует их отдельно и позволяет им взаимно компенсироваться. Скетч, использующий переопределение Seeed, отображается правильно; скетч, доверяющий библиотеке на слово, показывает ту же замену красного и синего, что и на вашем столе. Та же поправка применяется к инверсии дисплея — именно так чёрные фоны той платы перестали выходить белыми.
Что не смоделировано
Скажем прямо о пробелах, потому что симулятор, который тихо ничего не делает, хуже того, который об этом сообщает:
- PDM-микрофон и выходные площадки I2S. Ничто на холсте не подаёт на них сигнал, поэтому демо голосовой панели и диктофона от Seeed намеренно не включены в галерею, а не рисуют в ней прямую линию.
- Bluetooth. Радиомодуль nRF52840 вне области применения этого движка.
- Raise to Wake, другое демо IMU от Seeed, требует прерывания пробуждения IMU и режима System ON sleep чипа. Ни то, ни другое пока не смоделировано.
Каждый пример в галерее
XIAO 0.96” IPS Display
XIAO 1.14” IPS Display
- GraphicTest
- Grove SHT31 на разъёме I2C
- Три пользовательские кнопки
- Состояние батареи
- Electronic Quicksand (IMU)
XIAO 1.47” IPS Touch Display
- GraphicTest
- Touch Circle
- Чтение текста с microSD
- Состояние батареи
- Electronic Quicksand (IMU)
- Демо панели
- Диагностика только LCD
Платы есть в магазине Seeed — 0.96 дюйма, 1.14 дюйма и 1.47 дюйма Touch — а демонстрационные скетчи находятся в Seeed-Projects/Display-Gadgets. Попробуйте их сначала здесь; скетчи работают одинаково в обоих случаях без изменений.
Фотографии плат предоставлены Seeed Studio.