ボクにもわかる IoTモジュール ESP-WROOM-02 ESP32-WROOM-32

Espressif Systems社の IoTモジュール ESP-WROOM-02 ESP32-WROOM-32 を使用し、さまざまな IoT 機器や応用システムの製作を行うためのサンプル・スケッチ集です。

1_practice

マイコン練習用サンプル・プログラムが含まれているフォルダです。

2_example

IoT機器用のサンプル・プログラムが含まれているフォルダです。

1-1 Wi-Fi インジケータ

LEDをWi-Fi経由で制御するワイヤレスLチカ実験を行います。

1-2 Wi-Fi スイッチャ

スイッチ状態をWi-Fi送信します。後述のWi-Fi LCDなどで受信することが出来ます。

1-3 Wi-Fi レコーダ

アナログ入力値をWi-Fi送信します。

ケチケチ運転術

乾電池などで動作するIoTセンサ用の基本形です。応用しやすいように機能を絞り込みました。

1-4 Wi-Fi LCD

Wi-Fi スイッチャや各種IoTセンサが送信したデータを液晶ディスプレイ(LCD)へ表示する基本形です。後述の応用例「Wi-Fi コンシェルジェ 掲示板担当」の基本動作を理解することが出来るでしょう。

2-1 (IoTセンサ) Wi-Fi 照度計

IoTセンサは、システムの中でさまざまな物理量データを集める役割を担います。
Wi-Fi 照度計は照度値を送信するIoTセンサです。時間帯や照明機器、人影などによって照度が変化するので、室内環境を把握する基本的な機器のひとつです。また、センサを手で遮るなど、簡単にセンサ値を変化させることが出来るので、センサの初期実験に便利です。

2-2 (IoTセンサ) Wi-Fi 温度計

温度値を送信するIoTセンサです。同じ建物内でも、部屋や測定箇所(足元と空調機の近く、窓付近など)によって温度差が生じることがあるので、複数のIoTセンサによるセンサネットワークを構築するときの代表的な応用例の一つになります。

2-3 (IoTセンサ) Wi-Fi ドア開閉モニタ

ドアや窓が開いたとき(または閉まったとき)に開閉状態を送信するIoTセンサです。防犯や人の出入りなどを把握するときに使用できるでしょう。

2-4 (IoTセンサ) Wi-Fi 温湿度計

温湿度を送信するIoTセンサです。デジタルのI2Cインタフェースをもつセンサを使用することで、アナログ回路やセンサ値の補正が不要となり、正確な値を手軽に得ることが出来ます。

2-5 (IoTセンサ) Wi-Fi 気圧計

気圧と温度を送信するIoTセンサです。気圧高いと晴れ、低いと天気が崩れる傾向や、海水面からの標高によっても変化します。天候を予想したり、換気扇や窓の開け閉めなどによる室内の圧力変化を検知することも出来るでしょう。

2-6 (IoTセンサ) Wi-Fi 人感センサ

人体などの動きを検出したときに送信するIoTセンサです。在室情報などを把握することが出来るでしょう。

2-7 (IoTセンサ) Wi-Fi 3軸加速度センサ

加速度の変化を検出したときに送信するIoTセンサです。ドアや窓の開閉や傾きの変化などを検出することが出来ます。

2-8 NTP時刻データ転送機

現在時刻をインターネットから取得してWi-Fi送信する機器です。あたかも「時刻センサ」のような動作を行います。センサネットワークではセンサ値と時刻情報を紐づけて取り扱うことが多いので、インターネットから時刻を取得するプロトコルNTPを利用することも多いでしょう。

2-9 (IoTセンサ) Wi-Fi リモコン赤外線レシーバ

赤外線リモコン信号を受信し、受信データをWi-Fi送信します。家電などの操作情報を収集します。収集した情報の集計を行うことで、よく見るテレビのチャンネルやエアコンの使用時間などを把握することも出来るでしょう。

2-10 (IoTセンサ) Wi-Fi カメラ

定期的にカメラ撮影を行い、撮影後に通知を送信する監視カメラです。撮影した写真はHTTPで取得することが出来ます。HTTP版に加え、FTPで送信するFTP版も収録しました。

3-1 Wi-Fi コンシェルジェ 照明担当(キャンドルLED制御)

各種Wi-Fi コンシェルジェ機器には、HTTPによるWebサーバ機能が装備されています。インターネットブラウザから手動制御を行ったり、Raspberry Piなどのサーバーからの自動制御を行ったりすることが出来ます。
Wi-Fi コンシェルジェ 照明担当が制御するLEDは、状態や情報を、さりげなくユーザへ通知するときに使われます。天気予報情報に応じて、LEDの点滅方法を変化させたり、トイレに設置した人感センサが検知後の経過時間を通知するといった応用が出来るでしょう。
なお、AC 100Vの照明機器を制御するには、後述の Wi-Fi コンシェルジェ 電源設備担当を使用します。

3-2 Wi-Fi コンシェルジェ チャイム担当(ブザー制御)

