目次

まえがき
注意事項
表記関係について
ソースコード
第1章 はじめに
1.1 説明の流れ
1.2 開発環境
1.3 ソフトウェア
第2章 ソフトウェア開発環境の準備
2.1 Ubuntu Linux
2.2 macOS
2.3 Ubuntu Linux・macOS共通
2.4 Nervesプロジェクトの作成・転送・起動
2.5 運用環境での確認
2.6 運用環境のファームウェアの書き換え
2.7 エラーと処置
2.8 Tips
第3章 入出力の基本操作
3.1 作業ディレクトリとプロジェクトの作成
3.2 GPIOの接続
3.3 GPIOの出力・その1(対話モード)
3.4 GPIOの出力・その2(ソースファイルを書いて実行)
第4章 Nerves開発の支援ツール
4.1 VSCodeによるコードの編集
4.2 基本構文の学び方
4.3 Nerves開発で便利な構文
4.4 そのほかのElixirの機能
第5章 Nerves Systemの機能と設定
5.1 ビルドに関連するコマンド
5.2 SSHのユーザ名・パスワードログインを有効化
5.3 ネットワーク設定
5.4 ホットスワップによる実行中の書き換え
第6章 いろいろな入出力の操作
6.1 事前準備
6.2 アナログ信号の入力
6.3 温度・湿度センサー
6.4 その他の機能
第7章 環境測定器の作成
7.1 構成
7.2 動作の流れ
7.3 実装と実行
7.4 cronライクな繰り返し実行
第8章 Raspberry Pi OS上での開発
8.1 OSと開発ツールの準備
8.2 GPIOの接続
8.3 GPIOの出力・対話モード
8.4 GPIOの出力・ソースファイルを書く
8.5 Elixirの対話モードの便利な機能

まえがき

 本書は、Elixir言語を使った組み込み機器を作るためのフレームワークNervesの入門書です。

 Elixirは、関数型言語Erlangの仮想マシン(Erlang VM)上で動作し、大量の並行処理を安定的に実行できる仕組みと、それらを安定して動作させ続けるための仕組みを持つ関数型言語です。

 Nervesは、Elixirならではの特長を生かしつつ、OSであるLinuxやElixirコンパイラ、その他開発に必要なツールをコンパクトにまとめたフレームワークです。

 普段C言語やPythonなどを使っている筆者自身が、ElixirとNervesの特徴をきいて、はじめて触りはじめたときは、習得のとっかかりで苦労しました。Elixir言語そのものの書き方から、インストールやプロジェクトの作り方、各種設定、コマンドラインや特定のエラー対策など、あまりに資料が少なかったためです。

 本書の内容は、Elixir言語の細かい説明は省略し、Raspberry Piの周辺機器の制御の作例としては、大変初歩的な内容に絞っています。ですが、Elixirでのハードウェア操作やネットワーク通信の基本、開発における便利な機能や、途中目にすると思われるトラブルシューティングまでを網羅しました。ElixirとNervesに初めてチャレンジする方にとって、助けになることを願っています。

 この本を読んで頂いたことをきっかけに、新しい言語との出会いや、何かひとつの作品を作るきっかけになれば幸いです。

2023年 夏 三宅 泰宏

注意事項

 ・本書の記載情報に基づいた行動によって発生した一切の事項について、発行元、著者は、一切の責任を負いかねます。

 ・本書の一部、あるいは全部を、著作権法の定める範囲を超えて、無断で(紙面、電子データ他を含む)複写、複製、転載、アップロードなどを行う事はおやめ下さい。

表記関係について

 ・本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

ソースコード

 本書で紹介したソースコードは、こちらから入手可能です。

 https://github.com/trihome/books_i_n1905

第1章 はじめに

1.1 説明の流れ

 本書では、Elixirを活用したハードウェア開発について、下記の流れで説明します。

 1.Nerves環境の構築(第2章)

 2.Elixir言語からのRaspberry Pi 入出力の操作(第3章、第6章)

 3.Nervesで便利なElixir言語の機能と、Nerves独自機能(第4章、第5章)

 4.IoT機器の作例(第7章)

 5.開発効率化のための手法(第8章)

1.2 開発環境

 本書では、以下の環境での動作を前提としています。

表1.1: 開発環境
機材 OS バージョン
Windows11 PC (VirtualBox) Ubuntu Linux 22.04
Linux PC Ubuntu Linux 22.04
Mac Book Pro (intel CPU) macOS 12.6
表1.2: 運用環境
機材 仕様
本体1 Raspberry Pi 4 B+
本体2 Raspberry Pi Zero WH

 Raspberry Pi本体の40ピンコネクタに接続して、入力・出力を扱いやすくするための拡張ボード、Grove Base Hat for Raspberry Pi1を使用します。

図1.1: Raspberry PiとGrove Base Hat、Groveセンサ

1.2.1 部品の入手先

 今回使用した部品は、以下の店舗、通販で購入できます。(在庫状況によっては一軒の店舗では揃わない可能性があります)

表1.3: 入手先
店名 URL
マルツパーツ館 https://www.marutsu.co.jp/
シリコンハウス共立 https://eleshop.jp/
秋月電子通商 https://akizukidenshi.com/
千石電商 https://www.sengoku.co.jp/
スイッチサイエンス https://www.switch-science.com/

1.3 ソフトウェア

 今回使用するライブラリのドキュメントのリンク先です。

表1.4: ライブラリのドキュメント
ライブラリ名 URL
Elixir Circuits https://elixir-circuits.github.io/
Nerves https://elixirschool.com/ja/lessons/misc/nerves

Raspberry Pi OS のインストール参考資料

 Raspberry Pi OS の一般的な環境構築については、筆者のQiitaにも手順をまとめておりますので、ご参考下さい。

・「電子工作er向けのラズパイのセットアップ」

 ─https://qiita.com/myasu/items/a4e036a86976e3081a19

1. https://wiki.seeedstudio.com/Grove_Base_Hat_for_Raspberry_Pi/

試し読みはここまでです。
この続きは、製品版でお楽しみください。