はじめに
この記事は スマートスピーカー Advent Calendar 2017 17日目の記事です。
が、最終日まで投稿が無いようでしたので代わりに投稿させて頂きます。
ESP32とサーボモーターでお手軽Wi-Fi物理スイッチを作ってお風呂のお湯はりをGoogle Homeから音声操作してみようと思います。
今回グローバル→ローカルのネットワーク接続をBlynkを使って行っていますが、Firebase経由にすれば前回記事で作ったWebアプリで外出先から操作して家に着く前にお風呂を沸かしておくといった事もできますね。
そして気になるコストですが、1,000円弱で済ませられます。
「MicroBot Push」や「Switch Bot」といった製品だと5,000円ほどしますので格安ですね。
実際の動作
Qiita記事用動画です。
— 田中みそ (@miso_develop) 2017年12月24日
お手軽Wi-Fi物理スイッチをGoogle Homeで音声操作。 pic.twitter.com/ezfgwuftas
設置方法には改善の余地が多々ありますので、工夫してみて下さい…
処理の流れ
いるもの
いるもの | 価格(¥) | 備考 |
---|---|---|
ESP32開発ボード | 749 | |
サーボモーター | 117 | |
電池ケース | 35 | 単3×3本 |
基盤 | 15 | |
ケース | 34 | 100均で3箱100円とかで適当に |
合計 | 950 |
まだ手元に届いてなく試せていないのですが、ESP32をこれに置き換えたらも少し安く済みそうです。
はんだ付けめんどいって方はブレッドボードをご使用下さい。
回路
サーボモーターからは3色のケーブルが出ています。
それぞれのケーブルを以下のようにESP32へ繋ぎます。
サーボモーター | ESP32 | 備考 |
---|---|---|
茶色 | GND | GND |
赤 | 5V | 電源 |
オレンジ | IO13 | 信号 |
あとはGNDと電源に電池繋げて完成です。
ESP32ソース
ESP32はArduino IDEを使って開発を行います。
まずは環境構築ですが、こちらを参照下さい。
またグローバル→ローカルの通信にBlinkを使用しています。
Blinkのプロジェクト作成も事前に必要になりますので、こちらを参考に準備してみて下さい。
上記の準備ができたら以下のソースをESP32へ書き込みましょう。
auth[]
、ssid[]
、pass[]
はご自身の環境のものに書き換えて下さい。
またBLYNK_WRITE(V1)
の中央のledcWrite
でサーボモーターの押し込み具合を調節してみて下さい。
パスワードは以下の記事を参考に暗号化して書くことをオススメします。
ESP32のArduinoスケッチにWi-Fiのパスワードを平文で書くのはやめよう!
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "esp_system.h"
char auth[] = "xxxxxxxx"; //Blynkから送られてきたメール内にあるAuth Token
char ssid[] = "xxxxxxxx"; //ルーターのSSID
char pass[] = "xxxxxxxx"; //ルーターのパスワード
void setup() {
ledcSetup(0, 50, 10);
ledcAttachPin(13, 0);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
}
BLYNK_WRITE(V1) {
ledcWrite(0, 80);
delay(500);
ledcWrite(0, 70); //サーボモーターの押し込み具合はここで調節
delay(500);
ledcWrite(0, 80);
}
ここまできたら以下のURLへアクセスすることで動作を確認できます。
xxxxxxxx
部はAuth Tokenに書き換えて下さい。
http://188.166.206.43/xxxxxxxx/update/V1?value=0
IFTTT Appletの作成
あとはIFTTTでApplet作れば完成です。
「this」のレシピ
「Google Assistant」の「Say a simple phrase」で以下のように設定します。
「that」のレシピ
「Webhook」の「Make a web request」で以下のように設定します。
おわりに
現在のうちの給湯器だと動画のボタンを押したあとにお風呂の蛇口を捻らなければならないので、実際は自動化できていません…
しかしもうすぐ引っ越しを控えているので、引っ越し後はまともな給湯器になっているので効果を発揮できそうです。
それまでにFirebase経由で外出先からも操作できるようにしてみたいと思います。