はじめに
家の中の温湿度管理は、快適さだけでなく、エネルギー効率の向上にも重要です。
今回は、Raspberry Pi Pico WとGrove温湿度センサー、家にある古いノートパソコンを使って温湿度監視システムを作りました。
このシステムは、Wi-Fiを介して1分毎に温湿度データを取得し、ブラウザからアクセスしてグラフで確認できるようにしています。
日中暑かったので、エアコンつけました。
日中にこの部屋を使う機会があり、暑かったのでエアコンをつけました。
温度は29℃と高いのですが、湿度も一緒に下がっているので体感はとても快適になりました。
湿度が下がれば、温度が高くても快適になることを実感。
システム概要
Raspberry Pi Pico WとGroveの温湿度センサーを使用して家の温湿度データを取得し、ノートパソコン(UbuntuOS)でそれらのデータを受信・保存しています。
さらにノートパソコン(UbuntuOS)にApacheをインストールして、HTTPリクエストがあれば、指定した日付の温湿度データをJSON形式で提供し、ウェブブラウザからグラフで家の温湿度を見ることができます。
ただし、セキュリティの観点からWifiルータの外部からは、Ubuntuへはアクセスできないようにしています。
ローカルネットワーク内のみで閲覧可能とします。
以下のような動作を行います。
ソースコードはgitで公開しています。
準備するもの
この記事では、以下の物を使います。
●Raspberry Pi Pico WH
通常のOSが載っているようなラズパイとは違い、より電子工作向けにスペックが落とされたマイコンです。
Wi-Fi無線通信モジュールが搭載されたもので、簡単にWiFi通信を実現できます。
とても小さいので、今回のようなセンサー値をとりたいだけの用途には最適です。
●USBケーブル
パソコンとRaspberry Pi Pico WHを接続するために必要です。
●Pi Pico v1.0用Grove シールド
ラズパイpicoを接続することで、簡単にgroveのモジュールを使うことができます。
この商品はpico用ですがpicoWでも問題なく使うことができます。
ピン配置は以下の通りです。
Groveポート | ラズパイpico GPIO |
アナログA0 | 26 |
アナログA1 | 27 |
アナログA2 | 28 |
デジタルD16 | 16 |
デジタルD18 | 18 |
デジタルD20 | 20 |
UART0 TX | 0 |
UART0 RX | 1 |
UART1 TX | 4 |
UART1 RX | 5 |
I2C0 SDA | 8 |
I2C0 SCL | 9 |
I2C1 SDA | 6 |
I2C1 SCL | 7 |
●GROVE – デジタル温度・湿度センサ(DHT20)
温湿度をI2Cで取得することができます。
スペックや使用方法は公式ページを見てください。
https://wiki.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DH20/
●GROVE – LCD RGB バックライト
16文字2行を表示できるLCDです。
バックライトはRGBをそれぞれ0~255まで調整することができます。
こちらもスペックや使用方法は公式ホームページを見てください。
https://wiki.seeedstudio.com/Grove-LCD_RGB_Backlight/
LCDはラズパイpicoWの動作状況を知るのに便利ですが、LEDだけでも何とかなる人は無くても問題ないです。
いろんな色に光らせることができてキレイです。
処理成功は緑、エラーは赤など使い分けもできる。
●古いノートパソコン
古いノートパソコン等いらなくなったものがあれば、完全に初期化した後にUbuntuをインストールして使います。
ないようであれば、これを機にサーバー用のミニPCなどもオススメです。
私もミニPC欲しいです。
UbuntuにapacheをインストールしてWebサーバーとして機能させます。
ラズパイPico Wのセットアップ
作業内容
開発環境「Thonny」のインストール
Thonnyは、Pythonプログラミングに特化したシンプルで使いやすいIDE(統合開発環境)です。
Raspberry Pi Pico Wでもこのツールを使って簡単に開発ができます。
- 公式サイトからThonnyをダウンロード
https://thonny.org/ - インストール
ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させます。Windows、macOS、Linuxのいずれでも利用可能です。
マイクロパイソンをpico Wに書き込む
Raspberry Pi Pico Wでパイソンプログラムを動かすためには、最初にマイクロパイソンをPico Wに書き込む必要があります。
マイコンは機械語しか理解できないので、私たちがpico Wに書き込んだプログラムはマイクロパイソンが解釈して機械語に変換してくれているわけですね。
- マイクロパイソンファームウェアのダウンロード
以下の公式ホームページからpico W用のマイクロパイソンをダウンロードします。
(そのまま公式HPの説明に従ってpico WにインストールしてもらってOKです。)
https://projects.raspberrypi.org/en/projects/get-started-pico-w/1 - マイクロパイソンファームウェアのダウンロード
Pico Wの「BOOTSEL」ボタンを押しながら、USBケーブルでPCに接続します。すると、Pico WはUSBドライブとして認識されます。 - Pico Wにファームウェアをコピー
ダウンロードしたUF2ファイルをPico WのUSBドライブにコピーすると、自動的に再起動し、マイクロパイソンがインストールされます。
プログラムをPico Wに書き込む
私がGitで配信しているプログラムをRaspberry Pi Pico Wに書き込みます。
1.Thonnyを起動
2.pico WをパソコンにUSBケーブルで接続
Thonnyのウィンドウの右下にインタプリタを設定するところがあります。
そこで、「Micro Python(Raspberry Pi Pico)」を選択してください。
3.Gitで「PicoWH」のフォルダをダウンロード
Gitで公開しているファイルをzip形式などでダウンロードします。
ダウンロードしたzipファイルを解凍し、中に入っているファイル全てをThonnyで開きます。
(readme.txtは開かなくてもいいです。)
「このコンピュータ」を選択することで、PC上に入っているファイルを開くことができます。
4.「main.py」ファイルをpico Wに保存
main.pyが開かれている状態で「名前を付けて保存」すると、「どこに保存しますか?」と聞かれるので、Raspberry Pi Picoを選択します。
「main.py」というファイル名で直下に保存してください。
pico Wは電源を供給すると、main.pyというファイル名のプログラムを実行することになっています。
5.libフォルダの保存
Thonnyの左下に「Raspberry Pi Pico」という名前のエリアがあります。
ここにはpico Wの中に保存されているファイル一覧が表示されます。
そこで右クリックして「新しいディレクトリ」を選択し、pico Wの中に「lib」という名前のディレクトリを作成します。
その中へ、Gitから取得した「lib」フォルダの中に入っているプログラムを、「名前を付けて保存」でファイル名はそのままで保存します。
以下のリンクでサーバー用PCにApacheとPHPをインストールする方法を説明しています。
ラズパイからPHPをたたいて、センサの値をサーバー用PCにロギングします。
機器を接続してプログラムを実行
センサをpico Wに接続して、プログラムを実行します。
- センサを接続
Gitで配信しているプログラムは、「デジタル温度・湿度センサ」をGroveシールドのI2C0、
「LCD RGB バックライト」をGroveシールドのI2C1に接続するように作っています。 - 電源を供給
picoWに電源を供給することで、main.pyが自動で実行されます。
私はサーバー用パソコンのUSBポートから電源を供給していますが、モバイルバッテリーなどから電源を供給して好きな場所で動かすこともできます。
以上で、ラズパイpico W側の作業は完了です。
次の記事で、サーバー用パソコンのセッティングを行います。
コメント