ベランダセンサーの値が変

16:40からベランダのセンサーの値がおかしい。気温なんかマイナス135.08度だし、UV指数は655.35。どれも固定値で変動はなし。ただ、CDSをつかった明るさセンサーは通常の動作を記録していた。他のセンサーとの違いはCDSは分圧した電圧をADCで計測している。他のセンサーは全部i2cバス接続。んーi2cでなんか起こったか?調べる手立てもないので(ロッジックアナライザは退院後の掃除で捨てた)リセットして復帰させた。あまりに変な値だったら、自己リセットするようにコードを書き換えたらいいかな。

センサ関連だいたい移行

 雨センサを移行したので今までの arduino,mbedの環境を停止し片付けた。雨センサのXBeeからの情報はraspberry piにUSB-UARTアダプタでつないだXBeeで受信してる。受信ソフトはpython3 (3.6)で書いて。XBeeのライブラリはxbee-python。digi謹製のdigi-xbeeと両方試したが前者の方がほしい情報に早く行きついた。余裕あるときにdigi-xbee用に書き換えてもよい。
 っていうより、雨なのに雨センサが感知してないです。コード断線したかな、チェックしよう。センサーの電池の電圧はXBeeのremote_at(%V)でモニターできてます。センサー側がperiodic sleepで寝てるので、雨データを送ってきた時に寝る前にすかさずremote_atを送り込んで返してもらってます。
 さて、ベランダのセンサーの値はココのperconaとambientにおくってるけど、piにも置いておこうとsqliteを検討。そのデータをすぐみられるように、piにAmazonでタイムセールになってた5インチモニタをつけた。静電容量で無く感圧だがタッチパネル。で、表示するアプリの環境はErectronを考えてる。となると、センサーか読みとってここやambientに送ってる部分やXBeeまわりを node.jsに変えたくなるなぁ。どうも pythonの閉じがないブロックに慣れない。


わかりにくいけど、やっぱ切れてました。センサー接続部が。まとめ買いした基板のあまりがあったので、線をはんだ付けして取り替えました。線をよじってつなげるだけでも片手だと大変です。なので右手も参加してもらうんだけど手関節(=手首)が自由に動かないもんだから方向が合わないんです。

風が強いので工作ひきこもり

 ベランダにあらたに作ったLuxセンサが滑らかな値にならないので、CDSでの分圧のADC入力を追加した。ESP8266の時は0-1V測定で使いづらかったADCもESP32では減衰器が入って0-3.6Vで測れるのでgood。1個センサーがふえるとベランダハード&ソフト・中継用mbedとRaspberry Pi・AWSのDBと変更をかける必要がある。
 ベランダのハード&ソフトを変えるので、雨除けジップロックも横向きに変更。雨が電源のUSBケーブルを伝ってESP32まで届かないように。
 つづいて、雨センサーの中継の変更。PiにコーディネータのXBeeつないで対応する。この実験中に雨センサのケースを破壊してしまった。紫外線でもろくなってた。同じプラケースを宅内で捜索してなんとか発見。こいつの中も結露とかの所為かXBeeの金属部分に錆がういていた。で、Xbee-Python、まだ理解しきれてない。ArduinoとmbedはC/C++だったから楽だったけど、慣れれば何とかなるでしょう。今週末までにPythonに移行したい。

ESP32 追加購入

AmazonでESP32モジュールを1つ買いました。「HiLetgo ESP32 ESP-32S NodeMCU開発ボード」。
ESP32-DEV-Cよりも幅が1ピッチ狭くて、ブレッドボードでも両端にジャンパーピンをさせます。
品名にあるように、元々「NodeMCU」が焼いてあったけれど、普通にArduinoIDEでArduinoのスケッチが焼けました。ピン配置は19ピン列の38ピンで並びもESP32-DEV-Cと同じみたいです。もう少し買っておくか。

とりあえずambient

センサー値をjsonで吐くとこまでは作っておいたので、raspberry piにてpythonでちょろっと。

headers = {“content-type”: “application/json”}
r = requests.get(url, headers=headers)
json_dict = r.json()

こんな感じで取ってきて

am_dict[‘d1’] = format(json_dict[‘BME280’][‘Press’][‘value’])

am = ambient.Ambient(99999, ‘1234567890’)
ret = am.send(am_dict)

こんな感じでambientに送信。

これでグラフで見られます。
いやー楽チンすぎる。


(まだデータがすくないからギザギザですが)

ESP32 OTA

