意外と簡単!sakura.ioとRaspberry Piで始めるIoT ~熱中症予防・メールお知らせシステムを作ってみよう~(1)
(注意:本記事はIoTを活用したシステム開発の学習を目的としたものです。きちんとした熱中症の対策については環境省の「熱中症予防情報サイト(http://www.wbgt.env.go.jp/)」等を参考に、適宜ご自身でご判断いただければと思います。)
高田征宏です。普段は、組み込み機器のソフトウェア設計を行っています。趣味で、Raspberry PiやArduinoなどを使って、電子工作を行なっています。
本記事ではsakura.ioとRaspberry Piを組み合わせた「熱中症予防・メールお知らせシステム」の作り方について紹介させていただきます。
熱中症予防・メールお知らせシステム
夏になると、多くなるのが熱中症です。熱中症を引き起こす主な要因には、「環境」が挙げられます。「環境」には、気温が高い/湿度が高いなどがあります。
そこで、あらかじめ設定した熱中症の目安値と、センサーから取得した周囲の温度と湿度を比較することで、熱中症危険度レベルを算出し、その結果から危険度が高いと判断された場合、携帯端末にメールなどで通知することで水分補給を促すシステムを作ろうと思います。
システムの構築には、温湿度センサー、sakura.io、Raspberry Piを使います。
前編となる本記事では、以下を行います。
- 温湿度センサー(DHT22)の使い方
- Raspberry Piからsakura.ioへのデータ送信方法
- Raspberry Piとsakura.ioからデータの取得方法
熱中症予防・メールお知らせシステムの全体図
まずは熱中症予防・メールお知らせシステム全体の流れと各機能について説明させていただきます。
以下がシステムの全体図です。
システムの各機能の動作概要は以下となります。
- step1. 周囲の環境を温湿度センサーにより取得します
- step2. 計測した温度/湿度をsakura.ioに送信します
- step3. sakura.ioに送信されたデータを取得し、熱中症の危険度を算出します
- step4. 熱中症の危険度が高い場合、メールにて通知します
使用する機材の一覧
本システムで使用する機材は、以下となります。
機材名 | 数量 | 内容 | 購入先例 |
---|---|---|---|
sakura.io通信 モジュール |
1 | データの通信に使用します | 購入先一覧 |
Arduino シールドボード |
1 | さくらの通信モジュールとRaspberry Piとの接続に使用します | 購入先一覧 |
Raspberry Pi 3 | 2 | OSは、RASPBIAN date:2017-04-10で確認しています 本ガジェットでは、Raspberry Piを2つ使用するため、 以降、Raspberry Pi[計測]とRaspberry Pi[監視]と記述します |
秋月電子通商 ケースなし Amazon ケース付き |
マイクロ SDカード |
2 | OSのインストール、ストレージとして利用します。 本記事では、microSDHC東芝UHS-I Class10を使用しました |
秋月電子通商 Amazon |
マイクロ USBケーブル |
2 | Raspberry Pi用の電源ケーブルとして使用します | 秋月電子通商 Amazon |
USB電源 アダプタ |
2 | Raspberry Pi用の電源として使用します 出力が高いもの(2A、2.4Aなど)を選びます |
秋月電子通商 Amazon |
DHT22 (AM2302) |
1 | 温度・湿度センサーです。 通販サイトによっては、AM2302とのみ記載されている場合があります 秋月電子通商(4pinタイプ)で購入の場合、 別途抵抗が必要になります |
秋月電子通商 Amazon |
ジャンパー ワイヤー |
10 程度 |
Raspberry Piとセンサー及びArduinoシールドボードと接続に使用します ・Raspberry Piとセンサー接続する場合、メス-メスを使用 ・Raspberry PiとArduinoシールド接続する場合、オス-メスを使用 ・ブレッドボード内で接続する場合、オスーオスを使用 |
秋月電子通商 オスーメス 秋月電子通商 オスーオス Amazon オスーメス |
タクトスイッチ | 1 | Raspberry Piに物理スイッチをつけます | 秋月電子通商 |
ブレッドボード | 1 | タクトスイッチを接続する際に使用します | 秋月電子通商 Amazon |
スペーサー ナット |
2 | Arduinoシールドボードを固定する際に使用します プラスチックのものを使用しました |
秋月電子通商 |
(抵抗4.7kΩ) | 1 | DHT22 4pinタイプ時、必要となります 3pinタイプの場合は、不要です |
秋月電子通商 Amazon |
step1. センサーで温度/湿度データを取得する
温湿度センサーとRaspberry Piを接続し、温度を取得する方法について説明します。
以下が、step1で使用する機材です。
機材名 | 数量 | 内容 |
---|---|---|
Raspberry Pi 3[計測] | 1 | RASPBIAN JESSIE WITH PIXEL-Release date:2017-04-10にて動作確認 |
DHT22 (AM2302) |
1 | 温度・湿度センサー |
ジャンパーワイヤー | 3 | Raspberry Piとセンサーを接続します |
センサーとRaspberry Piを接続する
DHT22は、1本のデータ線で通信する温湿度センサーです。
まず、Raspberry Pi3[計測]とDHT22を接続します。
ジャンパーワイヤーを使用して、以下のように、接続してください。
Raspberry Pi側 | DHT22側 |
---|---|
3.3V | 1: Vcc1 |
GPIO26 | 2 : Data |
GND | 3 : GND |
※センサー側(DHT22-3ピン)にプルアップ抵抗が内蔵されています。
そのため、Raspberry Piと直接接続しています。
センサー(DHT22-4pin)を使用する場合は、プルアップ抵抗が別途必要です。
その場合、以下の回路図を参考にしてください。
センサーの値を取得する
センサーからデータを取得するためのプログラムは、Github等に公開されているライブラリを使用することで、簡単に作ることができます。
今回は、MyPyDhtのライブラリを使用します。
Raspberry Piへのライブラリのインストールは、以下の手順で行います。
pythonのインストール
pythonをインストールします。
$ sudo apt-get update $ sudo apt-get install build-essential python-dev
以上で、pythonがインストールされます。
DHTライブラリのインストール
DHTライブラリをインストールします。
$ sudo git clone --recursive https://github.com/freedom27/MyPyDHT $ cd MyPyDHT/ $ sudo python3 setup.py install
以上で、DHTライブラリ及びサンプルプログラムがインストールされます。
温度と湿度を確認
サンプルプログラムを修正し、温湿度の測定を行います。
作業フォルダを"sio_module"として、確認を行います。
$ cd $ mkdir sio_module $ cd sio_module
確認用のプログラムは、以下となります。
ファイル名:measure.py
#!/usr/bin/python # coding: utf-8 ############################################## # センサー制御取得 - ここから # import MyPyDHT # 測定の開始(26は、接続したGPIOポート) humidity, temperature = MyPyDHT.sensor_read(MyPyDHT.Sensor.DHT22, 26) # 結果の表示 print("Temp=" + str(temperature) + "*C, Humidity = " + str(humidity) + "%") # # センサー制御取得 - ここまで ##############################################
実行とその結果は、以下のようになります。
$ python3 measure.py Temp=24.7*C, Humidity = 46.4%
上記の結果から、温度が24.7度、湿度が46.4%とわかります。
※失敗する場合、回路図との接続を確認してください。
※DHT22の制御ライブラリは、いろいろな方や団体が提供しています。
Python2系、Python3系のライブラリが混在しています。
[step.2]にて、sakura.ioと接続にて、Python3のライブラリを使用します。
そのため、本ライブラリは、Python3で動作するものを選択しています。
次の記事では、温度と湿度をsakura.ioに送信する手順について説明させていただきます。