跳至主要內容
BeShell 开发指南

BeShell 开发指南

一个在 ESP32 平台上运行 JavaScript 的项目。

使用指南文档

设计理念

  • 用互联网技术栈做 IoT 开发

  • 从 Arduino 开箱即用,到 ESP32 SDK 源码编译,技术难度曲线平缓

  • 在单片机上实践现代化程序设计:ES2020, C/C++ 14/17

  • 保持接口优雅,易于扩展

BeShell特性

我们将常用的 ESP-IDF API 和 许多第三方库都封装成了 JavaScript 接口,为你提供了成吨功能。

JavaScript引擎

完整的ES2020标准

GPIO

GPIO 控制 JS API

片上外设

I2C/SPI/UART 等

驱动

电机、屏幕、摄像头、传感器、控制器 等

文件系统

LittleFS/Fat32/RawFS/SDCard

WiFi

STA / AP / Both

协议

TCP UDP HTTP HTTPS WS MQTT SMTP SNTP 等

GUI

集成 LVGL 图形界面库

数据库

集成 SQLite3

Web后端

在 EPS32 上实现 NodeJS 的体验

自由剪裁

只引用必要的功能以便保持较小编译尺寸

跨平台

支持 Linux MacOS Windows 等平台

WebAssemble

可以在浏览器里运行

混合编程

C/C++ 和 JavaScript 双向访问

工具

提供 Web IDE,支持文件管理,代码编辑,命令行,交互式运行

多种开发环境

以多种框架组件形式发布:Arduino、ESP-IDF

预编译版本

烧录即用

静态库

提供静态库,减少编时间

镜像发布

提供 GitHub 和 Gitee 同步镜像

开源

源码和文档完全开源

单片机上的 JavaScript

在 BeShell 框架中,JavaScript 是"一等公民"

  • 完整支持 ES2020 标准

    支持 async/await、Proxy、匿名函数 等现代 JS 程序设计

  • All in JavaScript

    单片机底层、外设、驱动都封装为 JS API

  • 混合编程

    C/C++ 和 JS 双向调用,你可灵活切换语言开发

  • 文件系统

    在单片机上实现文件系统,可模块化组织 JS 代码,支持 import/export AMD规范

  • 更多特性

    交互式运行(REPL),文件传输,SQLite3数据库等, 这里写不下了

图形界面 和 媒体

BeShell 集成了 LVGL 图形界面库,支持丰富的图像和音频处理功能

集成 LVGL 9.x

在单片机平台上最流行的图形界面库 (GUI)

JS 前端

JS 比 C语言 (LVGL原生) 更适合前端

类 CSS 样式

层叠样式表和结构分离,可更换主题

字体文件

字体以文件形式加载,仅编译打包用到的字型

图像解码

PNG JPG BMP GIF(动画)

音频解码

MP3 WAV PCM 音频解码,MIDI 音符渲染,I2S DAC 播放输出

网络

BeShell 提供完整的 TCP/IP 协议栈,支持以太网、WIFI 等网络连接

  • TCP/IP 协议栈

    可通过 WiFi 或 以太接入互联网/本地网络

  • 丰富的应用层协议

    TCP UDP HTTP HTTPS MQTT SMTP SNTP 等

  • 后端开发

    提供多种协议的网络 server 端接口,在单片机平台上实现 "类NodeJS" 的开发体验

  • 前端长链接

    支持 WebSocket 长连接,可实现即时通讯