こんにちは!たらこです。
我が家の寝室のシーリングライトはリモコンで消す事ができるので非常に便利なのでますがウトウトしている時に限ってリモコンが神隠しにあってしまい、探している間に目が覚めてしまう事が多々ありました。
今の世の中は便利な物でSwitchBotから出ているswitchbot hub miniというスマホから操作できるIoT機器がありこれはいい!嬉々として購入しました。
IoTというだけあってスマホからインターネット経由でhub miniに信号をだしているので、回線が切れてしまうとただの置物となってしまいます。何よりスマホで操作するのでウトウトしている時スマホを触るとスマホのバックライトで目が覚めてしまう思わぬ弊害があったため今ではただの置き物となっしまいました。
そこでネットを介さず寝落ちしそうな状態でも目を閉じていても操作できる物理キーのリモコンがあったらいいなあと思い調べてみたのですが、私が理想とするリモコンはありませんでした。そうなってくるといっそのこと自分に一番合うリモコンを作ってしまえば手っ取り早いのでは?という結論に至ったわけです。
仮に家電製品が入れ替わって使用するリモコンが変わったとしてもハードさえ作ってしまえばソフトを書きかえれば半永久的にオリジナルのリモコンを使うことができる夢のようなリモコンとなります。
快楽へいざなう魔法のとかほざいていますけど要は自分仕様のリモコンを作ってしまおうということです。
リモコン作成に必須条件
今回私の力量を加味していくつか条件を設けました
① arduinoIDEが使える
②単四電池(eneloop)で駆動できる
③ プログラムの書き換えが可能である
- arduinoIDEが使える
他の開発環境を使ったことがない。初心者同然の私でも安心して使える
- 単四電池(eneloop)で駆動できる
以前記事にもしていますが家の電池を単四電池で統一しているため、それを流用できる形にしたい
iotblog5296.hatenablog.com
- プログラムの書き換えが可能である
故障や老朽化で家電製品を入れ替えることもあると思うので、使用するリモコンが代わった際にプログラムを書き換えれるような機構にする
構想
こんな感じのイメージです。最近のテレビのリモコンはボタンの数が多いのはいいですが縦長でボタンが押しづらいことが多々ありました。
なのでリモコンを短くするべく少ないボタンでより多くのリモコンを使えるようにするために一番上の段のページ切り替えボタンを押すことで二段目以降が切り替わるようになっています。
①、②とページを切り替えることにより五徳ナイフのようにリモコン一つで複数のリモコンを扱えるようにしたいと思います。
リモコンの仕組み
規則にのっとって信号(波形)をだしているので同じ信号を出力することができれば家電製品に付属しているリモコンでなくても使えるはずです。が、人間といえど様々な言語を話すことと同様にリモコンからでる信号にも色々種類があります。
リモコンは大きく分けて2種類の信号の出し方をしています。
→電源のON/OFFのみをリモコンから出力する。
②エアコンのリモコンで電源ボタンを押す
→リモコンから冷房、温度、風量などの液晶画面に表示してある全ての情報を出力する
シーリングライトとエアコンのリモコンのどちらも電源を押すだけという動作ですが、エアコンの信号の方が情報量が多いです。仮にシーリングライトのように電源のON/OFFのみの信号を出力する形にするとエアコンの設定が暖房なのか冷房なのか、温度は何度なのか実際に風がでてくるまでわからないのででてきてからのお楽しみというびっくり箱状態になってしまいます。
本当はエアコンのリモコンも扱えるようにしたかったのですが、ディスプレイを設けなければならないため今回は見送りました。
赤外線の仕組み
こちらで詳しく書いてあるのですが日本のメーカーは大体SONY、NEC、家電製品協会の3種類をフォーマットを使って言いますが、近年は海外メーカーの製品も広く使われているためこれに該当しない可能性も大いにあります。
www.asahi-net.or.jp
解析方法
解析方法についてはこちらを参考にしました。
burariweb.info
今回使用するギミック
押したボタンに対してそれぞれボタンに応じて赤外線LEDから信号がでるというシンプルなものです。
が、厄介なのは今回ボタンが19個あるということです。19個すべてデジタルピンと一対一で繋ぐとピンの数が圧倒的に足りません。
そこで先人が考えたキーマトリクスという仕組みを使用していきます。(普段当たり前のように使っているキーボードもこの仕組みを使って作ってあるようです。)
19個のタクトスイッチを3(入力)×6(出力)のキーマトリクスを組み、残りは普通のデジタルピンを使用し、ATmega328Pを8MHzで動かしていきます。
ATmega328Pを8MHzで動かすメリット
ATmega328pはArduinoにも搭載されており16MHz、電源5Vで動いています。もちろん16MHzでATmega328Pを単体で動かすことも可能なのですが外部発振器やコンデンサなどのマイコンとは別途部品が必要になるうえに電圧の下限が4.55V駆電池駆動させようと思うと4本以上電池が必要になりあまり使い勝手がよくありません。
ATmega328Pは8MHzで動かすことが可能で、その場合ですとマイコン以外に部品が必要ないうえに3V以上あれば動かすことが可能となります。
詳しくはこちら
burariweb.info