マトリックスLED
ESP8266(遠隔制御)
フルカラーLED
Arduino_IDE
Wifi Lチカ概要
Wifi マトリックスLED制御
ESP8266その他
ESP8266(Wifi機能付きマイコン)でIOT遠隔制御 その1
Wifi Lチカ概要(ESP8266を使用したIOT遠隔操作ことはじめ)
今回は自分で管理するHPサーバーに
保存されているテキストファイル内の文字列(8文字の値)
をESP-WROOM-02(ESP8266)開発ボードに
取り込ませ、その値に対応して
LEDを点灯又は消灯させたいと思います。
更新したテキストファイルをHPサーバーへ
アップロードさせて遠隔操作を行う算段です。
まず、このHPのTOPページ(http://hokusetsu.iinaa.net/)
直下にフォルダ「test」を作成
さらのその下に「test001」「test002」「test003」・・・
が作成されており、テキストファイル「TEST.txt」が
「test001」〜「test009」の中に
それぞれ格納されていることが前提です。
ダウンロードできる資料の参考スケッチをほぼそのまま使用できます。
この「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で
可能となるところまで設定して下さい。
ESP-WROOM-02(ESP8266)のS/W開発をArduino IDEで
行えるようにするための手順を以下に記述します。
初めてESP8266(WROOM-02)を使用する方は参考にして下さい。
IDE ダウンロード〜インストールまで
Arduino IDE ESP8266用初期設定の解説
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()
文字数を返します。
とりあえず「test001」フォルダ内のTEST.txt内の
文字列の内、先頭から3文字までの数値「101」を順に
IO_13、IO_12、IO_14
に対応させLEDをON、OFFさせることにしました。
ここではLEDはLアクティブ(LでON)
有意(ON)を1と定義して
文字が1(有意)⇒LOW⇒(LEDがON)とします。
文字が0⇒HIGH⇒(LEDがOFF)
とします。
先頭の文字が「1」の場合はIO_13が「LOW」となり
写真で左端のLEDが点灯する制御を行います。
写真の青線はESP8266開発基板から引き出した3.3Vで
LEDと制限抵抗(300Ω〜1k:写真は1kでかなり暗め)を
直列に接続し各I/Oポートに接続しています。
ダウンロードいただいた資料で
「ESP8266 Wifi Cliant_hok006.txt」
は3個のLEDを制御するためのスケッチとなり、
制御に使用するIOポートは前述の通り
IO_13、IO_12、IO_14となります。
「点灯、消灯、点灯」となることを確認して下さい。
3個のLEDを制御できたらいよいよ最終目標です。
下記のように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 = "/test/test003/TEST.txt"; //格納フォルダ、ファイル名を・・
フォルダ名を「test003」⇒「test001」「test002」
「test004」〜「test009」
に変更して再ロディングして
点灯状態が変われば読み込みは成功です。
「test001」に格納されているTEST.txtは「10100000」固定
「test002」に格納されているTEST.txtは「????????」実験用(可変)
「test003」に格納されているTEST.txtは「01010101」固定
「test004」に格納されているTEST.txtは「10101010」固定
「test005」に格納されているTEST.txtは「10000000」固定
「test006」に格納されているTEST.txtは「01000000」固定
「test007」に格納されているTEST.txtは「00100000」固定
「test008」に格納されているTEST.txtは「11111111」固定
「test009」に格納されているTEST.txtは「00000000」固定
「test002」に格納されているTEST.txtは実験用ですので
時々変更しています
「test002」のTEST.txtを開く
TOPページのURL末尾に「/test/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の点灯状態が変化するか
試してみてください。
なお流用する場合はこちらも参照して下さい。
注意事項等を記載しておきます。
Wifi Lチカ概要
Wifi マトリックスLED制御
ESP8266その他
(最終更新 2018-09-27)