1. はじめに
ESP32-S3を購入したので、Kubuntu 24.04 + Arduino IDEで開発環境を構築した。
本記事では、Arduino IDEのインストールからESP32-S3へのLチカプログラムの書き込みまでの手順をまとめる。
今回購入したESP32-S3はこちら。
将来的には、ESP32-S3を使って簡単なロボットアームなどを作成し、GPUを搭載したPCと連携して制御してみたいと考えている。
2. 筆者環境
筆者の環境は以下の通り。
| 項目 | 内容 |
|---|---|
| OS | Kubuntu 24.04.04 |
| CPU | Ryzen 5 7600 |
| メモリ | DDR5-5600 64GB |
| マザーボード | MSI MAG B650 TOMAHAWK WIFI |
| GPU1 | ZOTAC GAMING GeForce RTX 5060 Ti 16GB Twin Edge |
| GPU2 | MSI GeForce RTX 3060 VENTUS 2X 12G OC |
| GPUドライバーバージョン | 580.173.02 |
3. Arduino IDEのセットアップ
3.1 Arduino IDEをダウンロードする
Arduino公式サイトから、Linux AppImage 64 bits (X86-64) をダウンロードする。
3.2 AppImageを配置して実行権限を付与する
ダウンロードしたAppImageを任意のディレクトリに配置し、実行権限を付与する。
今回は ~/Applications に配置した。
mkdir -p ~/Applications
mv ~/Downloads/arduino-ide_2.3.10_Linux_64bit.AppImage ~/Applications/
chmod +x ~/Applications/arduino-ide_2.3.10_Linux_64bit.AppImage
3.3 AppArmorを設定する
Kubuntu 24.04では、そのままArduino IDEを起動しようとすると、以下のようなサンドボックス関連のエラーが発生する場合がある。
$ ~/Applications/arduino-ide_2.3.10_Linux_64bit.AppImage
[3411:0913/092143.947148:FATAL:setuid_sandbox_host.cc(158)]
The SUID sandbox helper binary was found, but is not configured correctly.
Rather than run without sandboxing I'm aborting now.
You need to make sure that
/tmp/.mount_arduinXErB4v/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (コアダンプ)
Ubuntu 24.04では、AppArmorによる非特権ユーザー名前空間(unprivileged user namespace)の制限がデフォルトで有効になっているため、このような問題が発生することがある。
Arduino IDEに必要なuser namespaceの使用を許可するため、AppArmorプロファイルを作成する。
abi <abi/4.0>,
include <tunables/global>
profile arduino-ide /home/<ユーザー名>/Applications/arduino-ide_2.3.10_Linux_64bit.AppImage flags=(unconfined) {
userns,
include if exists <local/arduino-ide>
}
/home/<ユーザー名>/Applications/... の部分は、実際にAppImageを配置した絶対パスに置き換える。
プロファイルを作成したら、以下のコマンドで反映する。
sudo apparmor_parser -r /etc/apparmor.d/arduino-ide
その後、Arduino IDEを起動する。
~/Applications/arduino-ide_2.3.10_Linux_64bit.AppImage
正常にArduino IDEが起動すればOK。
3.4 ESP32用のボード定義をインストールする
Arduino IDEを起動したら、ESP32-S3を利用するためのボード定義をインストールする。
メニューから、
ツール → ボード → ボードマネージャ
を選択する。
ボードマネージャの検索欄に ESP32 と入力する。
検索結果に表示される esp32 by Espressif Systems をインストールする。
特に理由がなければ、執筆時点の最新版を選択すればよい。
インストール後、コンソールに以下のようなメッセージが表示されれば成功。
Platform esp32:esp32@xxxxx installed
4. Lチカで動作確認する
4.1 ESP32-S3とPCをUSBケーブルで接続する
ESP32-S3の右側にあるUSB Type-C端子とPCをUSBケーブルで接続する。
筆者の環境では、USBハブ経由で接続した場合にESP32-S3が認識されなかったり、プログラムの書き込みに失敗したりすることがあった。
問題が発生する場合は、まずPC本体のUSBポートへ直接接続して試すことをおすすめする。
4.2 Arduino IDEでボードとポートを選択する
まず、使用するボードを選択する。
ツール → ボード → esp32 → ESP32S3 Dev Module
を選択する。
次に、ESP32-S3が接続されているシリアルポートを選択する。
ツール → ポート
から該当するポートを選択する。
複数のポートが表示されていて判別できない場合は、一度ESP32-S3を取り外してポート一覧を確認し、再度接続した際に追加されるポートを選択すると分かりやすい。
4.3 Lチカプログラムを準備する
今回は、購入したFreenove製品のGitHubリポジトリで公開されているサンプルコードを使用する。
以下の Sketch_01.1_Blink.ino をダウンロードし、Arduino IDEで開く。
このサンプルでは、GPIO 2をLED用のピンとして使用し、1秒間隔でON/OFFを切り替えている。
4.4 ESP32-S3へプログラムを書き込む
Arduino IDE上部の「書き込み」ボタンを押し、ESP32-S3へプログラムを書き込む。
書き込みが正常に完了し、ESP32-S3上の青色LEDが1秒間隔で点灯・消灯を繰り返せば成功。
シリアルポートへのアクセス権限で失敗する場合
プログラムの書き込みに失敗する場合、Linux側でユーザーにシリアルポートへのアクセス権限が付与されていない可能性がある。
現在のユーザーを dialout グループに追加する。
sudo usermod -aG dialout "$USER"
追加後は、一度ログアウトして再ログインする。
以下のコマンドで dialout が表示されれば、グループへの追加を確認できる。
groups
その後、Arduino IDEを再起動して書き込みを試す。
5. まとめ
今回は、Kubuntu 24.04上でArduino IDEを使用し、ESP32-S3の開発環境を構築する手順をまとめた。
今後はESP32-S3にセンサーやサーボモーターなどを接続し、簡単なロボットアームの制御などを試していきたい。さらに、GPUを搭載したPC側で画像認識や推論処理を行い、その結果をESP32-S3へ送信してハードウェアを制御するような構成も検討していく。






