初心者だけどエアコン自動化してみた


# はじめに

夏場になると暑くて夜中に目が覚めることがあります。そんな時に勝手にエアコンが付いたらいいなぁと思ったのがきっかけでした。
私はSEをやっているためLinux、シェルスクリプト、Pythonなど問題ありませんでしたが、**電子工作**というのは初めてでした。
![Top.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/4a39082b-2ea7-e32e-048e-28cf405729c0.jpeg)


# 先人のやり方を真似る

ネットでいろいろ検索した結果、今回は[こちらの記事](https://paltee.net/archives/45)を参考に進めることにしました。
（結局最小限の実装にとどまりましたが。。。）

# 買い出し！

[参照記事](https://paltee.net/archives/45)をほぼ丸パクリしながら買いました。まずはエアコン自動化に必要なものです。

| 買ったもの | 値段 | 備考 |
|:-----------|------------:|:------------|
| [Raspberyy Pi Zero W](https://www.switch-science.com/catalog/3200/)| 1320| スイッチサイエンスで1つ目は安く買える|
| [micro SD card 32GB](https://akizukidenshi.com/catalog/g/gS-15844/)| 780| ラズパイのストレージになる|
| [温湿度・気圧センサモジュールキット](https://akizukidenshi.com/catalog/g/gK-09421/)| 1080| 温度、湿度、気圧も測れる|
| [赤外線受信モジュール](https://akizukidenshi.com/catalog/g/gI-04659/)| 100| 2個入り|
| [赤外線LED](https://akizukidenshi.com/catalog/g/gI-03261/)| 100| 5個入り|
| [電源](https://www.switch-science.com/catalog/2109/)| 1100| ラズパイ用の5V電源|
| [電源コネクタ](https://www.amazon.co.jp/%E5%A4%89%E6%8F%9B%E5%90%8D%E4%BA%BA-USB-microUSB-%E5%A4%89%E6%8F%9B%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF-USBA-MC5AN/dp/B00ADZIF2W/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=USBA-MC5AN&qid=1622270044&sr=8-2#)| 229| ラズパイ用（USB→microUSBに変換するやつ）|
| [基板](https://www.switch-science.com/catalog/3946/)| 346| 温湿度センサ、赤外線送受信機を載せるための基板|
| [スペーサー](https://www.amazon.co.jp/%E3%82%B5%E3%83%B3%E3%83%8F%E3%83%A4%E3%83%88-Raspberry-Pi%E7%94%A8%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B5%E3%83%BC-%E9%BB%84%E9%8A%85%E8%A3%BD-MPS-M2611/dp/B01ARIIQEG/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=MPS-M2611&qid=1622265139&sr=8-1)| 270| ラズパイと基板を止めるねじ的なやつ|
| [抵抗コンデンサLED詰め合わせパック](https://www.switch-science.com/catalog/1218/)| 693| この中から必要な抵抗を見繕う|
| [ＮＰＮトランジスタ](https://akizukidenshi.com/catalog/g/gI-05998/)| 100| 10個入り|
| [電解コンデンサー４７μＦ](https://akizukidenshi.com/catalog/g/gP-03120/)| 10| やろうと思えば詰め合わせパック内のものを組み合わせて賄える|
| [ピンソケット 2x20(RPi本体用)](https://akizukidenshi.com/catalog/g/gC-00085/)| 80| 元々ピンが付いてるラズパイを購入すれば不要|
| [ピンヘッダ 2x20(基板用)](https://akizukidenshi.com/catalog/g/gC-00080/)| 50| ラズパイと基板を接続するために使う|
| [ピンソケット 1x20](https://akizukidenshi.com/catalog/g/gC-03871/)| 50| 温度センサー取付用→参照記事にもあるが、[必要分](https://akizukidenshi.com/catalog/g/gC-03784/)買えばいいかも（切るのが大変）|
| [ピンヘッダ 1x40](https://akizukidenshi.com/catalog/g/gC-00167/)| 35| 温度センサーに付ける用。ピンヘッダはニッパで切りやすいから問題なし|


上記以外にも電子工作初心者なので、はんだごてやスターターキットやらを買いました。
ラズパイのスターターキットの中にジャンパワイヤやブレッドボードが入っていたので、試作段階ではこれらを使いました。
（なんなら温度モジュール等も入っていたのでスターターキットで代用できた部分もありそう）

| 買ったもの | 値段 | 備考 |
|:-----------|------------:|:------------|
| [はんだごて](https://akizukidenshi.com/catalog/g/gT-02536/)| 800| はんだ付けに必要なので購入|
| [こて台](https://akizukidenshi.com/catalog/g/gT-02538/)|280| 始めはいらないと思っていたけど、結局必要（こて台というか、こて台にもなるクリーナー）|
| [はんだ](https://akizukidenshi.com/catalog/g/gT-02594/)| 210| はんだ付けに必要なので購入|
| [ラズパイスターターキット](https://www.amazon.co.jp/SunFounder-%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%BF%E3%83%BC%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C%E3%82%AD%E3%83%83%E3%83%88-%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E8%A9%B3%E7%B4%B0%E3%81%AA%E6%95%99%E6%9C%AC%E3%81%A8%E8%B1%8A%E5%AF%8C%E3%81%AA%E5%AD%A6%E7%BF%92%E7%94%A8%E3%83%AC%E3%83%83%E3%82%B9%E3%83%B3%E4%BB%98%E3%81%8D-Python%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88/dp/B083SJQXCL/ref=sr_1_1_sspa?dchild=1&keywords=%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4+%E3%82%AD%E3%83%83%E3%83%88&qid=1622268813&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExSkZaSURXWjBIU1lGJmVuY3J5cHRlZElkPUEwMDI4MjYwV0c1R0NBMldRT0Y1JmVuY3J5cHRlZEFkSWQ9QTNPWDI5UkNQSEhTRTQmd2lkZ2V0TmFtZT1zcF9hdGYmYWN0aW9uPWNsaWNrUmVkaXJlY3QmZG9Ob3RMb2dDbGljaz10cnVl)| 4374|ラズパイ本体は入っていない|



# ラズパイの環境準備

この記事では細かい設定手順等は省きますが、ザックリ以下の手順で初期セットアップを進めました。

1. [ラズパイのOS](https://www.raspberrypi.org/software/operating-systems/)をmicroSDに書き込む
2. Wifiに接続するための設定をmicroSDに追加する
3. microSDをラズパイにセットして起動する
4. PCからラズパイにssh接続する
5. 必要なライブラリのインストールや、コードのダウンロードをする

# 回路の作成

電子回路なんて右も左も分からなかったので、こちらでも基本的には[参照記事](https://paltee.net/archives/45)をトレースする形で作業を進めました。
しかし、そのままではうまく動かなかった部分があったり、LEDを1つにしたりといった変更を加えたため、結局部品のデータシートを見て抵抗を計算して、、と電子回路の基本を学ぶ事になりました。（抵抗の計算とか大学受験ぶりにやった気がします。まさか大人になって使う機会があるとは。。。）

#### 電子回路図
温湿度センサーモジュール、赤外線受信モジュール、赤外線LEDのそれぞれの電子回路図（Qiita用の清書版）です。素人なりに描いてみました。
![電子回路図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/bdf3bd14-f9c0-e5ce-ea1b-0611b6ed3837.png)

# プロトタイプの試運転！
上記回路図に従ってブレッドボードに各部品を載せて配線していきます。一通り載せ終わったのが以下です。
この状態で部屋の温湿度の計測、リモコン信号の送受信が可能です。
![ProtoType.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/2d7a6363-83f6-66bb-c7b7-da1a995aa775.jpeg)

#### ひとまずシェルスクリプトで運用
最終的にはPythonでウェブアプリを作ってスマホから操作ができるようにしたいのですが、ひとまず動作確認として一定の温度・湿度を超えたら冷房を付けるシンプルな処理をシェルスクリプトで作成して数日間試運転しました。
最初は温度・湿度それぞれに閾値を設けていたのですが、途中から[不快指数](https://keisan.casio.jp/exec/system/1202883065)というものを導入してON/OFF制御プログラムを改良していきました。

# 本実装
試運転がいい感じに行ったのでユニバーサル基板に実装していきます。ラズパイと同サイズの小さな基板上に各パーツを配置しなければいけないので、しっかりと設計をしてから作業をしました。

#### 基板上の回路図
各モジュールを基板に配置する際の回路図（Qiita用の清書版）がこちらです。（こちらも我流で描いています。）
水色の太線は裏側の裸線配線で、オレンジの太線は被覆線の配線を表しています。
![基板上の回路.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/5105e8d6-8507-cc22-c710-598b98312a87.png)

#### 完成！！
完成品をリモコンと一緒に撮影してみました。こうして見るとすごく小さいですよね。
本当はケースも作ってあげたいですが、ひとまずこれで良しとします。
![Complete.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/5144a342-981d-a904-308c-4043f935700b.jpeg)


# 後日談
#### 結局ずっとシェルスクリプト
ひとまず動かすためにシェルスクリプトでON/OFFの制御を行っていましたが、結局その後もシェルスクリプトを使い続けています。
（ssh接続用のスマホアプリを使って、ラズパイにsshしてLinuxコマンドを直打ちして操作しています。）
一応「スマホから操作」できているので良しとします。

#### ピー音がうるさくて眠れない
暑くなると自動的にエアコンが付いて、冷えると切れて、たしかに部屋を適温に保ってくれるのですが、、、悪いときには10分おきに「ピッ（電源ON）」「ピー（電源OFF）」とピー音が鳴ります。私は一度寝てしまえば問題ないのですが、寝ようとしている時これではさすがに寝れません。。。
ON/OFFの閾値の幅を広げたり、一度付けたら20分間は稼働し続けるようにしたり、さらには0時までは自動制御をさせないようにしたりと試行錯誤で対策しています。

#### 温度計がおかしい？？
完成品にしてからセンサーが示す温度が高いような。。。と思っていたら、なんと、コンパクト過ぎるゆえにCPUの放熱で温度センサーが熱せられているではありませんか！

あれこれ対策を考えましたが、最終的に導線で接続してラズパイの放熱の影響のないところで温度を測る様にしました。
（なんかあんまりかっこよくない。。。）
![Moyashi.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485256/058befa0-b300-1863-ec6a-983e12a45bb1.jpeg)


# 終わりに
今回は初めての電子工作だったことと、「IoT＝ラズパイだ！」というイメージからラズパイを使いましたが
「このためだけにラズパイってオーバースペックでは？？」
「もっと安くできないのかなぁ？？」
と思った節もあります。

少し調べてみると、難易度は上がりますがPICマイコンを使うことでもっと安くコンパクトにできるかも知れないことが分かりました。

今回値段の高かったパーツの代替候補をまとめてみました。（※これでできるかは分かりません）

|現行品(金額)|→|代替品(金額)|
|---:|:---:|:---|
|ラズパイ+microSD(2100)|→|[PICマイコン](https://akizukidenshi.com/catalog/g/gI-11887/)(160)|
|温湿度・気圧センサモジュールキット(1080)|→|[温湿度センサモジュール](https://akizukidenshi.com/catalog/g/gM-07003/)(300)|
|電源(1100)|→|[電源](https://akizukidenshi.com/catalog/g/gM-08310/)(500)|

計算してみると、4280円→960円と3320円もコストダウンに成功しています！
ということで次に電子工作をする時はPICマイコンにチャレンジしてみたいと思います。
<br>
お読みいただきありがとうございました。