2014年10月3日金曜日

RaspberryPiのha1control daemonの更新

使わない機能を削除したり、新しい機能を追加したりしているうちにコードがかなり汚くなってきてしまいました。少しづつ掃除も兼ねて見なおしているのですが、なかなか進みません。
今年になってからの主な機能的な変更点は以下のとおりです。

・HA2module/RP-1 RIR基板のAVRマイコンFW updateに対応
 AVRマイコンのコードをbootとアプリケーションFWに分離して、アプリの方はXBee経由でupdate出来るようにしました。bootの方はAVR用の書き込み治具で直接書き換える必要がありますが、こちらはupdate時に使用されるだけなので書き換える必要は特にないと思います。ha1control daemonの起動時にconfig fileで指定したファイルのバージョンとHA2module/RP-1 RIR基板のAVRのFWバージョンを比較して新しいものがあればupdateされます。

・HA2module/RP-1 RIR基板の赤外線リモコン受信に対応
  AVRマイコンのFWに赤外線リモコン受信機能を追加して、受信したらコード化してha1control daemonに通知するようにしました。

・HA2moduleのAVR側のADCサポート
 これまでXBeeのADCを使ってきたのですが、電圧範囲が0~1.2Vで分圧しないと使えなかったりするものが多く0~3.3Vの方がいいなと思っていました。AVRマイコンの方のADCはリファレンス電圧を色々選べてHA2moduleでは3.3VにしているのでこちらのADCも使えるようにしてHoneywellのHIH-5030という湿度センサーをつなげるようにしました。

・LEDTape用のコマンド追加(ledコマンド)
 以前書いたLEDTapeを制御できるようにコマンドを追加しています。リモコンやスイッチのセンサーなどのイベントでLEDTapeを点灯させたり出来るようにしています。

・HA2module/RP-1 RIR基板の情報表示コマンド追加(devinfo)
 FW update対応したことで各デバイスのFWのバージョン情報や動作ステータス、機能情報などを見られるコマンドを追加しました。

・リモコン受信イベント対応
 AVRマイコンで赤外線リモコンを受信したらha1control daemonで何かコマンドを実行する機能を追加しました。適当なリモコンコードをに名前をつけて学習させてconfig fileでそのコード名で実行するコマンドを記述することで赤外線リモコン対応でない電動シャッターや玄関の電気錠などを赤外線リモコンで制御することが可能になります。RaspberryPi本体の赤外線受信機能では残念ながらこの機能は動きません。これは現状の赤外線受信機能のPCM受信部の実装がデバイスドライバではなくユーザー空間で実装したことで常に受信状態にしておくと負荷が大きいためです。デバイスドライバでDMACを使った実装に変更すれば出来そうですがHA2moduleがあるので後回しにしています。

・リモコンコードを学習リモコンに登録するために回数指定でリピートする機能追加
 リモコン受信イベントに追加する時に手持ちの赤外線リモコンだと他の機器が動いてしまうので都合が悪い場合、ha1control daemonで管理しているリモコンコードを適当にコピーして編集することで、他の機器が動かない独自のコードを作成できます。このコードを学習リモコンに登録することで色々使えるようになるのですが、学習リモコンは学習するリモコンコードを連続して受けることを想定しているようなので1回だけコードを送ると登録してくれません。そこでリモコンコードを回数指定して送ることが出来る機能を追加しました。

これらに付随してコマンドの構造を変更したりQueue管理のbugを修正したりという地味な部分に時間がかかってしまってます。
まだまだやりたいことが色々あるのですが現状リモコン受信その3と同じものですがここに置いてあります。

0 件のコメント:

コメントを投稿