Raspberry Pi で温度と湿度を知る
Raspberry Pi で温度と湿度を知る
はじめに
この記事はおうちハック Advent Calendar 2016の21日目の記事です。
前日:ajimitei labo.: HUIS でいらすとやリモコンを作ってみた
翌日:MQTTベースのおうち環境にMESHを追加する - Qiita
遅刻記事になってしまい本当にすいません。
RasPiの不調と、風邪をひいてしまったのと、能力不足で遅くなってしまいました。
環境と機器
- Raspberry Pi B 3 (Rasbian 2016-11-25)
- 温湿度計 HDC1000
手順
実際の試行錯誤はトラブルの項にまとめています
Step.1 Rasbianの初期設定を終わらせてからraspi-configでi2cを有効にします
sudo raspi-config
7 Advanced Options > I2C
Step.2 確認します
lsmod
Step.3 i2c-toolsをインストールする
sudo apt-get install i2c-tools
Step.4 HDC1000の接続を確認
sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Step.5 Wiring Piはデフォルトで入っているので再度入れる必要はないです
Step.6 HDC1000から温湿度を読む
gcc -Wall -o hdc1000_sample -lwiringPi hdc1000_sample.c
sudo ./hdc1000_sample
Raspberry Pi 2 Model B でI2C 温度+湿度センサーモジュール(HDC1000)を使う - Qiita
とうい記事の中のサンプルコードをほとんどそのまま使わせてもらいました
ありがとうございます
Step.7 継続的なログを見るためにcsvを作ります
これをcronで実行します
require "csv" results = `sudo ./hdc1000_sample` stamp = Time.now.to_s + "," + results File.open("/home/pi/outi_hack/tem_hyg.csv","a"){|f|f.puts(stamp)}
Step.8 ブライザで見るためにSinatraで表示させます
sudo apt-get install -y sinatra
sudo apt-get install -y sinatra-contrib
require "sinatra" require "csv" require 'sinatra/reloader' if development? set :bind, '0.0.0.0' get '/' do logs = CSV.read("tem_hyg.csv").reverse time = logs[0][0] tem = logs[0][1] hyg = logs[0][2] p "TEM: " + tem + " HYG: " + hyg + " (#{time})" end
できました!
トラブルと嵌ったところ
恥を忍んで公開します、笑ってやってください
配線を間違えてHDC1000を壊す
- 暗がりでRasPiにジャンパー線を差し込んでいたら青と黒を見間違えて壊しました
- 焦げ臭くなって基板上のセンサチップの半田が溶けて位置がずれた
- RasPiが壊れなかったのは不幸中の幸い
i2c が有効にならない
- 最初はRaspberry Pi B 1 Rev.2でRasbian(2016-11-25)を使っていたのですが
raspi-config
でもi2c や spi の項目ができこず/etc/modules
などで手動で試みるも有効になりませんでした - 結局 Raspberry Pi B 3 を用意して再度やったら何の問題もなくraspi-config`から有効にできました
- 今記事を書いてる時点で確認したら Raspberry Pi B 3 でもI2Cの項目が消えました
RasPiが家の外に繋がらない
- 家の中の他の PC には ping が通るのですが
apt-get
できなかったりwget
できなかったりしました - 原因がわからなかったので OS を再書き込みしました
sshができない
- Rasbian(2016-11-25)のバージョンから ssh がデフォルメで無効になったことを知らず結構嵌ってました
- /bootの下に
ssh
という空ファイルを作ると解決しました Raspbian 2016-11-25リリース | Japanese Raspberry Pi Users Group
Sinatraが外から見えない
- これは結構前の変更ですがしばらく触ってなかったので忘れていました
- Sinatraがデフォルトでは外部から繋がらなくなってたよ - Qiita
おわりに
- i2cはArduinoで使ったことがあったので「温湿度表示とか簡単だろう」とたかをくくっていましたが、大変なことになってしまいました
- 本当はESP-WROOM-02で温湿度やCO2を計測してマトリクスLEDなんかをつけることを妄想していたのでいつになるかわかりませんが、やりたい
- 温度と湿度があっているのか調べるために家にあったアナログの温湿度を3つHDC1000の隣に置いていたのですが温度は3つのアナログ温度計もHDC1000も大体一致するのですが湿度に関してはすべて約15%の誤差があり湿度を正確に知るのは難しいことがわかりました
- ここまでお付き合いいただきありがとうございました
参考URL
- Raspberry Pi 2 Model B でI2C 温度+湿度センサーモジュール(HDC1000)を使う - Qiita
- 共有ライブラリへパスを通す | hajichan.net technical version
- Raspberry Pi 3でRaspbian Jessieをセットアップする方法 - karaage. [からあげ]
- RubyでWiringPiを使う | ぬわーーーーーーー!!!
- 「全裸で学ぶMVC事始め」をruby + Sinatraでやってみた - 飲む、寝る。
- Raspberry Pi の I2C を有効化する方法 (2015年版) – ymyzk’s blog
ありがとうございます