マイコン一覧

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

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に送信。

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


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