センサー一覧

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

 ベランダにあらたに作った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に移行したい。


とりあえず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化

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サービスはいつ潰れてもいいように自前の代替の仕組みを用意しとかないと。


AIスピーカーと家電の連携ネタ

 Google Home MiniやAmazon Echo Dotでのホームオートメーション。既製品は結構高価な上、値下がりしてたものも高騰してる感じ。じゃあ自分で作るかと。
 うちの寝室はエアコンとシーリングライトが赤外線リモコン対応。シーリングライトのリモコンは点灯ボタンと消灯ボタンが独立してるタイプ。以前ラズベリーパイのi2sDAC音楽プレイヤーを作った時に、ミニコンポを操作出来るように赤外線リモコンを作っていたからこれの応用で行けるだろうと。部品点数も少ないから、ブレッドボード、できればハンダゴテ握りたいかな。あ、照明リモコンはオンオフが共通ボタンタイプだったとしても、照度センサー付けとけば、今点いてるか消えてるかは判断できるなぁ。このあたりが自作だと出来合いの赤外線リモコンより柔軟性はある。ソフト的にはRESTでオンオフできるインターフェイスを宅内LANに公開しときゃ良いのかな?
 ちっとぐぐったらRaspbery Piなんざ使うまでもなくESP-WROOM-32でやってる例があった。ESP32は2つくらい持ってるからこっちのほうが良さそう。単独でADC使えるし。


雨センサー復帰

 入院中にあったマンションの外壁塗装の所為で取り外して部屋の中に回収してあったXBee雨センサー。電池電圧(単2が二本)も2V切るか切らないかくらいまで落ちてきてたのでメンテナンス。ケースを外して、電池交換。雨が当たるプリント基板部分も取れてたのでビニールテープ等で付け直す。親機との通信が確認できたところでベランダの雨があたる位置へ付け直した。週末の雨で動作確認。


hems基板とりあえず完成

(以下は 2016/10/10の月曜のことですが・・・)

PCA9956BのRGBバーグラフを入れてまずはブレッドボードでテスト。

20161012_01

普通に動作したので、Adafruitのブレッドボードタイプ基板Perma-Protに載せ替えた。

20161012_02

通常のブレッドボードと違ってPerma-Protはセンターの部分が1ピン分短いのだった。左右も63ピンではなく60ピンだけども。

ブレッドボードからブレッドボードタイプの基板への移植なので作業は超楽ちんでした。

次はこいつのケースを3Dプリントするか、プラバンで作るかだな。あと、PCA9956BのRGBバーは少し光り方を変更する予定。今は8個使って250w単位だけど、100w単位にして色で表現したい。0-800は緑系で、801-1600は黄色系で、1601-2400はオレンジ系で、それより上は赤で。うーんやはりBlueのLEDの出番がない(笑)。


HEMS関連ネットへのアップロードもなんとか

 mbedのネット関連のクラスが昔とだいぶ変わってしまっていてコードの修正に時間がかかってしまった。HTTPClientのメンバー関数は減ってるし、TinyHTTP_bはコンパイルできない。
 とりあえずNTPでRTCの時刻をあわせて、ネットにRESTで投稿までできたので先が見えてきた。
 次はブレッドボードから固定基板に移します。温度センサーもつけようかね。
 楽できるように昨夜Adafruitにロングのブレッドボードパターンの基板とか、英字も表示できるLEDとかいくつか発注しておいた。時差があるので、向こうは金曜の朝だったから、即発送されてます。


7セグLEDを導入

20160819_01

 スマートメータのBルート受信機に7セグのLEDを付けました。
 HK16K33をドライバにしたI2C接続のAdafruitのやつ。AdafruitはArduinoとRaspberry piのライブラリしか公開していないので、
mbedのサイトから「HK16K33」で引っかかったコードを導入。LEDのパターンが手持ちのやつとは違ってたり、手持ちのは「:」が3桁目になってる5桁表示だったりで、元のコードを書き換えつつ無事に表示できるようになった。

 次はネットに接続ですね。

 そうそう、今まで使ってた(まだ外してないけど)クランプ式のSanguinoベースの自作の電力計。スマートメータの値とそれほどズレがないのはびっくりした。


BP35A1奮闘続々編

 Arduino Dueのハードシリアルで試してみました。化けました。
デバッグ用の出力が9600bpsで遅すぎて他の処理の足引っ張ってる?
115200bpsに変えたら動作するようになった。でも、たまにBP35A1から化け文字もらって死亡。

 今、BP35A1を9600bpsかつ文字間ウエイトをいれてますが、いっそ取っ払って文字間ウエイト無しの115200bpsで再度mbedでやってみようと思いやってみた。

 すこぶる健康に動いている。返信文が化けて帰ってきて止まってしまうことはあるが行けそうな感じ。なので、やっぱmbed1768でもう少し頑張ります。

 その後、然るべきところにTimerクラスでタイムアウトのロジックを入れたら、近場のイングレスの焼かれたポータルを小1時間修復して帰って来ても無事な模様。このまま明朝の出勤時まで無事だったら、LCD表示やらサーバへのRESTでのデータ送信やらの周辺のコードを追加していきます。


BP35A1と格闘中

 工事のあった週の週末にはBルートのIDとパスワードが届いたので、スマートメータからの読出しのテストをしている。

 最初にPCでpythonのサンプルを試したらサクッととれた。居間からやっててメータボックスの中のスマートメータに対しても通信は問題ないみたい。

 続いて、ESP8266単体でのテスト。コードはここのをベースにSoftwareSerialはesp用のを入れて、さらに参照サイトの様にBP35A1との通信は9600bpsまで落としてみたが、受信欠落してしまう。
ESP8266でできると小さいし、無線LANで直RESTでデータ送信もできるので良いのだが。BP35A1とはソフトウエアシリアルではなくハードシリアルでつなげばいけそうではあるが。

 うって変わって、mbed1768でのテストに変更。ソースはESP8266の時にいただいてきたのをベースにmbedに合うように修正。mbedですらも、標準Serialだと受信欠落する。デバッグ用にPCともつないでいるからか。バッファリングしないとだめだぁとMODSERIALに変えてみた。したら、欠落することなくスマートメータとコネクトまではできるようになった。しかしそこから進まない。
 どうやら、ECHONET Liteの電文に0x00があるのがバッファリングするMODSERIALだとダメ臭い。MODSERIALはpc側だけにして、BP35A1とはRawSerialにしてみたら、電文がputcできるようになって、無事にワットが受信できるようにはなった。しかし、何度かループさせてると、受信データにゴミがはいることがあり止まる。

 だいぶ元のコードがやってる事がわかってきたので、シリアルのライブラリが便利なArduino系のESP8266単体に戻してハードシリアルでテストしたいと思う。これでダメだったら、Arduino Due出してくるかね。