2016.9 初版作成
2022.8 python3 化
2018.7 回路微修正
私の自宅は居間と寝室が別の階にあります。 夜、寝る前にエアコンをつけたいのですが、階段を上がるのが 面倒です。自宅内は Wifi で通信できるので、 スマホでエアコンを on/off できる装置を作りました。 とても便利です。
外出先から操作することも可能です。
(補足)
本電子工作では Raspberry Pi と Arduino を使っています。 Arduino は 電子回路とやりとりする部分を担当し、 Raspberry Pi はネットワーク通信部分を担当します。 Raspberry Pi と Arduino はシリアル通信でやりとりします。
ネットを見ると Raspberry Pi のみで、 赤外線リモコンを実現しているサイトが多数あります。 私も Raspberry Pi 3 と wiringPi を利用する C の プログラムで赤外線の送受信を行ってみました。 プログラムはうしこlogさんが ここ で公開されている C のプログラムを少し改造して使わせてもらいました (うしこlogさんのサイトのプログラムにはバグがあります。それを 修正改良したプログラムを三木克彦さんが ここ で公開されています)。 日立の扇風機のリモコンを学習させたところ、 高い確率で送信に失敗します。 X Window System を起動しているときは、成功率は 1/5 以下 であり、X Window System を起動していないときは 1/2 程度でした。
赤外線は 38 kHz(周期 26.3 us)で変調します。 Raspberry Pi が作り出す信号をデジタルオシロで観察すると、 時によって周期が 25 us 〜 28 us (40 kHz 〜 35.7 kHz) の範囲で ばらつきます。これが送信失敗の原因と思われます。 Raspbian はマルチタスクの OS であり、 1 つのプロセスが CPU を独占することは出来ないので、 us オーダーの時間制御は難しいようです。 確実な動作を期待するには、赤外線 LED の変調 部分は Arduino のようなマイコン(1 つのプログラムが CPU を 独占する)に任せた方が 良いと思われます。
2022.6 追記
このサイトによると、 WiringPi は時間管理の精度が甘いそうです。Wiring Pi を使わないなら、 問題はなさそうです。 このサイトによると、 Wiring Pi は 2019 年に開発が停止しており、使用は推奨されないそうです。