KryonOS превращает платы ESP32 в мини-компьютер на JavaScript

KryonOS — это небольшая ОС, работающая на JavaScript, которая превращает поддерживаемую плату разработки ESP32 с сенсорным экраном в автономный компьютер с собственным графическим интерфейсом, средством запуска приложений и файловым хранилищем. Она предоставляет базовую программную среду, необходимую для использования платы без написания и загрузки отдельной прошивки для каждого приложения.

В отличие от традиционной прошивки ESP32, KryonOS хранит приложения отдельно от основной системы и запускает их через встроенную среду выполнения JavaScript. Она также включает магазин приложений, который позволяет пользователям скачивать и устанавливать приложения и обновления по Wi-Fi без перепрошивки устройства.

KryonOS running on two ESP32 based devices

Ключевые особенности KryonOS:

  • Поддерживаемые MCU – ESP32 (WROOM-32) , ESP32-S2 , ESP32-S3 , и ESP32-C3
  • Хранилище – поддержка карт MicroSD через шину HSPI
  • Дисплей
    • Контроллер дисплея ILI9341 с резистивным сенсорным контроллером XPT2046, подключённым через VSPI
    • Экспериментальная поддержка некоторых других контроллеров дисплея, например, ST7789V2
  • Движок JavaScript – Duktape 2.x (совместим с ES5/ES5.1).
  • Графический движок – прямая отрисовка 16-битного RGB565 на дисплей с аппаратной двойной буферизацией (Mini-Sprites) для устранения мерцания 3D-экрана
  • Системные API – обширные привязки C++ к JS для аппаратных GPIO, ADC, PWM, опроса касаний, унифицированной файловой системы (/local/ и /sd/) и задержек менее миллисекунды

Проще говоря, ESP32 прошивается один раз. С этого момента управление физическим оборудованием (сенсоры, двигатели, экраны) осуществляется полностью посредством написания текстовых файлов JavaScript, что устраняет необходимость снова обращаться к C++ или Arduino IDE.

Приложения KryonOS просты в написании, поскольку они пишутся на JavaScript и выполняются на движке Duktape 2.x. Среда выполнения поддерживает ECMAScript 5.1, а также некоторые возможности ES6, но не поддерживает стрелочные функции, let/const или классы ES6. Каждое приложение имеет около 90 КБ доступной RAM, поэтому потребление памяти необходимо поддерживать на низком уровне. KryonOS также выполняет сборку мусора при вызове System.delay(ms), что помогает снизить фрагментацию памяти при длительной работе приложений.

Пример кода JavaScript «Hello world»:

// Clear the screen
Graphics.fillScreen(Graphics.COLOR_BLUE);

// Draw some text in the center
Graphics.setTextColor(Graphics.COLOR_WHITE);
Graphics.drawString("Hello KryonOS!", 120, 160, 2);

// Wait for 3 seconds
System.delay(3000);

// Close the app and return to the OS Launcher
System.exit();

Чтобы создать приложение, нужно создать папку, содержащую файл app.json для метаданных (например, имя пакета, версия и URL OTA-обновления), и файл main.js для логики приложения. ОС скрывает сложную настройку C++, позволяя рисовать фигуры, читать с SD-карты или переключать аппаратные выводы с помощью простых команд JavaScript.

ОС использует ту же распиновку дисплея и сенсора касания, что и ESP32 Marauder v4, v6 и v6.1, поэтому она может работать на этих устройствах без изменения стандартной схемы подключения. Проект также имеет экспериментальную поддержку нескольких устройств на базе ESP32, включая Cheap Yellow Display (CYD), M5Stack Cardputer, и LilyGO T-HMI .

JavaScript GUI M5Stack CardPuter
KryonOS на M5Stack CardPuter

Ранее уже писали об Espruino , другой платформе для микроконтроллеров на основе JavaScript, которая предоставляет интерпретатор JavaScript, а не отдельную операционную систему. Она использовалась на таких платформах, как ESP32 и собственная плата Pixl.js от Espruino, где JavaScript можно использовать для управления портами GPIO, дисплеями, Bluetooth LE, NFC и другими аппаратными периферийными устройствами. Она также поддерживает такие приложения, как игры, часы, метеостанции и проекты, использующие щиты Arduino. В отличие от неё, KryonOS объединяет интерфейс в стиле рабочего стола, файловый менеджер и магазин приложений JavaScript в единую операционную систему для плат ESP32.

При наличии совместимой платы ESP32, экрана ILI9341 и модуля SD-карты можно прошить KryonOS уже сегодня. Предварительно скомпилированные .bin-файлы доступны для прошивки напрямую через esptool.py, или ОС можно собрать из исходного кода с помощью PlatformIO. Исходный код, руководство по разработке приложений и полную документацию по JavaScript API можно найти в GitHub-репозитории проекта.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Нажмите, чтобы написать комментарий.x