Rustでの組込み開発を爆速で始められるよう、便利なテンプレートを用いてLチカを実行する方法について解説します。
この記事を読むことで、約10分でRaspberry Pi Picoを動かし、参考文献を見ながら思い通りの電子工作ができるようになります。
想定環境
以下はWindows 11 Homeでの実行を想定していますが、MacやLinuxでもほぼ同様の手順で爆速入門できます。
そのため、(コマンドプロンプトなどの)用語を使用環境に合わせて読み替えてください。
前提知識
git clone
が使える程度のGitの知識が必要です。
Raspberry Pi Picoの準備
Raspberry Pi Picoは、秋月電子通商などで700円程度で購入できます。
本記事の内容を実行するためには、以下のものを入手してください。
品名 | 個数 |
---|---|
Raspberry Pi Pico | 1 |
USBケーブル(micro B端子) | 1 |
Rustの環境構築
Rustのインストール
まずはRustがなくては話が始まりません。
以下の公式サイト等を参考に、Rustをインストールしてください。

Rustのアップデートとターゲットの追加
既知のバグを避けるため、Rustを最新の状態にします。
また、Raspberry Pi Picoでの開発を可能にするために、開発ターゲットとしてthumbv6m-none-eabi
を追加します。
コマンドプロンプトを開き、以下のコマンドを実行してください。
C:\hogehoge>rustup self update
C:\hogehoge>rustup update stable
C:\hogehoge>rustup target add thumbv6m-none-eabi
ビルドツールのインストール
Rustで記述したプログラムを、Raspberry Pi Picoに書き込めるUF2という形式に変換するためのツールとして、elf2uf2-rs
をインストールします。
コマンドプロンプトを開き、以下のコマンドを実行してください。
C:\hogehoge>cargo install elf2uf2-rs –-locked
このコマンドの実行に失敗した場合は、


を参考に、elf2uf2-rs
が正常にインストールできるまで、Rustのバージョンを落としてください。
Lチカの実行
開発テンプレートをダウンロード
組込み開発のためには設定や用意するべきクレートが多く、この作業を行うのは結構大変です。
そこで、艮電算術研究所では、rp_pico_template
という、開発用のテンプレートを用意しました。
以下のURLからgit clone
コマンド等の方法でダウンロードしてください。
このディレクトリのプロジェクト名を書き換えることで、新しいプロジェクト開発をすぐにはじめることができます。
ここでは、以下の2ステップでプロジェクト名をrp_intro
に変更しましょう。
- ディレクトリの名前を
rp_pico_template
からrp_intro
に変更する Cargo.toml
を開き、[package]
のname
の値をrp_intro
に書き換える
[package]
name = "rp_intro" # <- もともと、”rp_pico_template”になっている
version = "0.1.0"
…
Lチカを実行する
新しいプログラミング言語に触れたとき、大抵はHello, world!
を出力するコードを書くことからはじめます。
組込み開発の場合は、LEDをチカチカ点滅させる、通称「Lチカ」という作業からスタートするのが王道です。
Raspberry Pi Picoのボードには内蔵LEDが搭載されているので、回路を組む必要すらありません。
そして、rp_pico_template
のsrc
ディレクトリにはすでにled.rs
というファイルが含まれており、これでLチカができるようになっています。
以下の手順にしたがって操作してください。
- コマンドプロンプトで、プロジェクトフォルダ(
rp_intro
)に移動 - BOOTSELボタン(下図参照)を押しながら、Raspberry Pi PicoをPCのUSBポートに接続(Raspberry Pi Picoが認識されたことを確認してください)
3. コマンドプロンプトで、cargo run --release --bin led
を実行
C:\hogehoge>cd rp_intro
C:\hogehoge\rp_bno055>cargo run --release --bin led
Compiling …
…
Compiling …
Finished release [optimized] target(s) in 25.27s
Running `elf2uf2-rs -d -s target\thumbv6m-none-eabi\release\led`
Found pico uf2 disk G:\
Transfering program to pico
9.00 KB / 9.00 KB [=========================] 100.00 % 1.86 MB/s
正常に実行されると、上記のようなメッセージが表示され、Raspberry Pi Pico上のLEDが約1秒周期で点滅します。
よくある失敗例としては、手順2のBOOTSELボタンを正しく押せていないケースが考えられます。
このボタンを押しながら差すこと(差してから押すのはダメ)で、Raspberry Pi Picoにそれまで書き込まれていたプログラムが消去され、書き込みモードとして使用することが可能になります。
ここで失敗してRaspberry Pi Picoが正常に認識されていない場合には、以下のようなエラーメッセージが出力されているはずです。
C:\hogehoge\rp_intro>cargo run --release --bin led
Compiling …
…
Compiling …
Finished release [optimized] target(s) in 25.27s
Running `elf2uf2-rs -d -s target\thumbv6m-none-eabi\release\led`
Error: “Unable to find mounted pico”
error: process didn’t exit successfully: `elf2uf2-rs -d -s target\thumbv6m-none-eabi\release\led` (exit code: 1)
なお、BOOTSELボタンを押さずにRaspberry Pi PicoをPCに接続した場合や、VSYSピンから電源を供給した場合は、それ以前にRaspberry Pi Picoに書き込まれていた最新のプログラムが実行されます。
参考文献
以上の「爆速入門」は、電子書籍「Rust x Raspberry Pi Picoで実装する IMUからの姿勢情報の取得と応用」の第0~1章の内容を引用しています。
本書ではled.rs
のコード内容を解説したあと、
- シリアル通信でPCに情報を表示する
- I2Cでセンサを読み込む
- Raspberry Pi Picoのフラッシュ領域に情報を保存する
という機能を実装して、IMU(慣性計測装置)からデバイスの姿勢情報(傾き・回転)を取得する方法を説明します。
この技術は、ドローンやロボットが自身の姿勢を把握し、倒れないように制御する際に必須の知識です。
また、艮電算術研究所では、RustでRaspberry Pi Picoの様々な機能を使用するための実装例集を公開しています。


こちらを参考にled.rs
を改良して、ぜひ自分の作りたいものを作ってみてください!
コメント