11
1

はじめに

同僚が使っていない Raspberry Pi 4 を貸してくれるということで、いよいよ Nerves デビューかと思い、やってみました

@torifukukaiou さんの記事を参考に L チカ(LED をチカチカ光らせる)まで実行できたので、手順を記事に残します

Nerves Livebook を利用します

Nerves とは

Nerves は Elixir の IoT デバイス向けプラットフォームです

Elixir の知識さえあればすぐに IoT を始められます

ホストマシン

MacBook Pro 13-inch

macOS 14.5

利用するデバイス

Raspberry Pi 4 Model B

基盤に書いてあった FCC ID で確認しました

IMG_1517.JPG

準備

fwup のインストール

ファームウェアを micro SD に書き込むため、 fwup をインストールします

brew install fwup

WiFi 情報の確認

ホストマシンが接続している WiFi の SSID とパスワードを控えておきます

ファームウェアの書込

ファームウェアのダウンロード

Nerves Livebook のリリースページから対象デバイス用の .fw ファイルをダウンロードします

Raspberry Pi 4 の場合は nerves_livebook_rpi4.fw です

スクリーンショット 2024-06-16 21.37.36.png

microSD の挿入

ホストマシンに microSD を差し込みます

私の場合はホストマシンにポートがないため、変換アダプタを使用しました

書込の実行

以下のコマンドを実行します

ダウンロードした .fw ファイルが ~/Downloads にある場合のコマンドです

sudo NERVES_WIFI_SSID='<WiFiのSSIS>' NERVES_WIFI_PASSPHRASE='<WiFiのパスワード>' \
  fwup ~/Downloads/nerves_livebook_rpi4.fw

WiFiの接続情報を渡しておくことで、 Raspberry Pi 起動時に自動的に WiFi に接続してくれます

以下のようなメッセージが表示された場合、 y を入力します

Use 15.93 GB memory card found at /dev/rdisk2? [y/N]

書込が完了するのを待ちます

100% [====================================] 58.41 MB in / 68.85 MB out
Success!
Elapsed time: 2.837 s

Raspberry Pi への接続

microSD カードの差込

書き込んだ microSD カードをホストマシンから引き抜き、 Raspberry Pi に差し込みます

電源の接続

Raspberry Pi の電源を入れます

この時点で Raspberry Pi 上で Livebook が起動されます

Livebook への接続

ブラウザで nerves.local にアクセスします

パスワードを求められるので nerves と入力し、 Authenticate -> ボタンをクリックします

スクリーンショット 2024-06-16 21.49.08.png

認証できれば、 Raspberry Pi 上で動作している Livebook に接続できます

スクリーンショット 2024-06-16 21.50.39.png

L チカの実行

Welcome to Nerves Livebook のカードをクリックします

スクリーンショット 2024-06-16 21.50.39.png

開いたノートブックの中から LEDs のリンクをクリックします

スクリーンショット 2024-06-16 21.54.59.png

L チカ用のノートブックが表示されます

スクリーンショット 2024-06-16 21.56.32.png

以下のコードを実行します

led_base_path = "/sys/class/leds"
File.ls!(led_base_path)

実行結果として、 Raspberry Pi で利用可能な LED の一覧が表示されます

["ACT", "PWR", "mmc0::"]

次のセル内の "led0" の部分を "ACT" に変更します

ACT の LED (黄緑色)が以後のセルで使われることになります

led = Path.join(led_base_path, "ACT")

実行結果

"/sys/class/leds/ACT"

LED の状態をリセットします

ACT の LED は点灯状態だったのが消灯状態になります

File.write(Path.join(led, "trigger"), "none")
File.write(Path.join(led, "brightness"), "0")

LED のディレクトリー配下にあるファイル一覧を取得します

File.ls!(led)

実行結果

["uevent", "brightness", "power", "device", "trigger", "subsystem", "max_brightness"]

このうち brightness ファイルに 1 を書き込むことで、 LED を点灯させます

File.write(Path.join(led, "brightness"), "1")

IMG_1518.JPG

brightness ファイルに 0 を書き込むことで、 LED を消灯させます

File.write(Path.join(led, "brightness"), "0")

IMG_1519.JPG

triggertimer を書込み、 delay_ondelay_off250 を書込みます

これにより、 250 ms 間隔で LED が点滅します

File.write(Path.join(led, "trigger"), "timer")
File.write(Path.join(led, "delay_on"), "250")
File.write(Path.join(led, "delay_off"), "250")

led.gif

triggernone を書込み、リセットします

File.write(Path.join(led, "trigger"), "none")
File.read!(Path.join(led, "trigger"))

none を書き込んだ状態で trigger を読み込むと、他に設定可能なトリガーの一覧が表示されます

"[none] rfkill-any rfkill-none timer oneshot heartbeat backlight gpio cpu cpu0 cpu1 cpu2 cpu3 default-on transient input panic pattern mmc1 mmc0 rfkill0\n"

まとめ

Livebook から Raspberry Pi の LED を操作することができました

色々参照しながらでも 30 分程度で L チカまで辿り着きました

Nerves を使うことで、簡単に IoT 体験ができます

次に何をするかは色々な記事を見て検討します

11
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
11
1