ESP-WROOM-02でMicroPythonを使い開発(Wi-Fi編)

〔ESP32-WROOM-32E〕 〔マイコンのトップに戻る〕
[準備編] [module編] [GPIO編] [通信編] [ファイル編] [OLED編]   [メール編] [並行処理編] [色々編]


いよいよ”ESP-WROOM-02”と言えばネットワークですよね、チョットぉやってみます。

・対応WiFiプロトコル:802.11b/g/n(2.4GHz)
・Wi-Fiモード:station/softAP/SoftAP+station
・セキュリティ:WPA/WPA2
・暗号化:WEP/TKIP/AES

ESP8266のチュートリアルに下記の様に書いて有りました。
「新規のインストールとブートの後、デバイスは接続可能な WiFi アクセスポイント(AP)とし
 て設定されます。ESSID は、"MicroPython-xxxxxx" という形式です。
 x はデバイスのMAC アドレスの一部に置き換えられます(毎回同じで、全ての ESP8266 チップでは
 おそらく同じです)。WiFi のパスワードは "micropythoN" です(大文字の N に注意してください)。
 一度ネットワークに接続すると、そのIPアドレスは "192.168.4.1" になります。」

PCでアクセスポイントを見る
 なのでぇ、パソコンのアクセスポイントを見てみた
 おお、あるではないかぃ!
 ならぁ、"BBUser"から"MicroPython-14c2b9"へ
 アクセスポイントを切り替えてみます。
 そしてぇ、"ping"をして見ましょっとぉ。

PCでpingの操作
んん、チャンとぉ居ますね!

《サーバー》

ESP-WROOM-02の電源を入れたらサーバーで立ち上がっているので先ずはこれから実験します。
ESP8266の"ネットワークの基礎"はこのページ、"ネットワーク - TCPソケット"はこのページです。
こちらのe-DIYで行こう!さんサイト"MicroPythonのWiFi設定を整える"も参照しましょう。
socketの話は、@__init__さんのこちらのページ(但しPython版)です。

ここの"5.3. シンプルなHTTPサーバー"をそのまま動作させました。
動作は接続してきたクライアントに、自身のピン情報を簡単なHTMLページで返すと言う動きをします。

@ ESP-WROOM-02ボードをUSBでPCに繋ぎます。
A "PyCharm"を起動させ、こちらのCを操作する必要が有ります。(起動時最初のみ設定)
B "main.py"を新規登録してページのコードを"main.py"に貼り付けましょう。
  (登録済みなら上書き貼り付けでも行いましょう)
C ESP8266に書き込みます
  左側プロジェクトウインドウから"main.py"の文字を右クリックをして、[実行(U)'Flash main.py']を
  クリックします。
D "MicroPython-14c2b9"へPCのアクセスポイントを切り替えます。
E ブラウザーを開き[192.168.4.1]とURL(アドレス)バーに入力します。

ブラウザーの画面
何とも簡単に動いちゃいました。
Pin(0)は3.3V、Pin(2)は3.3V、Pin(15)はGNDに配線されているので正解ですが、
後のピンはどこも配線されていないので"不定"ですがぁ"HIGH"になっています。
尚、GNDに配線すれば"0"となる事でしょう。

ファイルのHTMLを返す

上記の動作はコード内に記述したHTMLデータを返していました。
今度は別ファイルに記述したHTMLデータを返す動作を実験します。

@ "server.zip"をダウンロードし解凍します。
A "hello.html"と"GPIO.html"と"main.py"を"PyCharm"のプロジェクトディレクトリ
  (ここでは"espTest"を作成している)へ移動させます。
B ESP-WROOM-02ボードをUSBでPCに繋ぎます。
C "PyCharm"を起動させ、作成してあるプロジェクトを開きましょう。
  こちらのCを操作する必要が有ります。(起動時最初のみ設定)
D ESP8266に書き込みます
  ・左側プロジェクトウインドウから"hello.html"の文字を右クリックをし、
   [実行(U)'Flash hello.html']を選んでクリックします。
  ・左側プロジェクトウインドウから"GPIO.html"の文字を右クリックをし、
   [実行(U)'Flash GPIO.html']を選んでクリックします。
  ・左側プロジェクトウインドウから"main.py"の文字を右クリックをして、
   [実行(U)'Flash main.py']を選んでクリックします。
E "MicroPython-14c2b9"へPCのアクセスポイントを切り替えます。

F ブラウザーを開き[192.168.4.1/hello.html]とURL(アドレス)バーに入力します。

hello.htmlのブラウザ画面
こんな感じです。

G 次ぃ、[192.168.4.1/hello.htm]とURL(アドレス)バーに入力します。
  (ファイル名をワザと間違ってみましょう。)

ファイル無しのブラウザ画面
"hello.htm"は無いよと注意を受けます。

H 次ぃ、[192.168.4.1/GPIO.htm]とURL(アドレス)バーに入力します。

GPIO.htmlのブラウザ画面
この画面は5秒毎にサーバーへ表示更新要求を永遠に出します。
ここではMy ESP-WROOM-02ボードに内蔵された"LED"と"SW"を使っています、
なのでぇ、自分のボード用に配線やスクリプトを変更しましょう。
(最初の準備編ページからここまで学んで来た読者様なら簡単な事ですね)

I 5秒が表示更新なのでそのタイミングかスイッチを押していれば[ ON ]と表示が変わるでしょう。
  [LED ON] ボタンを押せば、ボード上のLEDが点灯するでしょう。

尚、EとFの間でシリアル端末を立ち上げて置けば、トレース表示が下記画面の如く表示されます。
(シリアル端末(TeraTerm)でREPLを起動させる方法はここです)

トレース画面
こんな感じです。

TELNET?ふう

