SSブログ

ESP32からGoogleスプレッドシートへのデータ送信ソフト

 ESP32がセンサー等から取得したデータをGoogle Driveにあるスプレッドシートに送信して記入するサンプルソフトを作りました。
構成はデュアルタスクで、Task1(core 1)ではセンサー等からのデータ取得擬似処理(1秒おき)、Task2(core 0)ではデータをGoogle Spreadsheetへ送信(10秒おき)する処理を行っています。
送信データは日付時間とデータ10個ですが、データ数については必要に応じて加減すれば良いでしょう。(この場合SpreadsheetのApps ScriptとESP32の両方のコード変更が必要ですが難しい内容ではありません。Apps Script変更後は「新しいデプロイ」を行って更新されたウェブアプリURLでESP32スケッチを変更する必要があります。)

諸設定方法とESP32ソフトウェアは下記からダウンロードできます。
スプレッドシート作成とESP32プログラム編集方法
ESP32ソフトウェア

 今までSDカードに保存したデータをちょくちょく取り出していましたが、Google Spreadsheetにあるとどこからでも簡単に見られたりダウンロード出来て結構便利になりました。

 余談ですが「各種動体検知装置に対応した統合型親機」のソフトMODS_ESP32_GLCD.inoにGoogle Spreadsheetへの送信機能を追加したところ、ESP32_MailClient.hライブラリーを使ったメール送信プログラム部とHTTPClient.hライブラリーを使ったGoogle Spreadsheetへの送信プログラム部があると不具合が生じ、その不具合の内容がライブラリーをincludeする順番によって異なる事がありました。
HTTPClient.hを先にincludeするとGoogle Spreadsheetへの送信はできますがメール送信できず、後にincludeするとGuru Meditation Error: Core 0 panic'ed (InstrFetchProhibited)のエラーでリブートを繰り返します。
詳しい事は分かりませんが、両方を使えるようにするのは難しそうなので諦めました。


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

TWELITE標準アプリを使った簡易リモコン

 MONO TWELITE標準アプリを使ったシステムで、親機のある設定項目を子機モードのリモコンから信号を送る度にトグルで変え且つ親機からは現在の設定状態をリモコンに送り返してLED表示する仕様のものを作りました。
これは「各種動体検知装置に対応した統合型親機」で親機が検知時にメールやLINEで通知する機能のON/OFFをリモコンを使って行うために作ったものですが、方法は他の用途にも応用できるかもしれないので紹介します。

図1
TWELITEリモコン.jpg


 図1に「各種動体検知装置に対応した統合型親機」の検知通知機能のON/OFF用に作ったリモコン回路を示します。 写真はこちら

 TWELITEを標準アプリで使うと定期通信で電流消費をするためコイン電池電源では寿命が短くなってしまうので、送信時のみ電源を供給するような回路にしました。
スイッチを押すと一定時間(1.5秒程度) AO3401がONしてTWELITEに電源を供給します。AO3401のONから150mS程度*して2N7002がONしてDI1をLowにすると、TWELITEは検出信号を親機に送ると同時に親機から受信した4bitデータを反転してDO1~DO4に出力します。
*TWELITEは電源が立ち上がるとすぐに初回の定期通信が始まり100mS程度かかるので、DI1のLowにするタイミングは電源立ち上がりから150mS程度経過後になるようにしてあります。

 親機のTWELITEは改造した標準アプリを書き込んで使います。(後述)
正規の標準アプリでは 親機は間欠1秒受信モードの子機から信号を受信すると即座に4ビットのデータ(親機 DO1~DO4)を送り返すようになっていますが、改造標準アプリではこの送り返すデータ用変数を別途作ってその値(D1~D4)をUARTで設定できるようにしてあります。

 親機は検知通知モードがONの時は D4:0, D2:1、OFFの時はD4:1, D2:0をESP32からUART経由で設定しています。
・「各種動体検知装置に対応した統合型親機」ではD1, D3はセンサー子機の電源制御用に使用しているのでリモコン用にはD2, D4を使用しました。
・ON/OFFの状態を(D4,D2) = (0,1) / (1,0)と2bitで扱っているのはリモコンのLED点灯を自然にするためで、LEDの一端をVccまたはGNDに接続する方法では電源遷移時に不要な発光が起きるので好ましくありません。

今親機が検知通知モードONの時にリモコン信号を受信すると即座にD4:0, D2:1を含むデータをリモコンに送り返し(リモコンでは反転してDO4:1, DO2:0になる)、その後ESP32はD4:1, D2:0に設定を変え検知通知モードをOFFにする内部処理を行います。
検知通知モードがOFFの時にリモコン信号を受信すると即座にD4:1, D2:0を含むデータがリモコンに送り返され(リモコンでは反転してDO4:0, DO2:1になる)、その後ESP32はD4:0, D2:1に設定を変え検知通知モードをONにする内部処理を行います。
すなわちリモコンのDO状態により親機の検知通知モードの状態は次のようになり、それに応じたLEDが短く点灯します。
DO4:0, DO2:1 => 検知通知モード ON  赤LED点灯
DO4:1, DO2:0 => 検知通知モード OFF  緑LED点灯


TWELITEの設定

 親機のTWELITEは改造した標準アプリに書き替えます。(TWELITE STAGE使用)
こちらの資料に基づいてソースコードを変更してコンパイルと書き込みを行うか、こちらのフォルダー内のBINファイルを用いて書き込むかしてください。
 
 リモコンのTWELITEはインターラクティブモードで定期通信間隔を10,000mSに変更します。(通電期間の1,500mS以上であればよいと思いますが念のため最大にしておく。)

 TWELITEは複数のチャンネルを使用できるようになっていますが、経験的に 子機の数が多いと1チャンネルで使用する場合より信号の取りこぼしが起きやすいように思います。 
また、親機が複数存在すると子機(リモコン)に送り返されるデータが異なったりする場合があり動作に支障を来すことがあります。
このような事からチャンネルは1チャンネルのみ指定し且つ混信しないようデフォルトチャンネルと異なる番号に設定するのが良いと思います。(インターラクティブモードで行う)


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。