Piから制御してみたいと思います。こちらの記事ではスマホからのオンオフ制御もやってみました。我が家のエアコンにはスマホで操作する機能なんて付いてないので、後付けでスマホで操作できる機能を付けてみたいと思います。赤外線リモコンを学習させるはじめに、使用するリモコンの赤外線の信号をラズパイに学習させる必要があります。リモコンのボタンを押した時に出力される赤外線を赤外線受信モジュールを使って受信し、その信号を保存するという流れです。赤外線受信モジュール赤外線受信モジュールとは、フォトダイオード、フィルタ、アンプなどがパッケージ化されたもので、受信した赤外線のパターンを電気信号に変換して出力することができます。今回使った赤外線受信モジュールはOSRB38C9AAです。端子は左から、出力、GND、電源です。それぞれラズパイボードの、GPIO21、GND、3.3Vに接続します。pigpioをインストール次に、赤外線のパターンを学習するためのプログラミングの準備していきます。「pigpio」はGPIOを制御するパッケージです。「RPi.GPIO」より応答が高速です。python3-pigpioインストールしたら起動時にpigpioを自動起動するようにしておきます。pigpiodこれでpigpioがデーモンとして起動時に自動で起動します。Playback」はラズパイのGPIOに入力された赤外線パターンを読み取って保存することができます。保存したパターンを送信することもできます。赤外線パターンの学習の手順は次の通りです。Playbackをダウンロードします。http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip2.解凍ダウンロードしたファイルをunzipで解凍します。irrp_py.zipunzipをインストールしていない場合は、下記コマンドでインストールできます。解凍した「irrp.py」を実行します。lrオプションの説明は次の通りです。今回は、power、flow、updown、lrという4つの名前で保存するサーキュレーターの制御をやってみようと思うので、学習値を保存するファイルを「circulator」としました。電源オン・オフ→power風量→flow上下首振り→updown左右首振り→lrとしました。‘power’」と表示されるので、赤外線受信モジュールに向けてリモコンの電源オン・オフボタンを押します。confirm」と確認を要求されるので、もう一度電源オン・オフボタンを押します。これが、flow、updown、lrと順番に繰り返されます。完了すると、irrp.pyと同じディレクトリに「circulator」というファイルが生成されています。中身はこのようになっています。学習した赤外線パターンを送信します。irrp.pyを送信モードで実行し、赤外線LEDからパターンを送信します。赤外線LED今回使った赤外線LEDは「OSI5FU5111C-40」です。Piとはこのように接続します。カソードをGPIO20に接続、3.3Vとアノード間の抵抗は220Ωを4パラ(55Ω)にしています。35.5mA\]ですが、おそらくGPIOの出力抵抗が数十Ωあるので、実際にはそんなに流せていないと思います。4Bの定格電流はTBDでしたが、類似品では16mAとなっていました。電流を流しすぎですが、定常的に流れるわけではないので良しとします(自己責任でお願いします!)本来は間にトランジスタを入れて電流を流すべきですね。電流をもっと流せるので、赤外線の送信距離も長くできます。次のコマンドでirrp.pyを送信モードで実行します。power「-p」が送信モードのオプション、赤外線LEDはGPIO20に接続しているので、「-g20」を指定します。これで「circulator」ファイルに保存された「power」の信号が送信されます。登録した風量切り替えや首振りも同様に制御できます。2022年7月24日これだけでは単にリモコンの代わりになっただけなので、気温によって自動的にオン・オフさせてみたいと思います。エアコンや扇風機を自動でオン・オフさせる温湿度センサー:DHT11を使って温度をモニターし、設定した温度で自動的にオン・オフするプログラムを作ってみます。Piで温度と湿度を取得する方法DHT11は低価格で購入できる温湿度センサーです。以前の記事では温度を測定するのにADコンバータを使ったりしてなかなか面倒でしたが、DHT11...気温が高い時だけ扇風機をオンさせたり、エアコンから離れた場所の温度制御などに使えます。今回は、先程使ったサーキュレーターを自動的にオン・オフさせたいと思います。GPIO.cleanup()サーキュレーターがオンかオフかを「circulator」の値で判断します。0がオフ、1がオンです。デフォルトが0のため、必ずサーキュレーターがオフしている状態でプログラムを走らせる必要があります。irrp.pyはシェルコマンドで実行させるように作られています。「subprocess」を使ってコマンドを送信する必要があります。サーキュレーターをオフさせる温度は設定温度より1°C低くしています。しないと、設定温度付近でオン・オフをずっと繰り返してしまうためです。分かりやすいようにLCDに現在の気温とオン・オフ設定温度を表示させています。Piで制御して文字を表示してみたいと思います。プロフィールりょうのすけアナログ回路設計者です。現在はベンチャーに所属して生体センシングをやってます。ハードでもソフトでも、何かしら作ることが好きです。