ユーザへ気づきを通知するときには、室内のどこにいても認識できるようにチャイム音などが用いられます。来客時やドア開閉、窓開閉といった変化を通知する応用が出来るでしょう。

3-3 Wi-Fi コンシェルジェ 掲示板担当(LCD制御)

液晶ディスプレイ(LCD)を用いることで、より多くの情報をユーザへ通知することができるようになります。

3-4 Wi-Fi コンシェルジェ リモコン担当(赤外線リモコン制御)

テレビやエアコン、オーディオ、照明機器など、赤外線リモコンに対応した家電機器を制御します。
赤外線リモコン信号コードはインターネットブラウザから HTTP GET リクエストで取得することが出来ます。ブラウザ上に表示された赤外線リモコン信号を HTTP POST リクエストで送信することで、赤外線リモコン信号を発信することが出来ます。

3-5 Wi-Fi コンシェルジェ カメラ担当

カメラのシャッターを制御し、撮影した写真をブラウザで確認したり、Wi-Fi 人感センサで検出した人物を撮影するといった防犯システムへ応用が可能なIoT対応カメラです。撮影した写真データをESPモジュール内のメモリに保持し、撮影写真の一覧表示を行うこともできます。

3-6 Wi-Fi コンシェルジェ アナウンス担当(音声合成出力)

音声でユーザへ気づきを通知することが可能なIoT機器です。気づきだけであればチャイム音で通知できますが、「玄関に来客」「寝室のドアが閉まりました」「起床時間です」といった音声でアナウンスすることにより、具体的な内容を含めて通知することが出来るようになります。外出先から VPN 接続すれば、「もうすぐ帰るよ」と音声メッセージを自宅にいる家族へ伝えることもできるでしょう。

3-7 Wi-Fi コンシェルジェ マイコン担当(テレビ表示)

IoTセンサ機器が送信するセンサ値情報を、テレビへ表示することが可能なIoT機器です。テレビへの出力(NTSC)には BASIC マイコンIchigoJam を使用します。BASIC言語 で作成した簡単なプログラムを転送してマイコン上で実行することも可能です。

3-8 Wi-Fi コンシェルジェ コンピュータ担当(Raspberry Piの電源制御)

Raspberry Piの電源が入っていないときに電源投入の制御を行うことが可能なIoT機器です。外出先から VPN 接続してRaspberry Piの電源を投入することも出来ます。
また、インターネットブラウザを使って簡単なコマンドをRaspberry Piへ送ったり、応答結果を確認することも出来ます。

3-9 Wi-Fi コンシェルジェ 電源設備担当(ACリレー制御)

AC100V 制御が可能なリレー・モジュールを用いることで、ACコンセント用タイマに対応したオーディオ機器や電気スタンドなどの家電機器を制御することが出来ます。たとえ無人で動作させても事故が発生しないように、十分な配慮と安全対策を行ってください。

3-10 Wi-Fi コンシェルジェ 情報担当(ファイル共有サーバ)

各種 Wi-Fi 対応IoT センサ機器から送られてきたセンサ値データを、受信した時刻情報とともに ESPモジュール内に保持します。2Mバイトのフラッシュメモリが実装されているESPモジュールの場合、最大1Mバイトのデータを保持することができます。

4-1 センサデバイス用 TFTP クライアント 設定

TFTPサーバ上から設定ファイルをダウンロードし、モジュール内の設定を変更します。 本サンプルではディープスリープ時間を設定することが出来ます。

4-2 (IoTセンサ) 乾電池駆動可能なCO2センサ

二酸化炭素や有機ガスなどによる室内の空気環境状態を測定するガスセンサams製CCS811と温度・湿度・気圧を測定する環境センサ Bosch製 BME280を使った、乾電池駆動が可能なワイヤレスCO2センサです。

4-3 Arduino用 LCD Keypad 対応 Wi-Fi コンシェルジェ 掲示板担当

ESP-WROOM-02を搭載した ESPduino または WEMOS D1 、ESP32-WROOM-32を搭載した IoT Express 、DOIT ESPduino 32、 WEMOS D1 R3へ、DF Robot製または、SainSmart製、D1 ROBOT製のArduino 用 LCD Keypadを接続した液晶表示付きIoT端末の製作例です。

4-4 (IoTセンサ) 無線LAN プロミスキャス センサ

スマートフォンやPCが自宅の無線LANへ自動接続したときや、Amazon Dashボタンが押下されたときなどに、送信するMACブロードキャストを検出します。検出時にWi-Fi送信を行うWi-Fi送信版とシリアルUART出力を行うUART出力版を作成しました。

4-5 (IoTセンサ) 内蔵ホール効果素子センサ&タッチセンサ

ESP32 デモ用のスケッチです。ESP32内に内蔵されているホール効果素子センサと、タッチセンサの検出値をスマホのウェブブラウザへ表示します。

4-6 ESP32-WROOM-32用 スイッチ早押し

