ラズパイpicoWで家の温度と湿度を管理してスマートホーム化

ラズパイpicoWを使って温湿度を見える化したグラフ ホームオートメーション
スポンサーリンク

はじめに

家の中の温湿度管理は、快適さだけでなく、エネルギー効率の向上にも重要です。

今回は、Raspberry Pi Pico WとGrove温湿度センサー、家にある古いノートパソコンを使って温湿度監視システムを作りました。
このシステムは、Wi-Fiを介して1分毎に温湿度データを取得し、ブラウザからアクセスしてグラフで確認できるようにしています。

日中暑かったので、エアコンつけました。

日中にこの部屋を使う機会があり、暑かったのでエアコンをつけました。
温度は29℃と高いのですが、湿度も一緒に下がっているので体感はとても快適になりました。

湿度が下がれば、温度が高くても快適になることを実感。

システム概要

Raspberry Pi Pico WとGroveの温湿度センサーを使用して家の温湿度データを取得し、ノートパソコン(UbuntuOS)でそれらのデータを受信・保存しています。
さらにノートパソコン(UbuntuOS)にApacheをインストールして、HTTPリクエストがあれば、指定した日付の温湿度データをJSON形式で提供し、ウェブブラウザからグラフで家の温湿度を見ることができます。

ただし、セキュリティの観点からWifiルータの外部からは、Ubuntuへはアクセスできないようにしています。
ローカルネットワーク内のみで閲覧可能とします。

システム構成図

以下のような動作を行います。

シーケンス図

ソースコードはgitで公開しています。

Tsubablog / SmartHome · GitLab
GitLab.com

準備するもの

この記事では、以下の物を使います。

●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
アナログA026
アナログA127
アナログA228
デジタルD1616
デジタルD1818
デジタルD2020
UART0 TX0
UART0 RX1
UART1 TX4
UART1 RX5
I2C0 SDA8
I2C0 SCL9
I2C1 SDA6
I2C1 SCL7
ピン配置

●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」のインストール
  • マイクロパイソンをpico Wに書き込む
  • プログラムをPico Wに書き込む
  • 機器を接続してプログラムを実行

開発環境「Thonny」のインストール

Thonnyは、Pythonプログラミングに特化したシンプルで使いやすいIDE(統合開発環境)です。
Raspberry Pi Pico Wでもこのツールを使って簡単に開発ができます。

  1. 公式サイトからThonnyをダウンロード
    https://thonny.org/
  2. インストール
    ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させます。Windows、macOS、Linuxのいずれでも利用可能です。

マイクロパイソンをpico Wに書き込む

Raspberry Pi Pico Wでパイソンプログラムを動かすためには、最初にマイクロパイソンをPico Wに書き込む必要があります。

マイコンは機械語しか理解できないので、私たちがpico Wに書き込んだプログラムはマイクロパイソンが解釈して機械語に変換してくれているわけですね。

  1. マイクロパイソンファームウェアのダウンロード
    以下の公式ホームページからpico W用のマイクロパイソンをダウンロードします。
    (そのまま公式HPの説明に従ってpico WにインストールしてもらってOKです。)
    https://projects.raspberrypi.org/en/projects/get-started-pico-w/1
  2. マイクロパイソンファームウェアのダウンロード
    Pico Wの「BOOTSEL」ボタンを押しながら、USBケーブルでPCに接続します。すると、Pico WはUSBドライブとして認識されます。
  3. 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というファイル名のプログラムを実行することになっています。

チェック
  • MicroPythonは電源を入れると、「boot.py」というファイルを実行してから「main.py」を実行するようになっています。
    (今回は「main.py」のみで動作させます。)

5.libフォルダの保存
Thonnyの左下に「Raspberry Pi Pico」という名前のエリアがあります。
ここにはpico Wの中に保存されているファイル一覧が表示されます。
そこで右クリックして「新しいディレクトリ」を選択し、pico Wの中に「lib」という名前のディレクトリを作成します。


その中へ、Gitから取得した「lib」フォルダの中に入っているプログラムを、「名前を付けて保存」でファイル名はそのままで保存します。

チェック

Gitで配信しているプログラムはそのままでは動作しません。
「myNetwork.py」をご自身の環境に合わせて修正する必要があります。
・6行目にWifiルーターのSSIDとパスワードを入力してください。
・26行目のIPアドレス部分をサーバー用PCに割り当てられたIPアドレスに修正してください。
・シングルクォーテーション(’)は残し、シングルクォーテーションで囲まれた中のみを変更します。

以下のリンクでサーバー用PCにApacheとPHPをインストールする方法を説明しています。
ラズパイからPHPをたたいて、センサの値をサーバー用PCにロギングします。

中古のノートパソコンにLinux(Ubuntu)をインストール
この記事では、古いノートパソコンをフォーマットし、UbuntuをインストールしてApacheサーバーとして利用する手順を紹介します。 はじめに 不要になったノートパソコンをフォーマットし、UbuntuをインストールしてApacheサーバーと...

機器を接続してプログラムを実行

センサをpico Wに接続して、プログラムを実行します。

  1. センサを接続
    Gitで配信しているプログラムは、「デジタル温度・湿度センサ」をGroveシールドのI2C0、
    「LCD RGB バックライト」をGroveシールドのI2C1に接続するように作っています。
  2. 電源を供給
    picoWに電源を供給することで、main.pyが自動で実行されます。
    私はサーバー用パソコンのUSBポートから電源を供給していますが、モバイルバッテリーなどから電源を供給して好きな場所で動かすこともできます。

以上で、ラズパイpico W側の作業は完了です。
次の記事で、サーバー用パソコンのセッティングを行います。

中古のノートパソコンにLinux(Ubuntu)をインストール
この記事では、古いノートパソコンをフォーマットし、UbuntuをインストールしてApacheサーバーとして利用する手順を紹介します。 はじめに 不要になったノートパソコンをフォーマットし、UbuntuをインストールしてApacheサーバーと...

コメント

タイトルとURLをコピーしました