やりたいこと
私は小さな水槽で熱帯魚を飼っているのですが、夏場はあっというまに水温が上がってしまい、仕事中も魚たちが茹だっていないか、たいへん心配です。
そこで遠隔地から水温をモニタリングしたい。観測してそのあとどうするかはそのときに考えます。
完成イメージ
下記のサイトをなぞりながら、遠隔値の水温計をスマートフォンでモニターすることを目指します。
センサから拾った温度を適当なサーバにアップし、Web APIとしてスマートフォンから確認できればよさそうだなと思っています。
まずはRasberry Piをセットアップするところから始めましょう。なお、電子工作は未経験です。
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/overview
Raspberry Pi セットアップ
Raspberry Pi の初期設定にとりかかります。
用意したもの
- 本体 : Raspberry 2 Model B
- ストレージ : micro SDカード
- 電源 : スマートフォン用の充電器を流用できる
- 2A出力のスマートフォン用充電器
- micro USB 2.0 Type-Bのケーブル
- wifiアダプタ : USB接続のもの。小型が望ましい
- 防水温度計
- ジャンパケーブル
- ブレッドボード
- Pi Cobbler
- 抵抗(4.7kΩ)
(以下はセットアップ時のみ使用)
- HDMIディスプレイ / ケーブル
- USBマウス / キーボード
OSのセットアップ
NOOBSというブートローダ込みのパッケージを利用してOSをセットアップします。
詳細は公式のガイドラインを参照してください。
https://www.raspberrypi.org/learning/software-guide/quickstart/
(日本語)
https://okuzawats.com/noobs-20150603/
NOOBSのダウンロード
NOOBSとNOOBS Liteの2種類のパッケージを選択できます。
NOOBSはOSイメージも含んでいるのに対し、Liteはインストール時にダウンロードするのが違いです。
ここではNOOBSを採用しました。
https://www.raspberrypi.org/downloads/noobs/
NOOBSの準備
NOOBSのアーカイブを展開し、できたフォルダ配下のファイルをすべてSDカードにコピーします。
アーカイブは再セットアップにそなえ、適当な場所に保管しておきましょう。
ハードウェアの準備
電源を入れる前に、SDカード(とキーボードなど)を取り付けておきます。
OSのインストール
- 基板上のmicro USB端子にUSBケーブルを差し込む。
電源スイッチはないため、これだけで起動する。
- 画面下部のプルダウンで適切なキーボードレイアウトを選択する。
- 画面中央のダイアログで Raspbian を選択し、「インストール」をクリック。
- インストール開始時に「SDカードの内容が失われる」旨の確認ダイアログが表示される。「Yes」を選択。
- あとは自動で進行する。
- インストール終了後に初期ユーザでログインした状態でGnomeが起動する。
OS初期設定
あとは通常のdebianのようにapt-upgrade, 各種設定などを必要に応じてやっておきます。
sshで操作したい場合、初期ユーザは説明書に記載されている通り、
ID: pi
pass: raspberry
となっています。
水温計をRaspberry Piへ取り付ける
使用したRaspberry Piのモデルがチュートリアルと違っていたため、配線図はそのまま使用できませんでしたが、次のようになりました。
温度計から出ているケーブルの色がチュートリアルと違っていたため、だいぶ悩みましたが、
赤 : VDD
黄色 : DQ
黒 : GND
で良かったようです。
なお、仕上がりはこうなりました。
Raspberry Pi上での設定
センサが1-Wireという規格でデータ転送を行うため、OS側でもそれに対応するモジュールをロードさせるようです。(どう見てもセンサからは3本ケーブルが出ていますが…)
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/ds18b20
(/boot/config.txt)
# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi
dtoverlay=w1-gpio
※編集後にrebootすること
sudo modprobe w1-gpio
sudo modprobe w1-therm
ここまで問題なく進んでいれば、 /sys/bus/w1/devices/28-xxxx/ (xxxxは任意) というディレクトリが現れ、w1_slave というファイルにセンサーから拾った温度が書き込まれているはずです。
動作確認
w1_slaveはアクセスされるたびに更新される仕様のようです。
定番のtail -f が使えないのでwatchで毎秒内容を表示して確認としましょう。
watch -n1 -e 'cat w1_slave'
(出力)
右下の "t=29312" の部分が摂氏を1000倍した値になります。
今後
以後はプログラムで適当なサーバにデータを転送し、Web APIとして配信できるようにすることが目標です。
コメント
コメントを投稿