プログラミングをやるようになってからRaspberry Piを触ってみたいなと思っていてようやく購入しました。
最初はRaspberry PiでBlutooth接続してSwitchBotを動かそうと思っていたのですが、思うような動作にすることができなくて断念。
何かしら作ってみたいなけどどうしようかな。というところで「Inkdrop」というMarkdownのノートアプリを開発しているTAKUYAさんが部屋のコンディションのグラフページをを作っている記事を見つけ、自分もやってみようと思いました。
Raspberry Piとgo言語で部屋のコンディションを記録してグラフ化した – 丁寧に手を抜く
Raspberry Piのセットアップはこちらを参考にしてみてください。
【簡単】Raspberry Pi (Zero WH) を使い始められるようににセットアップする | Goota
Enviro+を購入する
部屋のコンディションをRaspberry Piで計測するためにはモジュールを買う必要があって、ものによってははんだ付けをしないといけないものもあります。さすがにそれは面倒くさいので、必要なモジュールが入っていてRaspberry Piに挿せばいいだけのpHatを買うことにしました。
PIMORONIというショップから発売されている「Enviro+」というpHatを購入しました。
Enviro for Raspberry Pi – Monitor your world! – Pimoroni Store
- 気温
- 湿度
- 気圧
- 照度
- 近接センサー
- 音量拾う
- LCD(小さいディスプレイ)
- ガス
- 粒子状物質
などが計測できるモジュールが一つの基盤に組み込まれています。これを使って気温・湿度・気圧などを計測してWebページにグラフとして表示させていきます。
(海外のECサイトから購入するので、手元に届くまでに少し時間がかかるのでその点だけ注意が必要です。)
Raspberry Piに装着して使えるようにする
装着は簡単。端子にオスメスがあるのでRaspberry Piの出っ張ってるところに差し込みます。
逆向きに指すとRaspberry Piが壊れるので気をつけてください。
そしてRaspberry PiとpHatでI2C
通信をするために設定をします。設定の方法は下記の記事を参考にやってみてください。
RaspberryPiで I2Cを使えるようにする | Goota
記事通りに進めれば準備完了です。
Goolangで気温・湿度・気圧を計測する
Golangを使用したのは
- ビルド後のバイナリファイルだけあればよい
- いい感じにデータを計測できるGolangパッケージ(d2r2/go-bsbmp)が存在してた
という理由からです。
コードはこんな感じです。やってることとしては
- パッケージ読み込む
- 気温・湿度・気圧を計測
- Firebaseのデータベースに値を挿入
特に複雑なことはしてないです。メソッドを実行すればデータを取り出せます。ただ、気温・湿度が手元にある温度計の値と開きがあったのでいい感じになるように補正しました。
Firebaseも初めて使いましたが、SDK読み込んでインスタンス作成してデータ突っ込んで送信すればいいだけなので結構簡単に使えました。こういう個人でちょっと使うときにサクッと使えるのは最高です。
Pythonで照度を取得する
照度も計測します。
本当はGolangでまとめて取得したかったのですが、パッケージがなかったのでPythonを使っています。
ソースコードはこんな感じ。Golangでやったように、データ取得 → Firebaseに保存っていう感じです。
Vue + chart vueで表示する
Firebaseに保存しているデータを使って実際にWebページにグラフ化して描画します。
そして使ったことがなかったのでGoogleログインを表示前に実装します。
※詳細は別記事を作成予定
完成サイト
完成したVue.jsのプロジェクトファイルとNetlifyにデプロイして公開して完成です。
サイトはこちら。
Room condition
初めてRaspberry Piとモジュールを使用して作成しましたがで楽しく開発できました。費用もそこまでかからずにIoT系の開発ができるので興味がある方はぜひやってみてください。