Google Home と ESP32 で、音声をテキスト表示させた WiFi 電光掲示板を作ってみた

ESP32 ( ESP-WROOM-32 )
※GitHub の Arduino core for ESP32 のインストールは、
2018/03/05以降の最新版を使用してください。

こんばんは。

今回はとても面白いものが出来たので、報告します。

Google Home でしゃべってテキスト変換された文字列を、ESP32 ( ESP-WROOM-32 ) で Wi-Fi 受信して、小型有機 EL ( OLED ) SSD1306 に電光掲示板スクロール表示させることができました。

そして、更にスゴイことに、インターネット Wi-Fi環境があれば、世界中のどこにいてもテキストを受信できることです。
ローカル環境だけではないですヨ!!
グローバル環境でイケるようになりました!!

これができるようになると、遠方で離れた人に意志を伝えることができます。
では、早速、以下の動画をご覧ください。
(事情があって、声をわざとガラガラ声にしています。)

いかがでしょうか?

これの開発には、Google Cloud Platform , Firebase , Dialogflow , そして Arduino – ESP32 を使用しています。
30秒毎に Web上の Firebase へデータを GET しています。
Google Home に喋るタイミングを30秒間隔で進めていくと、たまたま即反映されているように見えますが、実際はブランクがあります。

また、Google Home のスゴイところは、スマホがあれば、本体が無くても、世界中のどこからでも Google Home と同じようにメッセージを送ることができます。
要するに、スマホに Google Home および Google Assistant アプリがインストールされていればOKです。
声を出すことが出来ない現場では、スマホでテキスト入力した文字を送ることができるので、とても便利ですよね。
以下の動画もご覧ください。
(事情があって、声をわざとガラガラ声にしています。)

いかがでしょうか。
これ、いろいろな使い方がイメージできますよね。
耳の不自由な方にも効果を発揮しそうです。

ただし、課題は沢山あります。
30秒毎にWeb へ GET リクエストしているので、ESP-WROOM-32 の Wi-Fi 使用による電力消費が大きいです。
デュアルコア CPU が常時フル稼働で、 160mA を消費しています。
結構熱くなります。
バッテリー使用は無理ですね。
ボードの表側と裏側両方とも、放熱をしっかりしないといけません。
ケースに入れる時には要注意です。

出来るだけ直ぐにデータを反映させるために 30秒毎としていますが、この場合は通信トラフィックに影響があるのも問題です。
Google Home で喋った時点をトリガーにしてデータをGET できれば良いのですが、今のところ私の技術では無理です。

また、文字を大きくしたといっても小型ディスプレイですので、大型LED ディスプレイにするのが今後の課題ですね。

意志を伝えるだけならスマホでも可能ですが、このように常時大きい文字の電光掲示板で表示できることには大きな意味があります。

例えば、親の介護最中で外出しているとき、外出先からどうしてもメッセージを伝えたい時があると思います。
でも、親は電話やメールを操作できない。
そういう場合、これを使って、親の目につくところに置いておけば、意志を伝えることができそうな気がします。

こんなことが自分の力である程度自作できる時代がやってきたということは感慨深いですね。
改めて、Google の開発の凄さを肌で感じました。
もちろん、Amazon ECHO でも同じようなことができると思われます。

ということで、この方法を紹介したいと思います。

なお、これはあくまで実験です。
私は基本的に素人なので、動作保証は一切しません。
ただ、動作しない場合はコメント投稿等でご連絡いただければ、空いた時間でできるだけ対処したいと思っております。

スポンサーリンク

準備するもの

Google Home

ESP-WROOM-32 開発ボード

常に Wi-Fi に接続して通信しているので、電源に保護機能が充実したスイッチサイエンスさんの ESPr Developer 32 をお勧めします。

ESPr Developer 32
スイッチサイエンス(Switch Science)

もちろん、Espressif System 純正の ESP32-DevKitC でもOKですが、Amazon.co.jp では今のところ販売しているところがありません。
秋月電子通商さんやマルツパーツさんで購入できます。

OLED SSD1306 I2C モジュール

小型有機EL ディスプレイ ( OLED )で、I2C 通信用の SSD1306 ドライバモジュールです。
SPI用と間違えないようにしてください。

ブレッドボード、ジャンパーワイヤー、USBケーブル、パソコン等

ESPr Developer 32 は組み立てておく

スイッチサイエンスさんの ESPr Developer 32 を使う場合は事前にピンヘッダなどをハンダ付けしておいてください。
以下の記事を参照してみてください。

ESPr Developer 32 ( スイッチサイエンス製 ) を使ってみました

接続する

過去の記事で紹介した、OLED SSD136 I2Cインターフェース用の接続と同じです。
ESPr Developer 32 と ESP32-DevKitC は GPIO番号さえ合っていれば同じです。
ブレッドボード等で接続しておいてください。

続きは次のページです。

コメント

  1. juchang より:

    mgo-tec 様

    大変お世話になっております。
    「センサー値を Google Home に喋らせる実験」を何とかクリアさせて頂き、早速、「音声をテキスト表示させた WiFi 電光掲示板を作ってみた」に挑戦をしております。
    今回テキストには、index.js のみ記載されていますが、package.json はどのように入力したらよろしいでしょうか。
    又、Firebase Realtime Detabase の設定について、もう少し詳しくご説明いただけると幸いです。
    よろしくお願い致します。

  2. juchang より:

    mgo-tec 様

    またまた単純ミスを犯してしまいました。
    Dialogflow の Fulfiliment の URL 欄で、GoogleHome_Dialogflow_Action と入力するのを忘れていました。
    それを修正するとテキスト表示が出るようになりました。
    Database の表示はできていませんが、いろいろ調べながら解決していきたいと思います。
    毎度お騒がせしまして申し訳ありません。
    今後ともご指導の程よろしくお願い致します。

    • mgo-tec mgo-tec より:

      juchangさん

      これからは出来るだけご自分のコードを見直してからご質問していただくようお願いいたします。
      でも、動いて良かったです。

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