家に帰ってからOTAを試しました。実機は昨夜ジップロックに入れてベランダに貼り付けてしまったので、もう一つのESP32にて。i2cデバイスがADT7410とLCDの状態で。
いざ、コンパイル。ってあっけないほど簡単にwifiでプログラムのアップロード完了。でも、シリアルはあくまでシリアルに出力されるだけ。Serial.print()のデバッグ文も無線の向こうのマイコン側で出力される。
ってわけで、いまいち使い勝手がわるいかな。

ベランダセンサーのESP32化

arduino互換機とXBeeでやってたベランダのセンサー。去年のマンションの外壁再塗装と入院でいまは部屋の中。子機の雨センサーはベランダに復帰させたのでこれだけが使える状態。
XBeeも低消費電力でスタックも軽いのだけど、違うこともやってみようと作り変え。

wifiで勝手知ったるjsonをrestで。iotらしいmqtt化はそのうち。右手がまだハンダごてをあつかえない為、ハード組み立てはブレッドボードで。センサーはi2cに統一。

昨日の朝はESP8266でやっていたのだが、昼にESP32-DEVCでも行けるんじゃないかと変更。こっちのほうがリソースに余裕あるい青歯にすることも出来る。その後ベランダで雨除けのケーシングする際にもう少し小さい方がいいなとブレッドボードを変更。ひさびさにFritzingをいじったがCAD系で左手でオブジェクトをクリックするのがきつくて、つい違うものクリックしちゃうよ(笑)。

最初のesp8266版の抜け殻


ESP32化してみた


ブレッドボードを小さいものに変更

LCDはデバッグ確認用なので、ソフトウエアからも取り外せるようにdipswで対応。i2c的には出力オンリーなので取り外してソフトはほったらかしでも問題はなさそうだけど。

とりあえず、
 ・センサーから情報読み取り
 ・読み取った値のweb表示
 ・読み取った値のjson化
 は出来たので。ベランダに設置して部屋の中のraspberry piから情報取得やグラフ系iot向けサービスと連携させていく。でもなぁpachubeの事もあるのでwebサービスはいつ潰れてもいいように自前の代替の仕組みを用意しとかないと。

音声による赤外線リモコンで明りの制御

結局、pi zero wとRPZ-IR-Sensor phatで作成。ESP-IRの赤外線LEDは指向性が強くて使いづらいのでやめた(特定の機器の赤外線受光部近くで使うには良いが)。スマートスピーカとの連携はIFTTTを使用してwebhooksで受信。外部公開するので、webサーバまわりはなるべく不要な機能を消して、SSL(オレオレ証明)と認証は実装した。このphatはBME280(気圧、湿度、温度センサー)、TLS2561(照度センサー)も載ってるのでこれらも利用する予定。

で、居間の自分の机の上で疎通テストをしてたら天井が「ピッ」と鳴る。寝室のシーリングライトのリモコンコマンドなのだが(笑)。どうやら居間のシーリングライトの1つが寝室と同じリモコン対応機だった模様。結婚前のツレが持ってた物でリモコンもなくなってるから気づかなかった。寝室と同じコードでいける。

というわけでpi zero wをもう1セット購入した。居間は半分テスト用半分実用程度。

音声コマンドはショートカット化して、「寝室 つけて|消して|豆球」でOK。場所の特定はどこのHomeに言ったかで判断できるといいんだが。スマートホーム機能でなくIFTTT連携でやってるんじゃ難しいか。
Google AIY Voice Kitもゲットしたので、Google系のスピーカが3つです。Amazon系は招待状が全然来ないからdot1台だけ。どうなってるんだ?>招待状。

片手ではんだ付け

raspberry pi zero wのhatにピンヘッダをつけるべく、片麻痺になってから初めてのはんだ付けをした。

基板はテーブルに置いたままで、左手にはんだごて、右手にハンダの体勢。で、やってみると右手のハンダをうまく当てられない。仕方なしにコテ先にハンダをのせてからはんだ付けしたい部分にあてる。本来は、コテ先で付ける部分を熱して、そこにハンダを点けて溶かすんだが。で、ハンダがのったコテ先が震える震える。短く持って、前腕をテーブルの端に当てて安定させる。いやー難しい。数カ所ハンダブリッジが出来てしまったが、溶かし直してなんとか修正。40ピン全部はやってられないので、信号が必要なピンと両端の4ピン、4ピンをはんだ付けして完了。

はてさて動作確認は一発でOKでした。左手の精度と支持力をあげれば、結構はんだ付けできそう。2.54mmピッチ以上に限るけどね。