ホームオートメーション(2)2019年04月28日

MQTTと赤外線リモコン

赤外線リモコンの学習とWiFiリモコン化にチャレンジしています。
家にはたくさんのリモコンがあります。人が操作しなくてはいけない機器には必ず(ある程度の価格のものは)赤外線を利用した手元リモコンが付属しています。TVから始まってエアコン、扇風機、シーリングライトなど数え上げたらきりがありません。ゆえに居間のテーブルの上にはリモコンが散乱することになります。これをまとめられたらどんなに楽になるだろうと思わずに入られません。(実際にはそんな簡単なものではないのですが)

今回はその糸口になればと思いESP8266を使用して既存のリモコン信号を学習して、WiFi(MQTT経由)からの操作で機器をコントロールするリモコンを作成しました。2台作成して、学習データ作成用に1台は送受信機をつけてあります。もう1台は3.5mmプラグ付きの延長ケーブルLEDを使用して設置条件に合わせられるようにしました。

ホームオートメーション(1)2019年02月11日

MQTTとホームオートメーション

Raspberry PiでMQTTブローカーであるmosquittoのインストールも終わり、MQTTブローカーが動き出すとMQTT経由で遠隔地のセンサーからのデータ受信やリレーを制御することが容易になりました。パワーポイントにあるように接続される機器はネットワーク上にあれば良く、同一サーバー上にある必要がなくなり設置に関しての自由度が格段と増しました。しかし、現在販売されているホームオートメーション機器を使用してシステムを構築しようとすると様々な問題が出てきます。今回はSONOFFスイッチが格安で入手できたので2台購入して使ってみたいと思います。
最近のホームオートメーション関連機器はAmazon AlexaやGoogle Homeなどいろいろと出てきていますが、対応機器が限られているのと割高感があります。
データ収集はESP8266やESP-32などWiFiに対応したモジュールを利用し、制御プログラムはRaspberry Pi内のnode-redに担当してもらいます。

Raspberry Pi3 B+(2)2019年01月29日

Raspberry Pi3 B+のIOインターフェース

久しぶりにRaspberry Piをいじったら、node-redとpythonが大変使いやすくなっていたのでいろいろなものをGPIOやI2Cインターフェースに接続して遊んでみました。

  • 5Mピクセルのカメラモジュール
  • GPIOに直接接続
  • サーボ制御カメラマウントに2個のSG90サーボ
  • 2回路リレー制御モジュール
  • 超音波距離センサー
  • マイクロウエーブドップラーセンサー
  • NaPiOn人感センサー
  • 赤外線リモコン受信機
  • 赤色LED
  • I2Cインターフェースに接続
  • 4チャンネルADコンバーター (ADS1115)
    薄膜サーミスタ温度センサー
  • 1.3インチOLED (SH1106)

これらはすべてnode-redで直接制御できるか、pythonプログラムで制御できます。もちろんMQTTにも対応できます。
node-redのモジュールが充実しています。

pythonプログラムで美咲フォント(日本語フォント)を1.3インチOLEDに表示させてみました。読めますが流石に8x8フォントは小さいです。

Raspberry Pi3 B+(1)2019年01月12日

最新のRaspberry Pi3 B+は強力になった。

久しぶりにRaspberry Piネタです。Raspberry Piは5台目で用途はIP電話交換機、ちょっとした用途のサーバー、インターネット音楽プレーヤー、3Dプリンターの印刷サーバーに使用しています。今回はMQTTの実験用に最新版RaspbianにmosquittoというMQTTブローカーをインストールしました。

MQTTはIoTを考える上で避けて通れないテクノロジーです。アマゾンのAWSでも使用されています。MQTTクライアントとしてESP32やESP8266を使用した端末装置からのメッセージを取りまとめする機能をブローカーが担います。OSは相変わらずRaspbianを使用しています。

Linux raspmosq 4.14.79-v7+
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 9.6 (stretch)
Release:	      9.6
Codename:	      stretch
Raspberry Pi3 B+になって発熱が大きくなったようですのでファン付きのアクリルケースにしています。

はじめてのIoT(2)2017年05月06日

家電製品の連動

家電製品の中にはある機器が動作したら合わせて動作させたい機器があります。連動させるための仕組みが用意されている場合は良いのですがそうでない場合はまず機器Aの動作を監視することで機器Bを動作させるかどうかの判断を行います。簡単には機器Aが接続されたコンセントに電流が流れているかを監視します。電流が想定されるだけ流れていた場合、機器Bの電源をONにするという仕組みで連動させることが可能です。今回はそんな連動ボックスを作成してみました。
電源連動ボックスの心臓部は、AC100Vの電流を検出するセンサーです。電流センサには U-RD社の極小型クランプ式交流電流センサー CTL-6-S32-8F-CLを使用します。このセンサーはAC100Vラインに接続した負荷の消費電流に応じて1/800の電流が出力されるのでその電流を抵抗に流し電圧に変換後、AD変換してESP8266が処理します。
ESP8266には(ESP-12Eでも)ADコンバーターが1CHしかありませんのでADコンバーターはI2Cに接続できるTI社のADS1115 ADコンバーターを使用しました。ADS1115は4チャネルの入力が可能です。今回はそのうちの2チャネルを使用してAC100Vラインの電流を監視します。残りは未使用ですがその他のアナログ入力(センサーなど)に使用できます。アナログ入力に温度センサーとして3Dプリンターで使用している100KΩのNTCサーミスターを使用しました。デジタル出力のセンサーなら値を読み取るだけで済むのですがアナログ入力の場合は電圧を読み取り、ソフトウエア(計算式)で温度への変換を行います。0~50℃で使用するB値を選択しています。

赤外線リモコンでリレーをON/OFFすることもできるように赤外線リモコン受信モジュールを付けて適当なTVリモコンのキーを割り当てるようにしました。バッファロー社のHDMI切替器に赤外線受信機が付いていたのでそれを流用しました。

出力制御にはAC100VをON/OFFするので2回路リレーモジュールを使用しました。温度湿度制御BOXのときとは異なりこのモジュールはリレー回路と制御回路がフォトカプラーでアイソレートされていますのでESP8266の3.3Vロジック電圧で直接動作します。リレー電源は5Vです。


電源連動ボックスの設定WEB画面です。
左側の2つのボックスがリレーのコントロールBOXです。右側はセンサー類を入れているツールBOXです。ツールBOX内のアイコン近くの数値は現在値を1秒間隔で表示しています。コントロールBOX内の電源アイコンは現在のリレーの状態を表示します。このスクリーンショットではコントロール1にAC電流センサー1を割り当ててしきい値は20mA以上になったらリレーをONにする。コントロール2は赤外線リモコンを割り当てるという設定です。
操作は簡単でツールBOXからアイコンをコントロールBOX内にドラッグするとしきい値設定画面が開きますので条件式と値を設定するだけです。AC電流センサーはmA単位、温度センサー(サーミスター温度センサー)は0.1℃単位でしきい値を設定できます。写真ではコントロール1の設定を温度センサーに変更してしきい値を設定しているところです。WEB画面を凝りすぎたため、PCからのみの操作になります。(スマホからではドラッグ操作ができません。)
また、電源投入時の初期値をフラッシュに保存する機能もついていますので保存時の設定で本機を起動することができます。フラッシュメモリーは書き換え限界がありますので手動セーブにしています。