電子おもちゃ達ARDUINO2018-12-11CONTACTMENU雨降りロボット雨の降り始めを検出して、メールを送信するロボット雨降りロボット。言っても、雨を降らしたり、雨の中を走り回るロボットではありません。雨の降り始め(水滴)を検出して、Wi-Fiネットワークを通して「雨が降り始めたよ〜」と、メールを送信するだけのものだ。メールサーバはインターネット上のものを使っているので、Wi-Fi自体はインターネットに繋がっている必要がある。洗濯物を外に干して、家の中で仕事したり本を読んだりしているのだが、天気の怪しい時には時々外を覗かないと心配だ。別のことに熱中していると、洗濯物のことを忘れてしまうこともある。時には少し家を離れることもあったりする。そんな時に、洗濯物と一緒にこのロボットを屋外に出しておくのだ。すれば雨が降り出した時に、メールで知らせてくれるので安心だ。メールはpush通信が可能なものでないと、逆に時々メールを確認しなくてはならず、かえって鬱陶しい。IOSやMacのユーザならiCloudのメールを受信先にして、メールの設定を「PUSH」にしておくだけなので簡単だ。Gmailもプッシュに対応している様だが、僕は使っていないので良く分かりません(^_^;今回は、設置場所に電源が無いので、バッテリーで運用しなくてはならないのが課題だった。ESPにはスリープモードがあって、消費電力を減らすことができるようになっている。雨が降っていない時はスリープしていて、雨(DO)でESPを目覚めさせるように考えた。ESPは小型で機能も高く便利なICだが、消費電力の大きいことが頭痛のタネだった。低消費電力のスリープモードもあるのだ。スリープモードには"Modem-Sleep""Light-Sleep""Deep-Sleep"の3つのモードがある。このうち、Deep-Sleepモードはデータシートによると10μAと驚異的なのだが、復帰はリセット状態からになるので、なかなか使いにくい。今回は、雨を待っている間、Light-Sleepモードになるようにして見た。データシートではこの時900μAとなっている。実際に作成して、消費電流を測ってみたところ、次の様になっていた。Wi-Fi接続中:90mA〜70mA(実際には200mAを越える時期もあるそうだが、デジタルテスターでは追従しないので、この程度の値が表示された)接続済み・メール送信中など:30mA〜20mALight-Sleep中:3mA〜2mA(この状態ならバッテリーは数日は楽勝だと思われる。(今回使用したバッテリー、2,800mAHと書いてあるので、それが本当なら「900時間強=1ヶ月強」と言うことになるが、ネット上のバッテリーの評価では実質1,000mAHも無いとか。それでも数日は十分動作することになる。)その後実際に動作させてみたところ、3日程で3.0Vを切るところまでダウンした。雨降りロボットは1日以上動作させることはあり得ないので、取りあえず良いことにしたが、理論値に比べてあまりにも短い。この当たりはまた時間を見てテストをしてみたいと思っている。スタート4.07V直後からLight-Sleep24時間後3.92V48時間後3.75V60時間後3.0V直前に1回起動(リセットが掛かったか?)※)SMTPサーバの接続についてSMTPサーバーはport25番だった。SSL))とか、587(STARTTLS)を使って、認証と暗号化が必須になりつつある。SSLなどの暗号化はちょっとArduinoには重すぎるのか、ネット上を見渡したところそのようなライブラリは見つからなかった。雨降りロボットは25番ポートで認証無し・平文でメールを送っている。今後セキュリティ対策が必要になれば、AWSで送るとか、SMTP2GOを経由するとか考える必要もあるかと思う。表示器は緑・オレンジのLED1つだけなので、外から見えるのはRaindropセンサー基板のみ完成した内部の様子。電源はAA(単3)電池とほぼ同サイズの14500Li-Poバッテリー。直径14mm長さ50mmなので、「143500」と言うそうだ。空中配線したレギュレーターや心配な配線部分はホットボンドで固定してしまった。電源スイッチと3.3Vレギュレータ回り。掛からない様、ケースの中に引き込んである。雨が心配なら、ここにカバーを取り付ける積もりではある。バッテリーチェックの様子。電圧計を電池に押しボタンスイッチで接続するだけ。メイン基板のハンダ面。片面基板で作るので、どうしても数本のジャンパーワイヤーが必要になる。(今回は訂正の後では無い(^_^;)メイン基板の部品面。ESP以外にはリセットとモード切替SW(IO0)とユニットの接続コネクタだけ。メイン基板の上には、Raindrop検出用のコンパレータ基板が乗る。module”と言うセンサー基板とオペアンプのコンパレーターをセットにしたものを使用。これをESP-WROOM-02(以下ESP)に接続してセンサーからのデジタル出力を『雨』と、判断するのだ。ESPのマニュアルではGP-IOのピンをデジタル入力に割り付け、そこが"LOW"になるとスリープから復帰すると書いてある。ここで、しばらくハマってしまった。バラックセットではESPのピンをGNDに当てると、確かに割り込みから復帰することが分かった。」と、良い気になった。プロトタイプの回路を作り、Rainsensorを繋いで、GP-IOのDIをLOWにしても割り込みから復帰しないのだ。(勿論Rainsensorの出力は「雨検出でHIGH」なので、インバーターを繋いでテストした。)ネット上を色々見ていたら、どうもLOWになったあと、再びHIGHにする必要があるようだと分かった。GP-IOのDIからの復帰タイミングは、LOWになった信号の立ち上がりになっているようなのだった。最初バラックセットで実験した時は、単に線の端をGNDに触れさせていたので、チャタリングやノイズで信号がバタ付いて立ち上がりのエッジが出た様だ。結局、トランジスターで微分回路をドライブしてワンショット・パルスを出力することにした。ついでにその後にもう1段トランジスターを追加して極性を反転させた。電源回りのあれこれ当初はユニバーサル基板に実装して済ませるつもりだったが、予想外に配線が増えたので、PWBを起こすことにした。最初からそのつもりなら、ESPもパターンを作って基板に直接ハンダ付けすれば良かったのだが、あの狭いピンピッチに苦労させられた悪い記憶があるので今回はブレークアウトボードを用意してしまった。このブレークアウトボードをメインのボードに実装することにした。電源は最初はNi-MHの予定だった。1.2Vx3に逆流防止用のダイオードを付けると3.4Vになるので、そのまま全回路をドライブする予定だった。部品を並べてみると電池の大きさが気になりだした。そこで、途中から14500のLi-Po電池に設計変更。その時にはPCBが出来上がっていた。そこで、4V→3.3Vのレギュレータを急遽追加した。この部分はIC(NJM2845DL-33)とコンデンサー2個(0.1uFと47uF)を強引に空中配線で実装した。全てSMDなので、丁度上手くICの足の上に載せることができた。電流も400uAでローノイズ・低飽和型の優秀なレギュレータだ。出力電流も800mAと、沢山流せて安心なので僕は良く使わせて貰っている。ついでにESPは、ToutにA/Dコンバーターが付いていて電源電圧の監視もできる。そこで電池の電圧チェックもソフトでやるつもりだった。表示器をどうしようとか考えていたら超小型の2線式電圧計が手元にあることに気がついた。結局電池の電圧監視は、完全手動と言うことで押しボタンスイッチとこの電圧計で誤魔化してしまった。参考までにハードウェア・ソフトウェアの情報を。これらは僕の覚えであり、正確に改版を反映していない可能性があります。この通り作って動かないからと、怒らないで欲しい。Techno-Square。