5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

リモート環境で Wio Terminal で組み込み Rust を動かしてみるハンズオン

Last updated at Posted at 2021-08-02

組み込み Rust を試してみたい!
その場合、現時点では書籍「基礎から学ぶ 組み込みRust」において十分な解説があります。

しかしながらこれは Wio Terminal をターゲットとし、手元で書き込み/実行を確認しながら進める前提となっています。

今回はリモート勉強会を想定し、 Wio Terminal を持っていない参加者が複数いても、主催者が持つ Wio Terminal を操作してハンズオンに参加する方法を考えます。

以下は Wio Terminal をターゲットとしていますが、RaspberryPi Pico や ESP32 などをターゲットとしても同じように実現できるでしょう。

前提条件

  • 参加者は手ぶら
  • 主催者側で複数の Wio Terminal がある
  • 主催者側で Linux PC がある

ハンズオン実施方法

  • 主催者が手持ちの WIO TERMINAL は WebCam で映し出しておく
  • 主催者は Linux PC をハンズオンサーバとして公開する
  • 参加者は SSH でハンズオンサーバにアクセスする
  • 主催者は WIO TERMINAL のスイッチを2回スライドしてブートローダーモードにする(*)
  • 参加者は開発したアプリをWIO TERMINALに転送、実行
  • アプリを実行した結果、LED が点滅、WebCam で点滅動作を確認

主催者は、(*)の作業だけはアプリ書き込みが必要となるごとに、手作業で毎回行わないといけません。

カメラ公開の例

WIO TERMINAL を 2台公開した例です。

image.png

nanbuwks のカメラにつながっている左側が WIO TERMINAL #1 , 右側がWIO TERMINAL #2 です。
カメラで微妙に見える青いランプがLチカで作業するLEDです。
nanbuwks のカメラの背景ブラウンターミナルが screen セッション1 、背景赤ターミナルが screen セッション2 です。 この screen セッションに参加者が接続して操作します。

Linux PC の設定

  • Rust 開発環境をインストールします(後述)
  • リモートでログインする専用のユーザを作り、権限を適切に設定します。特に、マイコンへ書き込みができる権限が必要です。
  • 参加者ごとにユーザを別個に作るとインストール実習が個別に行えます。1つのユーザを共用にすると、インストールは1回のみで省略できます。
  • Screen セッションを複数作っておきます。
  • ポートを適宜開放し、外部から SSH が入れるようにしておきます。
  • Wio Terminal を必要数 Linux PC に接続し、ブートローダーモードにしておきます。

参加者が行うこと

  • ハンズオンサーバに ssh でログインして、screen -x 1 または screen -x 2 でスクリーンセッションにつなぎます。
  • Rust で作成したバイナリを、Wio Terminal に書き込みます。
  • 今回作成するバイナリは LED を点滅させるプログラムです。
  • 書き込みは、Wio Terminal が外部USBメモリとして見えるのでそこにファイルを転送
  • 書き込みが終わると自動でプログラムが実行されます。
  • 青いLEDが点滅することが確認できたら成功です。

バイナリ作成方法

バイナリは以下の2つの方法でつくることができます。

  • ハンズオンサーバで作成
  • 自分のローカルPCで作成したものをハンズオンサーバに転送

ハンズオンサーバで作成するやりかたは、「組み込みRustハンズオンテキスト」https://qiita.com/nanbuwks/items/5c2203f539575a58f29e を参照してください。
自分のローカルPCで作成する場合は、scp でハンズオンサーバにコピーします。
自分のローカルPCで作成する場合は、上記「組み込みRustハンズオンテキスト」を参考にしてください。ただしテキストはLinux用です。他のOSもほぼ同様に作成できますが、適宜相違点を読み替えてください。

バイナリ書き込み方法

Wio Terminal に書き込むバイナリの形式は uf2 形式です。
Rust でビルドしたバイナリは、以下のようにして uf2 形式に変換してください。
自分のローカルPCでバイナリを作成する場合は、uf2 形式に変換してから scp でハンズオンサーバにコピーします。

$ cargo objcopy --example blinky --release --  -O binary blinky.bin
    Finished release [optimized] target(s) in 0.15s
$ uf2conv blinky.bin --base 0x4000 --output blinky.uf2

できたuf2ファイルを書き込みます

Wio Terminal をブートローダーモードにしていると、Wio Terminal が外部USBメモリとして見えるのでそこにファイルを転送します。
例として、「カメラ公開の例」で示した2台の Wio Terminal だと左側が /dev/sdb, 右側が /dev/sdc ですが起動順番で変わります。
どこにマウントされているかは mount コマンドで確認してください。

/media/nanbuwks/Arduino にマウントされていた場合は以下のようにして書き込みます。


$ cp blinky.uf2 /media/nanbuwks/Arduino/

ブートローダーモードになっていない場合は主催者にリクエストしてブートローダーモードに変更してもらってください。

書き込みが終わると自動でプログラムが実行されます。
青いLEDが点滅することがカメラ経由で確認できたら成功です。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?