mbedのネット関連のクラスが昔とだいぶ変わってしまっていてコードの修正に時間がかかってしまった。HTTPClientのメンバー関数は減ってるし、TinyHTTP_bはコンパイルできない。
とりあえずNTPでRTCの時刻をあわせて、ネットにRESTで投稿までできたので先が見えてきた。
次はブレッドボードから固定基板に移します。温度センサーもつけようかね。
楽できるように昨夜Adafruitにロングのブレッドボードパターンの基板とか、英字も表示できるLEDとかいくつか発注しておいた。時差があるので、向こうは金曜の朝だったから、即発送されてます。
「2016年08月」一覧
7セグLEDを導入
スマートメータのBルート受信機に7セグのLEDを付けました。
HK16K33をドライバにしたI2C接続のAdafruitのやつ。AdafruitはArduinoとRaspberry piのライブラリしか公開していないので、
mbedのサイトから「HK16K33」で引っかかったコードを導入。LEDのパターンが手持ちのやつとは違ってたり、手持ちのは「:」が3桁目になってる5桁表示だったりで、元のコードを書き換えつつ無事に表示できるようになった。
次はネットに接続ですね。
そうそう、今まで使ってた(まだ外してないけど)クランプ式のSanguinoベースの自作の電力計。スマートメータの値とそれほどズレがないのはびっくりした。
mbed1768版HEMSその後
今朝起きた時も無事に10秒おきのデータ取得が動いていた。
今日は休日当番なのでそのまま出勤。
仕事を終わって帰宅してもまだ無事に動いている。
ということでスマートメータとの通信部分はほぼこれで良いでしょう。実運用時は1分に1回か5分に1回程度のデータ取得になりますし。
続いて現在値表示部を検討。7セグのLEDで良いかなと思いつつ、ニキシー管はどうだ?と相場を調べたら。まだ高いわな。eBayとか当たれば違うんかな。汎用のドライバ基板&ソフト書くのもめんどくさい。やっぱ7セグLEDで行こう。そして死蔵品のフルカラードットマトリクスLEDと連携するのも良いかな。
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出してくるかね。