Назад

Новые платы XIAO с IPS-дисплеями от Seeed — работают в браузере через несколько дней после анонса

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 1.47 inch IPS Touch Display: собранная плата с заводской панелью управления слева и обратная сторона носителя с XIAO nRF52840 Plus, разъёмом батареи и слотом microSD справа, в руке

Три платы

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

XIAO 0.96” IPS Display — панель ST7789, 80 x 160, с двумя пользовательскими кнопками. Маленькая: индикатор состояния, носимое устройство, всё, что требует строки текста и числа.

XIAO 0.96 inch IPS Display, спереди и сзади, с заводской панелью управления, показывающей показатели батареи, движения и микрофона

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

XIAO 1.14 inch IPS Display, спереди и сзади, с тремя пользовательскими кнопками, разъёмом Grove I2C и разъёмом батареи

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

Что на самом деле рисует браузер

Три эмулируемые панели рядом: 0.96 inch с Electronic Quicksand от Seeed, где песчинки собрались в одном углу, 1.14 inch с цветными полосами GraphicTest и 1.47 inch с Touch Circle, где девять белых кругов отмечают места касаний пальцем

Эти три картинки — не макеты. Каждая из них — это буфер кадра эмулируемого контроллера дисплея, заполненный собственной скомпилированной прошивкой Seeed.

Цепочку стоит расписать подробно, потому что в ней весь смысл. Ваш скетч компилируется настоящим arduino-cli с собственным ядром nRF52 от Seeed, под собственный FQBN платы. Полученная прошивка исполняется инструкция за инструкцией новым браузерным движком nRF52840 — таким же движком, который уже запускает платы ESP32 и RP2040 в Velxio. Прошивка поднимает периферию SPI и начинает выдавать байты; модель ST7789 считывает линии chip-select и data/command с пинов на каждом байте и декодирует, что ей велено делать. То, что вы видите на экране, — это содержимое памяти этого контроллера.

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

Начните с графического теста

  1. Откройте velxio.dev/example/xiao-114-graphictest. Аккаунт не нужен.
  2. Нажмите кнопку воспроизведения на панели инструментов. Скетч компилируется на серверах Velxio — первая сборка новой библиотеки занимает пару минут, последующие быстрые — а затем плата загружается.
  3. Смотрите, как панель проходит через десять графических примитивов: цветные полосы, линии, прямоугольники, круги, треугольники, текст, градиент по пикселям. Монитор порта внизу печатает, сколько времени занял каждый из них, точно так же, как по USB на столе.
  4. Затем что-нибудь измените. Поменяйте цвет, добавьте 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 на десятую долю вольта и посмотрите, как конечный автомат скетча принимает решение.

Эмулируемая панель 0.96 inch с демонстрацией батареи от Seeed после опускания ползунка: зелёная иконка батареи, 52 процента, 3.80 В

Что выявил запуск вендорского кода

Четырнадцать из пятнадцати примеров в галерее — это собственные файлы 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, отображается правильно; скетч, доверяющий библиотеке на слово, показывает ту же замену красного и синего, что и на вашем столе. Та же поправка применяется к инверсии дисплея — именно так чёрные фоны той платы перестали выходить белыми.

Что не смоделировано

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

Каждый пример в галерее

XIAO 0.96” IPS Display

XIAO 1.14” IPS Display

XIAO 1.47” IPS Touch Display

Платы есть в магазине Seeed — 0.96 дюйма, 1.14 дюйма и 1.47 дюйма Touch — а демонстрационные скетчи находятся в Seeed-Projects/Display-Gadgets. Попробуйте их сначала здесь; скетчи работают одинаково в обоих случаях без изменений.

Фотографии плат предоставлены Seeed Studio.


Поделиться:
David Montero

Автор

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Похожие статьи


Предыдущая статья
222 модуля Seeed Grove теперь работают в браузере
Следующая статья
Создание 3D-гонки в стиле OutRun для ESP32-S3 без Z-буфера