はじめに
自分のコンテキストを書いておく。
電子工作経験はほぼなし。
10年前、パトランプのXFD体験イベントに参加した先輩からデバイス完成品を譲ってもらったレベル。
たぶんそのイベントはこのへん。
電子工作のウデマエは1といって差し支えないだろう。
準備
買ったものは以下のとおり
- Raspberry Pi2 Model B ボード&ケースセット
- Raspberry Piスターターパック
- Raspberry Pi Model B+ / Pi2用 ヒートシンクセット
- DHT22/AM2302
結果
ログはこんな感じで確認できる。
それぞれ温度と湿度。
サーバー代を惜しんで RaspberryPi2 内にログを残している。
そのためログは自宅内でしか確認できない。
RaspberryPi はリビングの一角に設置している。
手前に向かって生えているのがDHT22センサー。
手順
ざっくり以下のように行った。
詳細は後述。
- 初期設定
- センサー(DHT22/AM2302)取り付け
- 温度湿度データ取得テスト
- ログ保存
- ログ取得
初期設定
ローカライズ
locale やタイムゾーンなどを日本に変更。
このあたりを参考に。
Raspberry Pi 2の文字コードを変更する(日本語の設定) - wide_snow’s blog
ネットワーク
巷では無線LANの事例が多いが、ケチって RaspberryPi2 は有線LANで利用する。
スターターキットでは etc/network/interfaces
が dhcp
ではなく manual
に設定されていたため、自分で一度 dhcp
に変更した。
その際は問題が起きたが以下の記事によって解決した。
linux - DHCP failure when rebooting RPI 2 - Super User
その後static
に変更して終わり。
Raspberry Pi 2 IPアドレスを固定(有線LAN)にする - カタカタブログ
センサー(DHT22/AM2302)取り付け
ケーブルなどを細かく買うのが煩わしかったので、買ったのはモジュール化済みの DHT22。
DHT22や互換性があるDHT11の情報はググれば多い。
が、モジュール化されたものの情報は見つからず、どう接続したらいいかわからなかった。
そこで基本をおさえることに。
下記サイトが大変わかりやすかった。
Raspberry Piで電子工作!Lチカ…の前にLピカ! | Device Plus - デバプラ
RaspberryPi のような機器では大きく分けて3つの接続先が用意されている。
電源、アース、入出力だ。
モジュールの + は電源、- はアース、out は出力、ということでそれぞれ 1, 9, 7 に接続した。
温度湿度データ取得テスト
GitHub に公開されているスクリプトを使ってテストする。
adafruit/Adafruit_Python_DHT · GitHub
サンプルのスクリプト example/AdafruitDHT.py
を実行すると以下の結果が得られた。
Temp=20.3* Humidity=37.3%
このスクリプトは以下サイトから知った。
Raspberry pi + pubnub で温度と湿度のリアルタイムグラフ表示 | ネットワークエンジニアを目指して - ブログ
このスクリプトを後で流用する。
ログ保存
GrowthForecast を使ってログの蓄積・可視化を行っている。
導入はこのへんを参考にすれば大体解決。
- GrowthForecastというグラフ表示ツールで捗る話 - blog.nomadscafe.jp
- 様々な値をWebAPI経由でグラフ化できる「GrowthForecast」をインストールしてみた - FAT47の底辺インフラ議事録
- RaspberryPiにGrowthForecastをインストールする - 工作とかプログラミングとか
- CentOS 6.4 に growthforecast を構築するメモ - ようへいの日々精進XP
GrowthForecast の起動スクリプトは雑だが下のような形に落ち着いた。
世の中の記事を見ると GrowthForecast が小数対応する前の情報が多いが、今なら --enable-float-number
オプションで小数が使える。
このスクリプトを Supervisor に呼び出してもらう。
Supervisor の導入についてはこちらを参考。
GrowthForecast を CentOS 6.3 にインストールして Supervisor で管理する - 彼女からは、おいちゃんと呼ばれています
ログ取得
データ蓄積は、前述の example/AdafruitDHT.py
を真似たスクリプトを cron で実行し、結果を GrowthForecast に投げることで解決する。
Adatemp.py 22 4
の 22 は DHT22、4 は RaspberryPi の7番が GPIO 4 なのでそれを指定している。
ここで実行している Adatemp.py
と Adahumit.py
は、AdafruitDHT.py
を cp
してつくったスクリプト。
それぞれファイルの最後から2番目の print を以下のように書き換える。
print '{0:0.1f}'.format(temperature)
print '{0:0.1f}'.format(humidity)
あとは作成したスクリプトを cron で実行すればいい。
最後に
ここまでの作業はすべて1日以内で完了した。
連休でちょっと試してみるにはほどよい作業量だと思う。
これが1万円でできるなんてすごい世の中になったものだと実感。
今後やってみたいこと。
- どうせなら屋外にも設置する
- 定期的に自分にプッシュ通知する
興味を持った方は下から購入してもらえると嬉しい。
Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (9件) を見る
Raspberry Piスターターパック (Pi2 用Standard)
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
サインスマート DHT22/AM2302 デジタル温度センサーモジュール RB206 for Arduino 電子工作
- 出版社/メーカー: サインスマート(SainSmart)
- メディア: その他
- この商品を含むブログを見る