昨夏にスマートリモコン化したエアコンの改良版です。
s51517765.hatenadiary.jp
昨年のプロダクトの課題は、ボタンが一種類しか動作できないため、柔軟性がなかったことです。
今年は、リモコンのボタンを「電源off/on」「温度設定up」「温度設定down」を使えるようにしました。
回路
まずは回路です。昨年はトランジスタをつかったためうまくいきませんでした。今年は、フォトカプラを使うことで複数のボタンが制御可能になりました。
フォトカプラとは、得られる機能としてはトランジスタ(NPN)にとても似ていますが、制御入力と制御出力が電気的に絶縁されている、ということが大きく異なります。
今回もいつもおなじみSODIALのパーツを使用しました。Amazonで入手出来て安くてよいです。
フォトカプラ,SODIAL(R) 10xPCBボード スルーホール PC817C PC817 EL817 817CフォトカプラのDIP-4
- 出版社/メーカー: SODIAL
- メディア: その他
- この商品を含むブログを見る
ただしDataSheetが見つけられません。Amazonのレヴューを参考にSHARPの似た品名のものを参考にしました。
DataSheetは秋月の商品サイトが便利で、たまにしか買わないのにお世話になっております…
https://akizukidenshi.com/download/PC817C.pdf
このような足のたくさんある部品は、○印があるところが1番pinで通常は千鳥ではなく周回するようにpinの番号になっています。だいたいの部品がそうなっているはずです。
フォトカプラとは、回路図にあるようにLEDとフォトセンサを組み合わせたものです。
信号入力側はこのLEDのために入力電圧を制限する必要があります。
SHARPのものと同等であるとすれば、IFは20mAなのでラズパイの3.3Vで動作させるなら、165Ω以上の抵抗を入れる必要があります。
私は手元にたくさんあった500Ωにしました。(一般には15%ぐらいのマージンを取って200Ωぐらいでよいです。)
その他は昨年のものと同じ要領です。
プログラム
昨年からの変更点は、リアルタイムで動作させる機能を追加しました。「now」や「今」といったキーワードで動作させます。
@listen_to(u'(now|今|すぐ)+') @respond_to(u'(now|今|すぐ)+') def timerReset(message, something): try: text = message.body['text'] if "on" in text or "off" in text or "power" in text: airconSet.aircon_power() message.reply("電源を操作しました。") elif "up" in text or "上" in text: airconSet.aircon_temp_set_up(1) message.reply("温度設定を +1 しました。") elif "down" in text or "下" in text: airconSet.aircon_temp_set_down(1) message.reply("温度設定を -1 しました。") except Exception as e: print(e) message.reply("指示を解釈できませんでした。")
このとき「now up」とすると、スケジュール機能も同時に動作してしまうので、こちらも変更しました。
数字が入っているときはスケジュールとして認識させたいので起動条件を変更しました。
「up」or「down」と数字が入っているときはこちらが起動します。\s?
がスペース(省略可能)で\d
が整数を表す正規表現です。
@listen_to(u'(上|up|下|down)\s?\d') # up +スペース+数字 スペースは省略可能 @respond_to(u'(上|up|下|down)\s?\d') def OrderUpDown(message, something): ----
まとめ
フォトカプラを使ってリモコン(エアコン)ハックを高機能化しました。最初からフォトカプラに気づいていれば…というところではありますが。
github.com
国内外 各メーカー共通1000種対応 エアコン用ユニバーサルマルチリモコン 自動検索機能搭載
- 出版社/メーカー: ショップF
- メディア:
- この商品を含むブログを見る