はじめに
軽量な BEAM 実装である AtomVM を使って、ESP32 上で Elixir プログラムを動かす際に必要となる道具を、簡単に整理しておこうと思います。
※ 写真はイメージです
開発用 OS
A computer running MacOS or Linux (Windows support is not currently supported)
AtomVM の公式ドキュメントでは、Linux または macOS が前提とされています。
Erlang / Elixir
ホストマシン側には、Erlang / Elixir の開発環境が必要になります。
asdf や mise などのバージョン管理ツールを使ってインストールするのが一般的です。
私は執筆時点では mise を使っています。
Python 3
ESP-IDF および esptool は、どちらも Python 3 に依存しています。
私はPython も mise でインストールしています。
AtomVM 本体
ESP32 上で Elixir を動かすには、ESP32 向けにビルドされた AtomVM のファームウェアが必要です。
利用方法は、大きく分けて次の 2 通りあります。
-
ビルド済みイメージを使う
AtomVM の Releases ページからダウンロードしたバイナリイメージをそのまま ESP32 に書き込む -
ソースコードからビルドする
GitHub 上の AtomVM リポジトリを clone し、ESP-IDF の環境からidf.py buildすることで自分の環境向けのファームウェアを作る
どちらの方法でも、最終的には atomvm-esp32.bin のようなイメージをフラッシュして利用します。
ESP-IDF
ESP-IDF は、ESP32 向けのツールチェインや SDK 一式を含む公式フレームワークです。
AtomVM の ESP32 ポートも、この ESP-IDF 上でビルドされます。
公式ドキュメントで案内されている基本的な流れは、次のとおりです。
- 必要なホスト依存パッケージをインストール
-
install.shでツール類をインストール - 作業ディレクトリで
export.shを実行して環境変数を設定 - プロジェクトディレクトリで
idf.py build/idf.py flash
AtomVM をソースからビルドする場合も、基本的にはこの流れに沿います。
esptool
esptool.py は、ESP32 の ROM ブートローダとシリアル経由で通信し、フラッシュ操作などを行うためのツールです。
AtomVM のファームウェアイメージや、.avm ファイルを ESP32 に書き込む際に使用されます。
シリアルターミナル
ESP32 上で動作する AtomVM の起動ログや、IO.puts/1 などの出力を確認するには、USB シリアルポートに接続できるターミナルソフトが必要です。
screen、minicom、picocom などの一般的なシリアルターミナルで問題ありません。
ESP-IDF を利用している場合は、ESP-IDF 付属のシリアルモニタを idf.py monitor コマンドで起動することもできます。
idf.py -p /dev/ttyACM0 -b 115200 monitor
Linux では、dmesg | grep tty などを使って、接続した ESP32 に対応するデバイス名(例: /dev/ttyACM0)を確認してから利用するとよいです。
おわりに
AtomVM で ESP32 上から Elixir を動かすために最低限そろえておきたい道具をまとめてみました。
- OS(Linux / macOS)
- Erlang / Elixir
- Python
- AtomVM(自分でソースコードからビルド または ビルド済イメージ)
- ESP-IDF
- esptool
- シリアルターミナル(picocom など)
これらがそろえば、あとはなんでもできるはず。
![]()
![]()
![]()

