Raspberry Pi(ラズベリー・パイ)を使ったアクアリウム
Pocket

犬や猫のためのテクノジーが人気を集めている。ReadWrite 編集長のオーウェンは飼っているテリアにフィットネストラッカーを付けているし、ライターのアドリアーナは「モノのインターネット」を利用して、留守の間飼い猫の様子を記録している。

私にもペットがいるが、飼っているのは「ベタ」という魚なので、彼らの仲間に入れるとは思っていなかった。しかし今回、Raspberry Pi の助けを借りて、世界で一番手のかからないペットを実現する事に成功したのだ。

関連記事: 「Raspberry Pi(ラズベリー・パイ)」について知っておくべきこと

その方法とは、Raspberry Pi を使った防水温度センサーである。Raspberry Pi を使う事で、ローカルネットワーク上のどのコンピューターからもリアルタイムで現在の温度を照会することができる。リクエストを受け取るサーバーを構築すれば、インターネット経由で温度を照会できるように設定することも可能だ。

このプロジェクトでは、ハードウェアとソフトウェアの両方をいじくりまわす必要がある。私はこれまでハードウェアのハッキングなんてやったことがなかったが、Adafruit のチュートリアルを見ながら初めてのチャレンジを成功させることができた。

以下に、私が Raspberry Pi を使って魚を管理している方法を記載する。

下準備:必要なハードウェアとソフトウェア

中央から時計回りに:実験用回路板、温度センサー、Pi Cobbler、電源、ジャンパーワイヤ、4.7k の抵抗器、Raspberry Pi Model B、PiBow のレインボーケース
中央から時計回りに:実験用回路板、温度センサー、Pi Cobbler、電源、ジャンパーワイヤ、4.7k の抵抗器、Raspberry Pi Model B、PiBow のレインボーケース

私は魚マニアだ。「Fintan」と名付けたペットのために試行錯誤してアクアリウムを作り、数学的に計算して食事を与え、数えきれないほどの写真を撮っている。彼の生活を改善するためにお金を惜しむつもりはない。

今回のプロジェクトにかかったコストは、Raspberry Pi 本体を含めて計50ドルほどだった。Pi 本体とケ ース、電源以外に購入したものは以下の通りだ。

  • エンジニアリング・プロトタイプ用の構築基盤である実験用回路板。ハンダ付けが不要なので、初心者電気技師にはうってつけだ。
  • ジャンパーワイヤ。これは実験用回路板に付属していた。
  • 防水デジタル温度センサー「DS18B20」。Adafruit が推奨していたもの。一見シンプルだが、たくさんのデータを送信できる。
  • Pi Cobbler。可愛い名前だが、これは Adafruit が販売している 26 ピンのケーブルだ。端には略号が書かれており、実験用回路板のどこに差し込めばいいか分かるようになっている。
  • 4.7k の抵抗器。温度センサーが必要とする電圧は非常に低いため、この抵抗器を使って電流を制限している。
  • ワイヤレスの USB アダプタ(写真には写っていない)。モニターもマウスもキーボードも無い状態で Raspberry Pi を操作するにはこれが必要だ。Pi をローカルネットワーク上で操作するのにも使っている。

この記事を書くために何枚か材料の写真を取った後、実際の作業を開始した。Raspberry Pi をケースに入れ、SDカードをスロットに差し込み(初期設定用ソフトウェア「NOOBS」はインストール済み)、Pi をテレビ画面とコンセントに接続した。

Raspbian のインストール中画面。100%になるまで20分ほどの時間がかかる。
Raspbian のインストール中画面。100%になるまで20分ほどの時間がかかる。

私の経験から言うと、Raspberry Pi で新しいプロジェクトを始める際には毎回 NOOBS を新規インストールし直したほうがいい。我が家では常に SD card 内にコピーを取っておくようにしている。今回もこれまでのプロジェクトと同様、このコピーを使って Raspbian をインストールした。Raspbian とは、Linux オペレーティング・システム Debian をRaspberry Pi 用にカスタマイズしたものだ。

ハードウェア編:マッドサイエンティストのようにいじくりまわす

Raspbian のインストールには 20 分ほどかかるので、その間にハードウェアパーツの組み立てをすることにした。実験用回路板、Pi Cobbler、ワイヤ、そして温度センサーを組み合わせる。Adafruit のチュートリアルに従えば、必要な作業は図の通りにワイヤを繋げることだけだ。

 Pi Cobbler の側面に書かれたラベルを見れば、ワイヤをどこに繋げばいいかが分かる。
Pi Cobbler の側面に書かれたラベルを見れば、ワイヤをどこに繋げばいいかが分かる。

この点が Pi Cobbler の便利なところだ。私は電気回路にあまり詳しくないし、「オームの法則」については高校生レベルのあやふやな理解しか持ち合わせていない。それでも Pi Cobbler を使えば、電源やデータや接地のためにはどこにワイヤを繋げばいいかちゃんと示してくれるのだ。

