久々に投稿します。かなりネタが溜まっているので、順次投稿し、本稿も随時加筆します。
RaspberryPI 2 modelB v1.1 を使って、電灯制御を作っている。
完成した基板とRaspberryPi (ずっと、ブレッドボード版を使っていたが..)
リモコン信号を受信して、LEDを点滅したり止めたりするDaemon もおまけで走らせている。
方針)
- 他にもRaspberryPI, Raspberry PI3 BやRaspberryPI Zero W等も購入した。
おいおい拡張したい。 - RaspberryPI 3B+ には、Ubuntu mateをいれ、Elecrow RPA05010R HDMI 5-Inch 800x480 TFT LCD Display with Touch Screen Monitor for Raspberry Pi B+/2B/3B をamazon.comで購入して、接続しタッチパネル操作できるようしている(以下写真)。DRAMも多いし、CPUも速い(別途投稿したい)
- Raspberry PI 2 modelB v1.1はRaspbian Wheezyで使っている。設定法や上記Ubuntu mateの設定法は別途記事にする。(上記、Ubuntu mateやJessieとかも入れてみたが、やはり、木の実マークのWheezyが良いかも)
- 電灯制御に関する記事: https://www.samkear.com/hardware/control-power-outlets-wirelessly-raspberry-pi の通りにやった。
- ここではEteckcity という430MHzの無線のリモコンコンセントを使う。
- リモコン制御はSMKNという430MHzの送受信カードセットを使う。信号はRS232Cのような、調歩式の振幅変調(1,0)コーディングではなく、パルス幅(FM)コーディングなので、RaspberryPI等のGPIOを使うのが良さそう。
- 以下に書いたwiringPIライブラリを使って信号を入出力するバイナリがある。
- 送信機で押された無線コードを表示するRFSnifferを起動して、無線コード(10進6桁から7桁)を得る。
- codesendというアプリにコードを与えると無線送信する。
- このカードも大変安い。5個入りパックの無名ブランドはもっと安い。
- 以下にamazon.comでの値段を掲載する。
- 上記では、wiringPIというパッケージを使い、GPIO (RaspberryPIシリーズの入出力ポート)を制御している。
- GPIOポートの結線図:: https://projects.drogon.net/raspberry-pi/wiringpi/pins/
- 例題LED点滅: http://wiringpi.com/examples/blink/
- 上記の点滅を改造して3色LEDの点滅アプリ (blinkRGB) を作った。root(特権ユーザで実行する必要があるが、以下のようにつかう
- 自動点滅: 引数なし。以下のように点滅する。
- 所定点滅: (R,G,B) = で所定色を指定。(1,1,1) = 7が白を示す。4が赤、0が黒など。
- スイッチで電灯を点滅させたいので、Eteckcity から電線を引き出した。従来、TP-Link Smart Plug w/ Energy Monitoring http://amzn.to/2scgjzr からスイッチを引き出していたので、このプラグが入るジャックにして、コンセント部分を入れ替えて使えるようにした。
従来のTP Linkのもの
引き出した線が繋がる、壁スイッチ
改造作業。TP LinkもEteckCityも、もともとスイッチがあるので、そこから線を引き出すだけ。 左: 従来のTP Link, 右: EteckCityにつけた壁スイッチへのコネクタ。 - RaspberryPIへ外出先からのアクセス
- RaspberryPIは、192.168.のローカルLANからしかみえない。
- Broadband routerからsshポート(安全のためport番号は規定の22番とは全然違うものにしている)をポートマッピングしている、ゲートウェイのLinuxサーバ ホスト名: Linux02 がある。
- Linux02は No-IPのDynamicDNSサービス(有料。そうしないと更新が面倒)を使いホスト名を与えてある。無料だったminiDNSはサービスが打ち切られた。
- RaspberryPIのapache2, sshdに対して、Linux02でsshトンネルを掛けて、外部からアクセスしている。sshポートが特殊なうえ、rsaのprivate鍵がないとログインできないので、ハッキングに対する安全性は高いと思う。
- 電灯制御のweb pageを改造している。
- 設定部分のファイルをJSONにして分離。
- 部屋・電灯の名前、受信機がないスイッチ、つながっていない受信機などが分かるアノテーションをいれた
- 読み込み部分とtrigger部分を分離
- デバッグ用表示を追加: デバッガphpdbgを使おうとphp 5.6をコンパイルしてみた。php 5.6は、phpdbgが使えるまでには至らず。
- タイマー設定のJSONを読み込み表示。(末尾に写真をつける)
- formのradio buttonでのPOSTにしたが、いちいちhtmlを読み込むのは面倒なのでJavascript化したい。
- スイッチの状態で色を変え、また、現在の状態をJSON (or cookie) に保存したい。
- 肝心のタイマーのコード(多分PHP)を完成させる。
制御画面)
上記と違い、送信機にある全部の無線信号を表示させたもの。 |
記事のものをとりあえず動かした版、手でhtmlを改造してB1,B2,B3を追加。 |