2017/7/29
夜、エアコンがつきっぱなしだと、朝に体調が悪くなっているので、 寝るときはおやすみタイマーを仕掛けて1時間後にエアコンが切れるようにしています。 でも、タイマーでエアコンが切れた後に、外部温度が高いままだと、 室内温度が不快レベルまで上がってしまい、夜中に暑くて起きてしまう ことがありました。
そこで、温度センサーで室温をモニターし、一定温度以上になったら エアコンを入れて、30分後におやすみタイマーで切れるようにしてみました。

全体像
image

上から見たところ
左上に赤外線センサー、右上に赤外線LED、右側ケースから出ているのが温度センサー
image

斜めから
ケースは100円ショップに売っていたクリップの入れ物です。
image

マイコンボードは、価格と開発環境充実度と情報の多さ、 機能として、A/D、タイマによるパルス出力、デバッグ用に uartがあることで、stbeeを選びました。 CPUは、STM32F103VET6です。
購入先はStrawberry Linux です。

エアコンを制御するためには、リモコンと同じ信号を出せればよいと考えました。 まず、エアコンのリモコン出力を全て記録して、データとして用意しておき、 このデータを使ってリモコンと全く同じ信号を赤外線LEDから出力する仕様としました。


接続
PA9 TX CON3-1 コンソール送信
PA10 RX CON3-3 コンソール受信
PC0 ADC123_IN10 CN3-33 温度センサー入力
PA1 CN4-4 赤外線センサー入力
PD12 TIM4-CH1 CN3-19 赤外LED駆動用 PWM

まずは、エアコンのリモコンの出力信号の取り込みです。
リモコンの赤外線を受けるセンサーは、秋月電子の PL-IRM1261-C438 を選択しました。 38kHzキャリアの信号を検出すると、Lowを出力します。 この信号を、STM32のPA1で受けます。

リモコンデータ取得用プログラムの概略:
センサー出力のLowとHighの時間をタイマーでカウントして、これらを配列にためておき、 ボタンが押されたら配列の値をuartに出力します。

uartへの出力は以下のようになります。奇数番目がLow幅、偶数番目がHigh幅。
3428 1669 457 1245 458 1245 453 399 458 397 452 400 458 1244 459 396 456 395 459 1244 459 1244 459 396 456 1244 458 395 458 396 458 1245 457 1244 457 395 453 1250 458 1244 459 395 457 395 458 1244 458 397 456 395 458 1244 459 396 452 400 459 396 457 395 458 396

プログラムの要素部分です。
リモコンデータ取得用プログラム



次は、赤外線LEDを駆動する方です。
タイマーを使って周波数 38kHz(周期 26.3usec)、duty 1/3で 赤外線LEDを駆動すればキャリア波形を出せるのですが、 計算上の値で駆動してもエアコンは全く反応してくれず、 数値を決めるのに大分苦労しました。
オシロがあれば波形を確認できるのですが、まだ持っていないので 設定値を替えながらハンディテスタの周波数と電圧を測定して、 ずれを補正して設定値を決めました。 簡単に書いてありますが、実験は夏の暑い期間の土日に汗かきながら行ない、 最初の年はうまくいかずに断念して、2年目にやっとエアコンが 反応するようになりました。

受光側が反応してくれれば、あとは送信データを取得して、これを 出力するだけです。

最初にエアコンをONにしないとなりません。 これはリモコンの電源ボタンと信号が1:1になっていましたので、 ボタンを押したときのデータを取得しました。

温度や風力など、何回か設定を変えてリモコンの信号を取っていると、 どうやらリモコンは現在の設定を全て送信しているように見えます。 そこで、リモコンの設定を以下のようにして、 最後に簡単タイマーOFFボタンを押したときのリモコンの出力データを取得しました。
28.5度
風速静
風除け
冷房



赤外線LED出力プログラムの概略:
180秒ごとにsleepから復帰して、温度をチェック。28.5℃以上だったら エアコンをつけて、30分後におやすみタイマーで切れるようにします。 最後に、復帰用タイマーを40分に設定してsleepします。

プログラムの要素部分です。
赤外線LED出力プログラム


室温をモニターする温度センサーは、秋月電子の 高精度IC温度センサLM61BIZ を選択しました。 10mV/℃の傾きで電圧出力してくれます。
温度センサの出力する電圧信号を、STM32のPC0に接続しておき、A/D変換でアナログ値を読み取ります。
何度かエアコンをつけたり切ったりして、この温度だと不快というところで 温度センサの出力を読み取り、この値を閾値にしました。


今年もこれが良い具合に働いています。



購入した部品など
STM32マイコンボード『STBee』 3000円
赤外線リモコン受信モジュールPL-IRM1261-C438 ¥100
5mm赤外線LED OSI5FU5111C-40 (5個入) ¥100
高精度IC温度センサLM61BIZ(4個入) ¥200

ACアダプタやジャック、線材は、ジャンク箱の中のを使いました。


戻る