Raspberry Piと赤外線LEDでエアコンを自動操作

部屋に水槽を置いているのですが、夏場に魚が茹で上がるのを防止するため、一定室温を超えたらエアコンが作動するようなシステムを作ることにしました。ラズパイで赤外線LEDを制御します。


pigpio

送受信にはpigpioを使います

送受信プログラムのダウンロード


受信

アリエクで適当に仕入れた10個入り(こんないらない)103円の受信モジュールを使います

受光部正面から見て左から OUT, GND, VCC です。2.7~5.5Vで動くらしいので、3.3Vを繋いでおきます。OUTにはGPIO22を使いました。

もしうまく受信できなかったら、データシートの通りに C=100μF, R=100Ω のRCフィルターを挟めばよいかと思います。

エアコン停止の信号を記録してみます。”codes”ファイルに記録されます

中身はこんな感じになってました

あとは下のように各温度に対応する信号を記録します。並べれば一気にできます。


発信

赤外線LEDもアリエクで適当に買ったやつを使います

パルスで75mAまで流していいみたいです

ラズパイのGPIOではパワーが足りないのでトランジスタ 2SC1815 を使います。

必要な抵抗を計算します。赤外線LEDのVfは大体1.3Vぐらいらしいです。

3.3Vに繋ぎ、75mAを流すとすると、コレクタ抵抗は大体 Rc = (3.3-1.3)/0.075 = 27Ω にすればいいです。近い抵抗は22Ωがあるので、それを使うと コレクタ電流 Ic = (3.3-1.3)/22 = 91mA 流れますね。まあ若干超えてますがいいでしょう。

ベース抵抗を考えます。2SC1815のIc-Vce特性を見てください。

コレクタエミッタ間電圧Vceに電圧を吸われないようにするため、多めのベース電流を流します。Ic = 91mA のとき、低いVceに収まってるベース電流にしたいので、ベース電流は Ib = 5mA とします。
そのときの抵抗は、 Rb = (3.3-0.6)/0.005 = 540Ω (0.6はベースエミッタ間電圧Vbe)。近い抵抗は510Ωで、それを使うと Ib = (3.3-0.6)/510 = 5.3mA 流れます。

画像

ベースにGPIO23を繋げて発信してみます。

…届かない😅
エアコンまで5mぐらいですが、全然届きません

今度は5Vに繋いでLEDを3つ直列にして試します。推定110mA流れる計算ですが大丈夫なんでしょうか?

これで一応届くようにはなりました。
GPIO23からずっと3.3V出力して10Ω抵抗両端の電圧測れば流れている電流が正確にわかりますが、多分焼ききれるのでやりたくないです。

まあまあ指向性があるので、グルーガンでエアコンの方向にガチガチに固定しておきます


室温と連動

温度センサーにAHT10を使います。プログラムはこれを利用しました。

https://github.com/gejanssen/aht10-python

室温30度になったらエアコンを28度の設定でONにします。

aircon_auto.py

crontabで5分毎に実行します

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です