Translate

ページ

2014年12月21日日曜日

自宅の温度測定(簡潔にまとめ)

各種温度センサーのデータを、
定期的にRasberryPi B+で取得し、
Webページアップロードすることで、
外出先から確認できるようにして運用しています。(→temperature at home)

温度センサーユニット

2014/12/20の状態。研究中のため、5,6は仮設です。
  1. 屋外:1W340D接続の温湿度センサ
  2. リビングルーム:1W340D接続の温湿度センサ
  3. 寝室1:HRM1017 Breakout + 温度センサ(TMP102)
    (eneloop 単3×2駆動。2.5ヶ月ほど持ちます。)
  4. 寝室2:HRM1017 breakout + 温湿度センサ(AM2321) / オンチップ温度センサ
  5. リビングPC周辺1:mbed HRM1017 + 温度センサ(TMP102) / オンチップ温度センサ
  6. リビングPC周辺2: BLE nano オンチップ温度センサ

データ収集+アップロード
  • Rasberry Pi B+ + BLEドングル + Wifiドングル

データ収集+アップロードのスクリプトは、人様に紹介できるレベルのものではないので、現在非公開です。 

2014年12月20日土曜日

自宅の温湿度測定(今年:2014年に作ったもの)

自宅の温度測定(昔:2012年ごろ作ったもの)の続きです。

2014年の2月頃からBLEに興味を持ち、いろいろ買いました。
 テレビリモコン、(息子の)家の鍵、Pasmoなど、連日のように屋内捜索していたのですが、短時間で見つかるようになりました。 また、外出時に子供の持ち物に付けておくと、イベント会場等で別行動しても、近く(数10m以内)にいるかどうかが分かるので、捜索が楽になります。MFT2014でも役立ちました。 
 このアプリは、デバイスで測定した温度も送ってくるので、プロトコル解析すれば温度計として使えるかもと、期待したのですが、結局難しくて断念。温度センサーも誤差が大きく。今となってみれば、nrf51822のオンチップの温度センサーを使っていたためだと分かりました。 
  • ×TI sensortag : 技適も確か通っている。ワイヤレスの温度センサーとして期待しましたが、すぐに電源切れてしまうので、常駐のセンサーとしては使えませんでした。
  • CC2540 USB Evaluation Module Kit + SmartRF Protocol Packet Sniffer : 前述のStick'n findのパケット分析用に・・・と思ったのですが、結局ほとんど使わずじまい。今後に期待します。
と何度か、調べては、買っては、諦めるを繰り返していました。

そこへ、mbed HRM1017が登場しました。しかも、温度センサーと組み合わせて使うサンプルが最初から紹介されています。

これは使えるかもと思い、購入したところ、うまく使えそうであることが分かりました。

さらに、D510moをRasberry Pi B+ (BLEドングル拡張済み)に置き換えました。

というわけで、自宅の温湿度測定は現在次のようなシステムになっています。

温度センサーユニット

2014/12/20の状態。研究中のため、5,6は仮設です。
  1. 屋外:1W340D接続の温湿度センサ
  2. リビングルーム:1W340D接続の温湿度センサ
  3. 寝室1:HRM1017 Breakout + 温度センサ(TMP102)
    (eneloop 単3×2駆動。2.5ヶ月ほど持ちます。)
  4. 寝室2:HRM1017 breakout + 温湿度センサ(AM2321) / オンチップ温度センサ
  5. リビングPC周辺1:mbed HRM1017 + 温度センサ(TMP102) / オンチップ温度センサ
  6. リビングPC周辺2: BLE nano オンチップ温度センサ

データ収集+アップロード
  • Raspberry Pi B+ + BLEドングル + Wifiドングル
データ収集+アップロードのスクリプトは、人様に紹介できるレベルのものではないので、現在非公開です。 
D510MO時代は、省電力のためhybernationして1時間に一度の測定でしたが、Raspberry Pi B+になってから常時運転、10分に一度の測定です。

現在使っているページ
temperature at home

自宅の温度測定(昔:2012年ごろ作ったもの)

毎年、お盆休みのころになると、何かしたくなってきます。
2011年から省エネを意識し始めたので、外出先から自宅の室温、湿度を確認出来る様にしようと思い立ちました。

最初に購入したのがPC sensor社の1W340Dという製品
 

各センサーはI2C的なI/Fで動くようになっていますが、全センサーが1つのI2Cバスにつながっています。しょぼいWindows用アプリが添付されており、独自のプロトコルでLAN経由で通信しデータを収集することができます。
 



 これとLinuxをインストールしたIntel D510MOを組みあわせ
適当にまとめてWebにアップロードするような仕組みを作りました。

ちなみに、D510moは通常のPCよりはマシだとはいえ、それなりに電気を消費します。
そこで、室温測定は一時間に一度、毎時0分に温湿度を測定し、Webにアップロードし、その後hybernationさせ、タイマーで58分頃に自動復帰させていました。

このやり方は、大規模に展開するには無理がありました。
  • センサーケーブルの延長できる範囲でしか測定できない
  • 1つのセンサーのケーブルの長さが長くなりすぎると、使えるセンサーの数が減ってしまう。(最終的にはエアコンのパイプに沿わせた屋外センサと屋内センサの2つだけになってしまいました。)
  • I2Cを使うとしてもLAN接続するにしても、結局家中の温湿度を測定するためには、ケーブルを這わせ回すしかありません。
結論としては、以下まで考えたのち、次のステップを踏み出せずにいました。
  • 無線を使う必要がある。
  • 海外に使えそうな製品があるが、技適の関係で使用できない。
  • Wifiを使う製品は、価格や消費電力の関係から、二の足を踏んでいた。
  • 当時は電子工作的なアプローチは考えていなかった。



2014年12月13日土曜日

mbed HRM1017 にmbedではなく nRF51 SDKでコンパイルしたプログラムを送り込む実験

mbed HRM1017やHRM1017 breakoutでmbedではなく、nRF51 SDKでコンパイルしたfirmwareを送り込めました。
    • このhowtoは、サンプルプログラム nrf51822\Board\nrf6310\s110\ble_app_hrsを使います。
  • まず、BLEnanoでうまく動くことを確認。(ここまで、当たり前の話ですが、各ツールのバージョンの違いなどで、パスが変わるので適宜対応する必要がありました。)

  • そのままのhexファイルをmbed HRM1017に送り込んでも、案の定動きませんでした。
  • そこで、当該サンプルプログラムのmain.cを一部以下のように変更しました。
    (内部クロック使用に変更。 mbedでmbed HRM1017向けにコンパイルする場合に当初毎回手で直していたところですね。)
    • 変更前
      
      
          // Initialize the SoftDevice handler module.
          SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);
      
      
    • 変更後
      
      
          // Initialize the SoftDevice handler module.
          // SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);
          SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);
      
      
      

  • このように変更してから再度コンパイル、mergehexしたものをmbed HRM1017に送り込んだら、うまく動きました。