マトリックスLEDのWifi遠隔制御  Wifi Lチカ概要  マトリックスLEDの制御
Wifi Lチカ概要(ESP8266を使用したIOT遠隔操作ことはじめ)

マトリックスLEDをWifiで遠隔制御する前に
まずは8個のLEDを遠隔制御してみました。
自分で管理するHPサーバーに
保存されているテキストファイル内の文字列(8文字の値)
をESP-WROOM-02(ESP8266)開発ボードに
取り込ませ、その値に対応して
LEDを点灯又は消灯させます。



更新したテキストファイルをHPサーバーへ
アップロードさせて遠隔操作を行う算段です。
例えばHPのTOPページ(http://hogehoge.net/)
の直下にフォルダ「test001」「test002」「test003」・・・
が作成されており
テキストファイル「TEST.txt」がこれらの各フォルダ内に
それぞれ格納されていることが前提です。
ダウンロードできる資料の参考スケッチをほぼそのまま使用できます。
この「TEST.txt」内の文字列(8文字)
(「10100000」「10101010」「01010101」「11111111」「00000000」等)、
をESP-WROOM-02に取得させ、
ESP-WROOM-02のI/Oポートに接続した
8個のLEDの点灯パターンを
変化させるのことが第一目標です。


なおESP-WROOM-02の開発環境はArduino IDEを使用します。
ESP8266へのローディングがArduino IDEで
可能となるところまで設定して下さい。
Arduino IDEのESP8266用設定完了後
IDEで「ファイル」⇒「新規作成」⇒一旦全部消去した後
下記からダウンロードしたテキストファイル内の
ESP8266 Wifi Cliant_hok001.txt(参考スケッチ)をすべてコピペし
SSIDとpass(パスワード)を変更していただき
ESP8266に書き込んでいただき
シリアルモニターで8桁の数値
「10100000」の8文字が
表示されれば第一ステップは完了です。

参考スケッチです
ESP8266参考スケッチをダウンロード
値が一致しない場合は下記を閲覧いただき一致するか確認して下さい。
TEST.txtを開く

※エラーがでたらCOMポートを再確認して下さい。




さて最終的には「10100000」を取得した場合であれば
8個のLEDを「点灯、消灯、点灯、消灯、消灯、消灯、消灯、消灯」
としたいわけですが、
問題はシリアルモニタに表示された数値(文字列)をどのように取り扱うかでした。
シリアルモニタに表示される値の中から必要な文字列のみを変数に取り込めれば
リモート制御(PC⇒ESP8266一方通行)が可能になります。
文字列の処理は下記のページを参考にすることにしました
Arduino String

下記@Aを使用しました

@string.charAt(n)
文字列の先頭からn+1番目の文字を返します。
となっていますが
ESP8266において実際はn番目の文字を返しているようです。

Astring.length()
文字数を返します。


下記のように8個のLEDを制御してみます。


「ESP8266 Wifi Cliant_hok007.txt」
は8個LEDを制御するためのスケッチとなり、
IO_0、IO_2、IO_13、IO_12、IO_14、IO_16、IO_5、IO_4
の順にLEDを接続しました。

このスケッチでは「test003」フォルダを参照するので
「01010101」を取得することとなりLEDは
「消灯、点灯、消灯、消灯、消灯、消灯、消灯、点灯」となります。

ESP8266参考スケッチをダウンロード

参考スケッチの下記行の
SSIDとPASSを入力して下さい
const char* ssid = "SSIDを入力";
const char* password = "PASSを入力";

また御自身のHPがある場合は
下記行のURLをあなたのHPのURLに変更して使用して下さい。
const char* host = "hokusetsu.iinaa.net"; //URLをあなたの・・


残念ながらご自身のHPを持ってない場合は
私のHPの情報をそのまま取得して下さい。
ただし、私のHPへはアップロードできませんので
データの更新はできません。

代わりに参考スケッチの以下の箇所を変更し
参照するデータが変われば
LEDの点灯状態が変わることを体験して下さい。

String url = "/test003/TEST.txt"; //格納フォルダ、ファイル名を・・

フォルダ名を「test003」⇒「test001」「test002」
「test004」〜「test009」
に変更して再ロディングして
点灯状態が変われば読み込みは成功です。

各フォルダのデータを表にすると以下の通りです。
サブフォルダ TEST.txtの値
test001 10100000
test002 不定
test003 01010101
test004 10101010
test005 10000000
test006 01000000
test007 00100000
test008 11111111
test009 00000000



「test002」に格納されているTEST.txtは実験用ですので
時々変更しています
「test002」のTEST.txtを開く


さてユニバーサル基板上へのジャンパー配線が面倒だったので
ベース基板を作成しましたのでよろしければご利用下さい。

ベース基板の回路図はダウンロードできる資料の中に含めています。
動作保障はできませんが参考にして下さい。


スイッチサイエンスさんから購入できるWROOM-02開発ボード
と74HCT541とパスコン(0.1uF)、LED、制限抵抗、
電源供給用USBコネクタを実装するのが簡単です。
なおWifi Lチカを行う時はJP1は短絡させて使用します。


またソケットの位置をずらして実装することにより
スイッチサイエンスさんから購入できるWROOM-02
ピッチ変換基板フル版にも
対応しておりますが実装部品が多くなります。
またロディング環境を外部に別途準備する必要があります。
ローディング環境を使いまわす前提となりますが
勉強会を開催するのに基板を数組以上必要な場合は
材料コストを若干抑えることができます。


さて実際に遠隔操作を行うためには、
データ(テキストファイル)をHPサーバへ
アップロードする作業が必要となります。
泥臭い方法ではありますが

@テキストファイルを修正
AHPサーバーへアップロード
の手順で遠隔操作を行います。
手動でファイルを編集して
FFFTP等でアップロードしても良いのですが
少しだけ作業をスマートにするため
Excel VBAでテキストファイルを加工してアップロード
するマクロを作成しました。

Excel VBAだけではFTPサーバーへの
アップロードはできないため
BASP21を使用します。

BASP21のダウンロードはこちらからできます

BASP21の参考情報

※重要な注意点があるのでこちらも参照しました。(もっと早く見ていれば・・・)


テキストファイルを加工するとこまでは簡単にできたのですが
アップロードに必要な「BASP21」のインストールが
うまくいかなっかたため長らく作業を中断していました。
どうもリリースされている特定のバージョンしか
インストールできないことが下記ページでわかりました。
こちらを参考にしました。

「BASP21-2003-0211.exe」をインストールしたところ
うまくいきました。
ちなみに当方の環境はWin7、OFFICEは2003となります。

テキストファイルの編集とアップロードを
Excelのマクロ(ユーザーフォーム上)で行います。


「ファイルに反映」ボタンはフォームの設定状態を
テキストファイルに反映するためのボタンです。
BASP21のインストールがうまくかいかなかったため
アップロード操作と切り離す必要があり
「アップロード」ボタンと別に設けたものです。
2ステップの操作としていたのですが
BASP21のインストールができたので
最終的には統合しようと思います。
もちろん双方のボタンを廃止し
OptionButtonの設定を変更するだけで
ファイルへ反映+アップロードとすることも
可能です。



1点セキュリティ面の注意点があります。
アップロードするマクロには
FTPサーバーへのパスワードが必要になります。
サンプルコードのように
VBAのコードにパスワードを直接入力した場合
FFFTPで一括アップロードの対象となる
サブフォルダー内に、このマクロブックを置いてしまうと
一括アップロードを行うと当然のことですが
マクロブックもサーバーにアップロードされてします。
サーバーへアップロードしてしまうと
(特にHPにリンクされていなくても)
ファイル名と置き場さえわかれば簡単に
手入力で第三者がダウンロードできてしまいます。
第三者にマクロブックが渡れば
FTPサーバーのパスワードがもれる可能性があります。
したがってアップロード用マクロブックは
一括アップロード対象外の
ローカルフォルダーに置くか
VBAのソースにパスワードを記載しない等
の自己防衛が必要です。
例えばパスワードをアップロード対象外の
別ファイルに管理させ
このファイルの値を参照させたり
マクロブック起動時に1回だけ
アップロード用パスワードの入力を
させる手順を準備する等
セキユリティ面を考慮して
マクロブックの作成が必要となります。
マクロブックの起動やVBAソース閲覧に
パスワードをかける方法もありますが
解除方法を知っている人の手に渡れば危険です
情報源(マクロブック自体)を渡さないのが最大の
対策と思いますので・・・



前述のことを理解できない方や
手違いでうっかりが心配な場合は
ツールの作成が困難な方はアップロードは
FFFTPで行って下さい。
手動でテキストファイルを編集+保存した後で
FFFTPを使用してアップロードします。
ローカルとサーバーのフォルダをそれぞれ有効とし
「TEST.txt」のみをアップロードさせます。


是非とも御自身のHPを作成して
@テキストファイルの更新
Aテキストファイルのアップロード
を行いLEDの点灯状態が変化するか
試してみてください。

なお流用する場合はこちらも参照して下さい。
注意事項等を記載しておきます。





マトリックスLEDのWifi遠隔制御  Wifi Lチカ概要  マトリックスLEDの制御



(最終更新 2018-05-02)