はじめに
最近スマート家電やホームコントロールという言葉もすっかり身近になってきました。声をかけるだけでテレビやエアコンがオンする環境はもう当たり前になってきています。
しかし、家電コントロールのシステムや規格はまだまだ統一されておらず、家電自体にネットワーク機能がついたものを購入するか、テレビを付けたりなどのリモコン(赤外線)操作を行うデバイスを購入するしかないのが現状です。しかも、そのスマートリモコンシステムが1万円くらいしたりするので、便利かもしれないけど購入は迷う値段です。
家の中のすべての電化製品をコントロールするためには、自分でモータやセンサを購入し、回路を作成し、基盤にはんだ付けし、プログラムを書き込むという作業が必要になってきます。本記事は「好きな家電をコントロールしてみたい」「電子工作でなにか役に立つものを作りたい」という方に向けて、やるべきことを解説していきます。
対象とする人
- 家庭内IoTシステムを安く、簡単に作りたい方
- 無線IoTデバイスの自作に挑戦してみたい方
- RaspberryPiやArduinoを買ってみたは良いが、使い道に迷っている方
- 実際に使えるプログラミングの勉強を(少しだけ)したい方
家庭内IoTシステムの完成形
現在私が家で稼働させているシステムの構成図です。

本記事では①~④を中心に解説していきます。最終的には声やスマホ、時刻やセンサによってテレビやエアコンを点けたり、ライトを操作することができることを目指します。
①~④は一応優先順位です。それぞれの役割と、作るのに必要な知識・技術を簡単に解説しておきます。
①無線マイコン(ESP8266)
- 役割:
WiFiによる通信で動作命令を受け取ったり、一定時間経過など何らかのタイミングによって、出力ピンから電圧を出力しモータやLEDを動作させます。 - 必要事項:
Arduinoプログラミング(C++)、HTTP通信、電子回路(モータ、LED、抵抗、トランジスタ等)
IoTのキモとなる、プログラミングとハードウェアを結びつけるマイコン(小型コンピュータ)です。本記事ではESP8266というモジュールを使います。このモジュールは最近では有名なArduinoにWiFi通信モジュールがついたものです。かなり安価(1個700円程度)で購入でき、一つの機能に対して一つのモジュールを使うのが基本です。
②サーバ(RaspberryPi等)
- 役割:
マイコンではできないような、Webから天気予報の取得や画像・音声の解析を行い、必要に応じてマイコンに動作命令を送ります。また、家の外からスマホでデータを送る際、通信を受け取るための玄関的な役割(=サーバ)を担います。 - 必要事項:
Pythonプログラミング、Linuxの知識、ネットワーク(サーバ)の知識
マイコンでできないような画像・音声解析や、複雑なネットワーク機能を担当します。ちゃんとしたコンピュータであり、できることは無限ですが、LinuxというOSを使っているため初心者には多くの知識が必要となります。本記事ではサーバの構築など一部だけ紹介します。
③ルータ
- 役割:
WiFiや有線LANで繋がれた機器同士の通信経路を作ります。家の中だけで使っている場合はSSIDとパスワードを各機器に登録するだけで接続できますが、サーバで家の外からの通信を受ける場合には少し設定が必要になってきます。 - 必要事項:
ネットワークの知識
少し設定すれば終わりですが、家の外からの通信を受けるときは適切に設定する必要があります。
④スマートスピーカー(Google Home)
- 役割:
音声を検出し、予め登録した言葉を検出したら何か処理をさせます。 - 必要事項:
特になし
Google Homeやアレクサ等最近流行りのスマートスピーカーですが、対応機器が少ないため持て余している方もいるかと思います。本記事では自作したIoTデバイスをスマートスピーカーで操作できるようにします。
上の図では家庭内だけで通信が完結しているように書きましたが、Google Homeを使うにはIFTTTというサービスを利用するのが一番簡単です。そのためには家の外からの通信を受け入れる必要があり、②のサーバが必要になってきます(IFTTTが外部にあるため)。
できるようになること
この記事を順番に見ていくとできるようになることを段階的にまとめてみます。
1.①無線マイコンのみ
無線マイコンのみでもTVやエアコンを付けることはできます。問題はどうやって動作命令を伝えるかですが、簡単にやるならスマホでchromeなどを開いて特定のURLを打ち込むことでマイコンを動作させることができます。
また、無線マイコンにセンサを付け、無線マイコン同士で通信させることも可能です。

2.①無線マイコンと②RaspberryPi(サーバなし)
RaspberryPiを導入することで、Webから天気予報や現在の気温等を取得することができます。よって人が入力しなくても無線マイコンを動作させることが可能です。
また、RaspberryPiに音声解析ソフトをインストールすればスマートスピーカーがなくても音声で家電を操作することができます。ですが、認識精度はやはりGoogle Homeが圧倒的に高精度ですので、ここで終わるのはもったいない気がします。

3.①無線マイコンと②サーバと③ルータを設定
RaspberryPiをサーバ化すると、今まではできなかった家の外からの通信を受けることができます。これにより外出先からスマホでエアコンを付けることが可能になります。
また、2つのサービスを結びつける「IFTTT」を使うことで、さらに動作命令を送る幅が広がります。

4.①無線マイコン+②サーバ+③ルータ+④スマートスピーカー
最後にスマートスピーカーを追加すれば、好きな家電を声で操作できるようになります。IFTTTを使えばスマートスピーカーの利用は簡単なので、次の最終形にするまでに時間はほとんどかからないと思います。

今回は最終的な全体システムの説明と、それぞれの構成がどのような役割を持つのかを解説しました。次回からはESP8266を使って動作命令を受け取る→LED、モータを動かす部分を解説していこうと思います。
つたない文章でしたが、次回もよろしくお願いします。