待补充 atomvm/AtomVM

ESP32 3/5 🧩 软硬件结合 已发布
atomvm 604 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/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 字节码原理