2016年11月時点では、 Arduino core for ESP32 WiFi Chip のWi-Fi機能が限られていました。その範囲内で作成したWi-Fi動作検証用のサンプルです。開発環境の更新時に発生するデグレ状態でも実行できる場合が多いので、動作確認用として利用できるでしょう。
起動後、ボタン(BOOT GPIO2)を2回押したときの速度をAmbientへ送信します。

4-7 河川の水位情報をLCDへ表示する IoT情報端末

国土交通省「川の防災情報」から河川の水位を取得し、液晶シールド(LCD Keypad)へ表示します。

4-8 天気情報をLCDへ表示する IoT情報端末

Yahoo!天気・災害から天気情報を取得し、液晶シールド(LCD Keypad)へ表示します。

4-9 Google カレンダー(予定表) から予定を取得する IoT情報端末

Google カレンダー(予定表) に登録した予定を取得し、液晶シールド(LCD Keypad)へ表示します。

4-10 Wi-Fi コンシェルジェ フォトフレーム&カメラ画像表示端末

有機ELディスプレイ(SSD1331ドライバ搭載品)または、M5 Stackの液晶ディスプレイをフォトフレーム端末として使用しつつ、Wi-Fi カメラ(2-10)が撮影した写真を表示します。

4-11 (IoTセンサ) 音声送信機

アナログ入力ポートから録音した音声を送信します。

3_misc

本書の実験に関連するファイルです。

4_server

各IoT機器をRaspberry Piで制御するためのサンプル・スクリプトです。

server01_bell 単機能の呼鈴システム

Wi-Fi スイッチャ(1-2)、Wi-Fi ドア開閉モニタ(2-3)、Wi-Fi 人感センサ(2-6)のいずれかと、Wi-Fi コンシェルジェ チャイム担当(3-2)に対応した呼鈴システムのサンプルスクリプトです。

server02_talk 音声出力機能つき呼鈴システム

server01_bellに加え、Wi-Fi コンシェルジェ アナウンス担当(3-6)から音声を出力する呼鈴システムのサンプルスクリプトです。

server03_mail メール送信機能つき呼鈴システム

server02_talkに、メール送信機能を追加した呼鈴システムのサンプルスクリプトです。Raspberry PiへsSMTPとMuttをインストールし、Gmailのアカウントを使用してメール送信します。
「tools」フォルダ内の「gmail_setup.sh」を使えば、簡単にセットアップすることができます。

server04_cam 24時間防犯カメラマン

Wi-Fi スイッチャ(1-2)、Wi-Fi ドア開閉モニタ(2-3)、Wi-Fi 人感センサ(2-6)のいずれかと、Wi-Fi コンシェルジェ カメラ担当(3-5)に対応した防犯カメラシステムのサンプルスクリプトです。
各IoTセンサの反応通知を受けると、カメラ撮影を行い、写真をRaspberry Pi内に蓄積します。

server05_mail メール送信機能つき24時間防犯カメラマン

server04_camにメール送信機能を追加した24時間防犯カメラマンです。

server06_hvac 温度異常時にエアコンの運転を開始するホーム・オートメーション・システム

IoTセンサ機器から得られた在室情報と温度情報を基に、エアコンの運転を制御するIoT応用システムです。在室中にも関わらず室温が高くなりすぎた場合や低くなりすぎた場合に、エアコンの運転を開始します。

server07_net 温度異常時にエアコンの運転を開始するホーム・オートメーション・システム

server06_hvacにメール送信機能とAmbientへのデータ送信機能を追加したホーム・オートメーション・システムです。インターネットとの連携でシステム拡張した一例です。

server08_home 呼び鈴システムと組み合わせたホーム・オートメーション・システム

server01_bell と server06_hvac.shserver06_hvac を組み合わせたホーム・オートメーション・システムです。自分専用のホーム・オートメーション・システムへ展開した一例です。

server09_ifttt クラウド連携サービスIFTTT

クラウド連携サービスIFTTTへ通知を送信するスクリプトの例です。

server10_home ホーム・オートメーション・システム

server01_bell と server06_hvac.sh と server09_ifttt.sh を組み合わせたホーム・オートメーション・システムです。本書で製作するホーム・オートメーション・システムの完成例です。

node-red

Node-RED 用のサンプル・フローです。 各種IoT機器用のゲートウェイを簡単に製作することができます。
使用方法は下記のブログを参考にしてください。
https://blogs.yahoo.co.jp/bokunimowakaru/56073151.html

tools

各IoTセンサのデータを収集することができるudp_logger.shなどの関連ツールです。

サポートページ

https://bokunimo.net/bokunimowakaru/cq/esp/

ライセンス

ライセンスについては各ソースリストならびに各フォルダ内のファイルに記載の通りです。
使用・変更・配布は可能ですが、権利表示を残してください。
また、提供情報や配布ソフトによって生じたいかなる被害についても,一切,補償いたしません。

Copyright (c) 2016-2019 Wataru KUNINO
https://bokunimo.net/