白旗製作所

RaXino+RaspberryPiで家の電力見える化

タイトルの通り、家の電力使用状況を見えるようにするため、電力計を作ってみました。

全体の構想としてはこのスライドのものがほとんどそのままです。
RaXino+Raspi 

カレントトランスで分電盤の電流値を検出し、マイコンのA/Dコンバータで読み込んでRaspberryPiでWeb上に可視化します。この方法だと電圧は計測しないので、位相差がわからず計測した電力は有効電力ではなく皮相電力になりますが、まあ大きな差は出ないと思います。
今回は分電盤のうち各部屋に分配された電力も読み取ることにし、6ch用意します。6chもあるのでチャンネルごとの回路を簡素化するために、アナログの回路側はこのページを参考にして作成し、下側半波は読み取らない形をとりました。また、マイコンも相応のチャネル数と処理能力を持つもの、ということで、購入後に少しだけさわって放置していたRaXinoを使います。

RaXinoはRX62Nを積んだマイコンボードで、RXduinoというArduinoライクのライブラリを合わせて使えるものです。RaXinoであればEthernetに繋げるのでこれだけでも良かったのですが、
・わざわざ無線LANコンバータ買ってくるのが面倒だった
・RTCで時刻を刻ませないといけない
・Ethernetにつなげるとは言え高機能なことが出来るわけでもなくPCからのアクセスが面倒
なのでRaXinoで計測したデータを一度RaspberryPiに送って保存し無線で飛ばします。


RaXinoをさわるのが久しぶり過ぎて、まずは環境構築から行いました。
RXduinoライブラリは、現在はFreeRXduinoという名前で無料で提供されています。
使用方法として、GCCでコンパイルする方法と、ルネサスの統合開発環境であるHEWやCS+(旧CubeSuite+)で使えるサンプルプロジェクトが用意されています。最初はGCCでコンパイルをしようとしていたのですが、RaXino基板にmakefileを合わせるとinvectの問題でエラーが出てしまったので、結局CS+をインストールして使いました。

やりたいことは1kHz以上で6chのA/Dコンバータを1サンプルずつして電流の瞬時の大きさを記録し、1秒ごとくらいで実行値(RMS)を計算してRaspberryPiに渡すことです。
モジュールとしては1kHzタイマ、A/Dコンバータ、シリアル通信を使います。タイマ割り込み関数でA/D変換して、データがたまったら1秒ごとにメインループ実行値計算させます。
とりあえず以下のコードがあれば最低限OKです。

コード例

シリアル通信はRX.TXの結線をしないといけないかと思っていたのですが、USB端子のシリアルをRaspberryPiに指すとそのまま認識したので、これで行きます。認識後にポート名をdmesgコマンドで取得します。

Raspberry Piでは、Pythonを使ってシリアル通信でデータ取得し、時刻とともにCSVで保存しておきます。
Pythonでシリアル通信するにはpySerialというライブラリがあれば簡単に使える様なので、早速インストールします。と思ったらpipすらインストールしてなかったので、ついでにpipも入手しておきます。
$ sudo apt-get install python-pip
$ pip install pyserial

シリアルのポート名は/dev/ttyACM0だったので、それを使ってシリアル通信するスクリプトを記述します。

コード例

これで時刻付きCSVが保存できるようになったので、SCPでとってくればいつでも見られるようになりました。

あとは、別個でWebから見えるインターフェースを用意して、当日の電力推移とデータをとってこれるようにしたいなと思っています。とはいえWebの知識があまりないので、まずはpythonでmatplotlibをつかってグラフ描画する感じになりますかね。
また、せっかく電力を計っているので、どの機器がどのくらい電力を消費するか分析し、節電の方策を立てようと思っています。

参考ページ:
FreeRXduino
自作電子小物/簡易電力計/7チャネル版
自作電子小物/簡易電力計/7チャネルGUI版
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!
python/pandas/matplotlibを使ってcsvファイルを読み込んで素敵なグラフを描く方法(Mac/Raspberry Pi)

スポンサーサイト
  1. 2017/07/23(日) 01:01:00|
  2. マイコン
  3. | トラックバック:0
  4. | コメント:0

CubeSuite+とE1エミュレータでRaXinoのLチカ

先日、RaXinoを購入しました。

ルネのマイコンは、大学時代に、
R8C2A、SH7144、SH7216、RX62T、と
結構使ったことがあって、
自宅で触るのに、最近出てきたRaXinoかGR-SAKURAが
欲しいなーなんて思っていました。

ちょうど年末RaXino販売終了のお知らせを見て、
せっかくなのでかじってみようかと、
E1と一緒に購入し、先週届きました。


さて、今まではHEW一本でしたが、
ルネが統合開発環境をCubeSuite+に統一するとのことなので、
CubeSuite+に挑戦して見ることにします。

今回は特電HAL目当てでRaXinoを購入しましたが、
最初からそれ使うのもと思い、
まずはフツーにLチカします。


まずルネ公式よりCubeSuite+をダウンロードして、インストール。
RaXinoSample (0)

起動すると、ややオサレな感じの画面が出てくるので、
早速新規プロジェクト作成。
RaXinoSample (2)

RaXinoに乗ってるRX62Nを選んで作成。
RaXinoSample (3)

サンプルコードが自動で生成されるので、
プロジェクト名.cをちょちょいと書き換えて、
デバッグの設定。
RaXinoSample (6)

メインクロック
エミュレータ
電源供給
だけ設定すればとりあえずおk。
この時点でE1をUSBで接続しないとシリアルナンバーがでません。
RaXinoSample (7)

F6でビルド&デバッグツールへの接続&ダウンロードしてくれます。
正常にダウンロードが終わったら、F5を押すと、、、
DSC_0083.jpg


光ったー!
というわけで、サクッとLチカできました。

いやー楽になりましたね。
CubeSuite+も案外使いやすくて良かった。
なんか画面はeclipseっぽい印象だけど、
これがもうスタンダードになってる気がする。

まあ楽しく開発できそうで良かったです。
では特電HALのライブラリ突っ込みますか。

  1. 2013/01/19(土) 20:24:03|
  2. マイコン
  3. | トラックバック:0
  4. | コメント:0