いわゆるネットでシリアル通信ふうな事をやってみます、遠隔操作等もやってみます。

@ "telnet.zip"をダウンロードし解凍します。
A "main.py"を"PyCharm"のプロジェクトディレクトリ(ここでは"espTest"を作成している)へ
  移動させます。
B ESP-WROOM-02ボードをUSBでPCに繋ぎます。
C "PyCharm"を起動させ、作成してあるプロジェクトを開きましょう。
  こちらのCを操作する必要が有ります。(起動時最初のみ設定)
D ESP8266に書き込みます
  ・左側プロジェクトウインドウから"main.py"の文字を右クリックをして、
   [実行(U)'Flash main.py']を選んでクリックします。
E "MicroPython-14c2b9"へPCのアクセスポイントを切り替えます。
F "PyCharm"の[ツール]->[MicroPython]->[MicroPython REPL]を起動し、
  [CTRL]+[D]キーを押してスクリプトを実行します。

G "TeraTerm"で説明します、起動しましょう。(クライアント側)

TeraTerm起動時の画面
"ホスト(T):"に[192.168.4.1]と入力します。
TCPポート番号を[80]と入力します。
サービスを"Telnet"にチェックを入れて[OK]ボタンをクリックします。

H "ESP8266"からメッセージが届きます、”端末の設定” を行います。

TeraTermの設定
"ローカルエコー(L)"にチェックを入れます。
"改行コード"の"送信(M):"を”CR+LF”に設定して、[OK]ボタンをクリックします。

I セッションを始めましょう。

セッションの例
セッションの例です、端末から入力した文字メッセージが"REPL"に表示されています。
メッセージが"command"であれば処理されます。
現状は、"GPIO0"と"GPIO16"のみで、"GPIO0"ならピンの状態を返します
"GPIO16"ならLEDをON・OFFします
セッションを終了させる場合は[ENTER]キーのみ押しましょう。

 

《クライアント》

今度は、ステーション用(ESP8266がルータに接続する場合)としてクライアント側を実験します。

ここの"5.1. スターウォーズのテキストアニメーション"を動作させてみます。
がぁ、しかしここの記事だけでは動作しません、Wi-Hiに接続しないとダメです、その記事はここです。
動作する様にしたスクリプトはここからダウンロードしましょう。
但し、このサンプルは実行を中断させても"Wi-Hi"に接続したままとなります。

@ ESP-WROOM-02ボードをUSBでPCに繋ぎます。
A "PyCharm"を起動させ、こちらのCを操作する必要が有ります。(起動時最初のみ設定)
B "main.py"を新規登録してダウンロードしたスクリプトを"main.py"に貼り付けましょう。
  (登録済みなら上書き貼り付けでも行いましょう)
C コード内に記述している"ESSID"/"Password"は自分ちのルータ等のアクセスポイントに変更します
D ESP8266に書き込みます
  左側プロジェクトウインドウから"main.py"の文字を右クリックをし、[実行(U)'Flash main.py']を
  選んでクリックします。
E "PyCharm"の[ツール]->[MicroPython]->[MicroPython REPL]を起動し、
  [CTRL]+[D]キーを押してスクリプトを実行します。

REPLでの動作風景画面
こ〜んな感じですがぁ、アニメーションが流れて残念侍。
終わるには [CTRL]+[C]キーを押します。


※ ソケットと WiFi バッファのオーバーフロー”と題した既知の問題がある様です、
  ぜひ読んでおきましょう。

 

《WebREPL》

WebREPL(Webブラウザ経由でアクセス可能なREPL)はESP8266ポートで使用可能な実験的な機能です。
らしい、チョットぉやってみます。
尚、WebREPLについては、ここここを参照しましょう。

@ 先ずは、GitHubに有る、"webrepl.html"をダウンロードして置きます。
  或いは、これを利用します。
A ESP-WROOM-02ボードをUSBでPCに繋ぎます。
B シリアル端末で"REPL"を起動します、又は、"PyCharm"の"REPL"を起動します。
C ”>>> import webrepl_setup”と入力します、後は画面の指示にしたがいます。
  再起動後、接続可能になります。

REPLでWebREPL設定画面
有効にするので""を入力。
パスワードを入力。
再起動(ESP8266の事ですよ)を行うので""を入力
次からはこの操作はいりません、ESPボードの接続を切ってもこの設定は保存されています
操作を行う時は"無効にする"、"パスワードの変更時"です。

D 次は、@の何方か起動。
E "MicroPython-14c2b9"へPCのアクセスポイントを切り替えます。
F [Connect]ボタンをクリックして接続します。
WebREPLの接続風景画面
パスワードを入力します。

  接続できない場合は、シリアル"REPL"を起動して
  >>> import webrepl
  >>> webrepl.start()
  と入力しましょう。

  ここでぇ、おもろいのはシリアルREPLとシンクロして両方が表示を行う事
  だからぁ、片方に入力するともう片方も同じ様に表示動作しています。
  注意はぁ、シリアルREPL側を終了させるとぉWebREPLもDisconnectする事です
  WebREPLはDisconnectしてもシリアルREPL側は生きている事で〜すぅ。
  勿論、シリアルREPLは起動していなくてもWebREPLはConnect可能です。
  んん、利用価値あるのでしょうか?、あ、携帯で動作する"webrepl.html"有ればねぇ。
  ってぇ、おいちゃんは携帯持ってないのでぇ解んな〜い、
  実はなのでぇ携帯アプリを作れないのでしたぁ....

WebREPLのファイル読み書き画面
あ、そうそうESP8266へのファイル読み書きが
できる様ですね。(未実験)




[OLED編へ] [ページ上へ] [メール編へ]


【きむ茶工房ガレージハウス】
Copyright (C) 2006-2021 Shigehiro Kimura All Rights Reserved.