待补充
atomvm/AtomVM
ESP32
3/5
🧩 软硬件结合
已发布
项目简介
Tiny Erlang VM
AtomVM 是一个从零开始构建的轻量级 Erlang 虚拟机实现,它的核心使命是将 Erlang、Elixir 等函数式编程语言带入微控制器(MCU)和极小型的嵌入式系统。传统上,BEAM 虚拟机(Erlang 虚拟机)对硬件资源要求较高,难以在资源受限的设备上运行。AtomVM 通过实现 BEAM 字节码的一个关键子集,使得开发者能够直接在 ESP32、STM32、Raspberry Pi Pico 等主流 MCU 上运行未经修改的 BEAM 编译产物(.avm 文件)。这意味着,你可以在桌面端用 Erlang 或 Elixir 编写逻辑,然后直接部署到嵌入式设备上,无需学习 C 语言或底层硬件细节。在技术栈上,项目使用 C 语言编写核心虚拟机,依赖 CMake 构建系统,并支持通过 Mbed TLS 和 zlib 提供 SSL 和压缩能力。除了嵌入式平台,AtomVM 也支持 Linux、macOS、FreeBSD 等通用 Unix 系统,甚至可以通过 WebAssembly 在浏览器和 Node.js 中运行。项目目前已经相当成熟,兼容 OTP 21 到 27 版本,并实现了大部分核心标准库函数。它主要解决了物联网和嵌入式开发中“开发效率低”和“硬件门槛高”的矛盾:开发者可以用高层次的函数式语言快速迭代业务逻辑,同时享受 BEAM 生态的容错和并发优势。适用场景包括智能家居传感器控制、工业数据采集、可穿戴设备逻辑、以及任何需要快速原型验证的嵌入式项目。如果你正在寻找一种更现代、更高效的嵌入式开发方式,AtomVM 是一个非常值得关注的选择。
标签
项目特点
**轻量级设计**:从零构建,只实现 BEAM 字节码的核心子集,资源占用极低,适合 MCU 环境。
**多平台支持**:原生支持 ESP32、STM32、Raspberry Pi Pico 等主流微控制器,以及 Linux 和 macOS 桌面系统。
**无需 C 语言**:开发者直接用 Erlang/Elixir 编写应用逻辑,编译成 .avm 文件后直接部署,降低嵌入式开发门槛。
**标准库兼容**:支持 Erlang/OTP 的部分标准库模块(如 gen_server、gen_statem),方便复用现有代码。
**活跃社区**:GitHub 上有 600+ Star,持续更新,提供详细的文档和示例。
技术规格
| 目标平台 | ESP32、STM32、Raspberry Pi Pico、Linux、macOS |
|---|---|
| 编程语言 | Erlang、Elixir(编译为 BEAM 字节码) |
| 虚拟机核心 | 自定义 BEAM 字节码解释器 |
| 内存需求 | 最低约 64KB RAM(视应用而定) |
| 存储需求 | 最低约 256KB Flash(视应用而定) |
| 支持协议 | TCP/UDP、MQTT、GPIO、I2C、SPI、UART |
| 开发工具 | rebar3、mix(Elixir 构建工具) |
| 许可证 | Apache 2.0 |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| ESP32 DevKitC | 1 | — | 推荐入门 |
| STM32 Nucleo-64 | 1 | — | 可选 |
| Raspberry Pi Pico | 1 | — | 可选 |
| USB 数据线 | 1 | — | 用于烧录和调试 |
| LED 灯 | 若干 | — | 测试 GPIO 输出 |
| 按键 | 若干 | — | 测试 GPIO 输入 |
| 5V 电源适配器 | 1 | — | 可选,用于独立供电 |
能力画像
**记忆与知识检索**:3/5 — 需要查阅 Erlang/Elixir 语法和 AtomVM 特定 API,但文档较完善。
**动手与操作**:4/5 — 涉及硬件接线、固件烧录、串口调试等实际操作。
**编程与算法**:4/5 — 使用函数式编程语言编写逻辑,需要理解并发模型和消息传递。
**设计与建模**:3/5 — 需要设计嵌入式应用的状态机和通信协议。
**实验与调试**:4/5 — 需要反复烧录测试,通过串口日志排查问题。
**协作与分享**:2/5 — 单人或小团队项目,社区贡献主要通过 GitHub Issue 和 PR。
**学习与研究**:4/5 — 涉及虚拟机原理、嵌入式系统、函数式编程等多个领域。
**系统集成**:3/5 — 需要将 Erlang/Elixir 应用与硬件外设(GPIO、I2C、SPI)集成。
项目图库
所需技能
Erlang 或 Elixir 编程基础
嵌入式系统基本概念(GPIO、I2C、SPI、UART)
微控制器开发板使用经验(ESP32、STM32、Pico 任选其一)
命令行工具使用(烧录、串口调试)
函数式编程思维(模式匹配、递归、不可变数据)
基本电子知识(电路连接、LED 限流电阻计算)
适用场景
用 Erlang/Elixir 开发物联网传感器节点或执行器
快速原型验证嵌入式产品逻辑,无需 C 语言开发周期
教学演示函数式编程在嵌入式系统中的应用
构建低功耗、长时间运行的嵌入式服务器(如 MQTT 网关)
将现有的 Erlang/Elixir 桌面应用移植到硬件端
学习虚拟机实现和 BEAM 字节码原理