Edited at

Google Homeに話しかけてESP32でLチカしてみる

More than 1 year has passed since last update.


はじめに

ことの発端はカーテンの開け閉めを自動化したくなった。

Google Homeに話しかけるなり照度センサで全自動なりで。

とりあえずググってみると製品があった。

けどカーテン自動化ごときに4,000円は高い。

めざましカーテン mornin’

となると自作でWi-Fiモジュールにモーター繋いでガチャガチャやればいいのかなって安価なWi-Fiモジュールを探してみました。


Wi-Fiモジュールいろいろ

まずは「ラズパイゼロW」とか手頃で良かったんだけど現状国内入手が困難。

窓の数だけ用意する必要があるので量産できなきゃダメです。

あとちょっとリッチすぎ感ある。

FlashAir」も面白そうだけどそこそこ値が張る。

そんな中見つけたのが「ESP-WROOM-32」です。

1円玉程度のモジュールにWi-FiとBluetoothもついて700円!

しかもArduino IDEで開発できるという。

これは熱い。

早速秋葉へチャリを飛ばしゲット。

私が購入したのは秋月電子の開発ボードのやつです。

USB変換とピッチ変換とスイッチついてます。

これでプロトタイプ作って量産はモジュールのみので行う予定。

ちなみに「ESP-WROOM-02」っていう旧型もあって、こっちはBluetoothついてなくてスペックも落ちるけど150円安いです。


やってみよう

というわけで環境構築~Google HomeでLチカまで、以下の手順で進めて行こうと思います。


  • 開発環境構築


    • PCとUSB接続してLチカまで

    • IoTのHallo World



  • ESP32→サーバ通信


    • Wi-Fi繋げてHTTPアクセス

    • これができればGETやPOSTでESP32のセンサ情報取得できるよね



  • サーバ→ESP32通信


    • ESP32へPush

    • ここまでくればGoogle Homeからの操作もおっけー



なお↑でやること、既に偉大な先達の方々が情報を公開してくれています。

なので参考情報を添えつつ実施手順を箇条書きでサラサラっとまとめてきます。

無心でなぞってけばGoogle HomeでLチカできるはずです。


必要なもの

以下のものが必要になります。


  • ESP32開発ボード

  • PC(私はWindows10 Proを使用)

  • USBケーブル(ESP32開発ボードの口はmicroUSB)

  • ブレッドボード

  • LED

  • 抵抗

  • 定電流ダイオード


開発環境構築

こちらの記事で完璧です。

ESP32(ESP-WROOM-32)でLチカ (WindowsでArduino IDE使用)

ESP32開発ボードならソフトウェアのとこから進めてけばおっけーです。

以下実際の実施手順です。


  • Arduino IDEダウンロード&インストール



    • https://www.arduino.cc/en/Main/Software


      • ダウンロードにちょっと時間かかったのでESP32を買いに行く前にダウンロードボタンをポチってから家を出ましょう





  • arduino-esp32(Arduino IDEをESP32対応させるやつ)ダウンロード



  • スケッチブック保存場所に「hardware/espressif/esp32」とディレクトリ作成し、ダウンロードしたzipの「arduino-esp32-master」配下を展開


    • スケッチブック保存場所はArduino IDEの「ファイル > 環境設定」から確認できます


      • Windowsなら「C:/Users/%USERNAME%/Documents/Arduino」 がデフォルトのはず





  • 「hardware/espressif/esp32/tools/get.exe」を実行


    • ちょっと時間かかります



  • PCとESP32をUSB接続

  • IDE起動し以下設定


    • 「ツール > ボード」で「esp32 dev module」選択

    • 「ツール > シリアルポート」で一番下のCOM選択


      • 私の環境では「COM5」でした





  • Lチカ回路を組む



  • IDEにスケッチ(ソース)を書く



  • 「スケッチ > マイコンボードに書き込む」でLチカ!


ESP32→サーバ通信

こちらの記事で完璧です。

ESP32 で無線LANを使う


  • なんでもいいからサーバ立ち上げとく


    • 私はNode.jsにてexpressを使いました




  • ここのESP32側コードをIDEにコピペ



    • SSIDPASSWORDURLを書き換える



  • 「ツール > シリアルモニタ」でシリアルモニタを立ち上げておく


    • 右下の「xxxx bps」ってやつを「115200 bps」に変えておく



  • 「スケッチ > マイコンボードに書き込む」


    • シリアルモニタに「Response: 200」とか出ればおっけ!



  • URLにGETパラメータつけてサーバ側でパラメ取得とかやってみて下さい


サーバ→ESP32通信

こちらの記事で完璧です。

Google Home Mini を使って、声で ESP32 の LED を光らせてみた

サーバ→ESP32の通信をどう行うかですが、ESP32上にサーバ立ち上げてアクセスとかだとシンプルですが、Google Homeといったインターネットからのアクセスが面倒です。

上記の記事では「Blynk」というクラウドサービスを使っており、簡単にインターネットから自宅のESP32への接続を実現しています。

ということで手順です。


  • Blynkプロジェクトを作成



  • Blynkライブラリをインストール


    • メールのライブラリリンクからzipをダウンロード

    • スケッチブック保存場所に展開(「libraries」と「tools」)



  • IFTTT Applet作成


    • 「this」は「Google Assistant」の「Say a phrase with a number」あたりで数値を引数にします


      • フレーズとかはよしなに。よくわからない方はこちら参照下さい



    • 「that」は「Webhook」


      • 「URL」に「http://188.166.206.43/xxxxxxxx/update/V1?value= {{NumberField}}」


        • 「xxxxxxxx」はBlinkから届いたメールのAuth Tokenを



      • 「Method」は「GET」、「Content Type」は「text/plain」、「Body」は空っぽで





  • スケッチ作成



    • ここのソースをコピペ



      • authはメールのAuth Tokenを


      • ssidpassも書き換え





  • Lチカ回路を組む



  • スケッチ実行


    • Arduino IDEにて「ツール > シリアルモニタ」でシリアルモニタを立ち上げておく

    • 「スケッチ > マイコンボードに書き込む」で準備おっけ

    • Google Homeに話かけてLチカしてみましょう



こんな感じ↓。

やたら震えてるの感動のせい。


おわりに

電子工作慣れしてない私は最初ESP32の見てくれにビビりまくりでしたが、使ってみるとこんな簡単に通信できちゃうんだとびっくりでした。

まだまだ勉強することが沢山ありますが、カーテン自動化を実現できるよう挫けず進めていきたいと思います。