1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ESP32-s3開発環境構築手順メモ(Kubuntu24.04 + Arduino IDE)

1
Posted at

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) をダウンロードする。

image.png

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プロファイルを作成する。

/etc/apparmor.d/arduino-ide
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を利用するためのボード定義をインストールする。

メニューから、

ツール → ボード → ボードマネージャ

を選択する。

image.png

ボードマネージャの検索欄に ESP32 と入力する。

検索結果に表示される esp32 by Espressif Systems をインストールする。

特に理由がなければ、執筆時点の最新版を選択すればよい。

image.png

インストール後、コンソールに以下のようなメッセージが表示されれば成功。

Platform esp32:esp32@xxxxx installed

4. Lチカで動作確認する

4.1 ESP32-S3とPCをUSBケーブルで接続する

ESP32-S3の右側にあるUSB Type-C端子とPCをUSBケーブルで接続する。

image.png

筆者の環境では、USBハブ経由で接続した場合にESP32-S3が認識されなかったり、プログラムの書き込みに失敗したりすることがあった。

問題が発生する場合は、まずPC本体のUSBポートへ直接接続して試すことをおすすめする。

4.2 Arduino IDEでボードとポートを選択する

まず、使用するボードを選択する。

ツール → ボード → esp32 → ESP32S3 Dev Module

を選択する。

image.png

次に、ESP32-S3が接続されているシリアルポートを選択する。

ツール → ポート

から該当するポートを選択する。

image.png

複数のポートが表示されていて判別できない場合は、一度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秒間隔で点灯・消灯を繰り返せば成功。

image.png

シリアルポートへのアクセス権限で失敗する場合

プログラムの書き込みに失敗する場合、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へ送信してハードウェアを制御するような構成も検討していく。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?