実際一番難しかったのは、ワイヤをテーピングすることだった。チュートリアルにはただ「温度センサーのワイヤを実験用回路板に差し込む」としか書かれていなかったが、実行しようとしたらワイヤがほつれたりして大変だったのだ。下の画像を見ていただければ分かると思うが、何度もテーピングを行うハメになった。最終的にどうしても動作しなくなって、夫にテーピングをやり直してもらったくらいだ。

ソフトウェア編:Python 言語はほぼ英語と一緒

最初はマスキングテープを使ってテーピングしてみたが、最終的には普通のセロハンテープを使った。
最初はマスキングテープを使ってテーピングしてみたが、最終的には普通のセロハンテープを使った。

やっと Raspbian のインストールが終わり、温度センサーにデータを送ってもらうためのプログラムを書く時がきた。まあ私はデベロッパーではないので、ただ Adafruit からコードをコピペするだけなのだが。

一応プログラムの要点だけ述べておこう。まずは変数を設定して、温度センサーがデータを書き込む場所とそれを呼び出す方法をコンピューターに教える。次に、そのデータを変数に格納するようコンピューターに指示する。最後に、摂氏の値を華氏に変換する式にデータを入れ、両方の値を出力する。

私は Python を勉強したことは一度もないが、Python プログラマーに説明してもらう前から上記のことは理解できていた(私の理解は正しいと彼も太鼓判を押してくれた)。なぜなら、ちょっと構文は変だがコードはほぼ英語だったからだ。この点こそ、Python が子供に教えるのにぴったりな言語として賞賛され、23 年間も使われ続けている理由なのだろう。

Python と Raspberry Pi は非常に相性がいい。Raspberry Pi の考案者であるエベン・アプトンも、ラズベリー・パイの「パイ」はパイソンの「パイ」に掛けて名付けたと言っている。ただし綴りは円周率のパイの方が良いと思ってそちらにしたらしい。Raspberry Pi は子供にプログラミングを学ばせることを目的として作られているので、簡単に教えられる言語を使いたいとアプトンが望んだのも当然だろう。

作成したプログラムは「Fintan.py」という名前で Raspberry Pi のホームフォルダに保存した。ファイルの名前は何でも好きなものを付けておけばよい。ただし覚えておける範囲で。

合体編:テストして、水槽に沈めて、いよいよ実行

Adafruit のチュートリアルを宣伝するわけではないが、私にとって水槽の温度をリモートで確認できるというのはとてもありがたい。でなければ、わざわざこんなものを作ったりはしない。

まずは Raspberry Pi をインターネットに接続するため、ワイヤレス USB アダプタを Pi の USB ポートに差し込んだ。ネットワーク上のどのコンピューターからでも Raspberry Pi を参照できるようにすることが目的だが、Pi に固定 IP アドレスを設定しなければコンピューターはどこを見ればいいか分からない。この作業はホームルーターを介して行う必要があり、手順はルーターのメーカーによって異なる。固定 IP アドレスの設定方法が分からなければ、ルーターのマニュアルを読もう。

私の Raspberry Pi の固定 IP は 192.168.2.16 だ。 Raspberry Pi にはモニターやキーボード等の出入力機器がないため、私は自分の Mac のターミナルを使って Pi がデータを送信するかどうか確認した。Mac 以外の PC を使っている人は、ターミナルエミュレーターの「PuTTY」をインストールする必要がある。

Raspberry Pi にリモートアクセスするために、私はまず自分のユーザー名とIP アドレスでクエリーを実行した。

ssh pi@192.168.2.16

すると Pi は、ユーザーの Pi のパスワードを聞いてくる。

pi@192.168.2.16’s password:

デフォルトのパスワードは常に「raspberry」だ。

ログインしたら、先ほど書いた Python のプログラムにアクセスする。スーパーユーザーとしてアクセスする必要があるので「sudo(super user do の略)」と入力してからコンピューターに命令しよう。そうしないと、権限が不足しているとみなされて命令が無視されてしまうことがある。

sudo python fintan.py

すぐに温度の測定値が表示され、1秒ごとに更新された。いよいよ Raspberry Pi をセットアップする。

sudo shutdown now

Fintan も新しいハイテク環境をチェック中。
Fintan も新しいハイテク環境をチェック中。

Pi をテレビとコンセントから外して「Fintan」の水槽の近くに移動させ、温度計の防水部分を水槽内に沈めた。これで、ローカル回線に接続すればどこからでも水槽の温度をチェックできるようになったわけだ。

将来的には、Raspberry Pi からのリクエストを受け取るウェブサーバーを構築してウェブサイトにデータを表示できるようにしたい。さらに、携帯電話にアラートを送れるようにできたらいいと思う。これを実現するにはどうするのが一番いいのか、今調査中だ。

とにかく今は、世界で一番ハイテクなアクアリウムを手に入れられて満足している。

関連記事: Raspberry Pi(ラズベリー・パイ)でここまで出来る!12のクールな使い方

Pocket