2019年1月1日火曜日

秋月のESP-WROOM-02開発キットを使う~APモードでwifiLチカ編~

前回(秋月のESP-WROOM-02開発キットを使う~ArduinoスケッチでLチカ編~)ではArduinoスケッチで普通にLチカさせました。
今回はついにWi-Fi経由でLチカさせてみます。
といっても、アクセスポイントモードの開発キットと端末(iPhone)をWi-Fiで直につないで、URLにアクセスするとLEDが光る、というようなものです。
開発キットの電波が届く範囲でしかLチカ操作はできませんが、無線でLEDをONOFFすることを体感できます。
端末⇔開発キットで直接Wi-Fiで繋がります。





必要部品・部品の配線は前回のLチカと全く同じです。
手っ取り早くとにかくWiFiでLチカしたい人は手順⑥からスケッチをコピペしてはじめてください。

①サンプルスケッチを開く

Arduino IDEのファイル→スケッチの例→ESP8266WiFi→WiFiAccessPointをクリックして、サンプルスケッチを開きます。
サンプルスケッチは上書き保存ができないので、ファイル→名前を付けて保存で、好きな名前を付けてスケッチを保存しておきます。
もしサンプルが見つからなければ、以下の記述をコピペしてスケッチを作製してください。

/* Create a WiFi access point and provide a web server on it. */

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "ESPap";
const char *password = "thereisnospoon";

ESP8266WebServer server(80);

/* Just a little test message.  Go to http://192.168.4.1 in a web browser
   connected to this access point to see it.
*/
void handleRoot() {
  server.send(200, "text/html", "<h1>You are connected</h1>");
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  Serial.print("Configuring access point...");
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssid, password);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.on("/", handleRoot);
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  server.handleClient();
}

上記のサンプルスケッチは、開発キットにスケッチを書き込んだ後、スマホやPCなどの端末から、ESPapというSSIDのネットワークにthereisnospoonというパスワードでアクセス可能になり、ESPapに接続後、webブラウザのURL欄に192.168.4.1と入力してアクセスすると端末の画面にYou are connectedと表示されるスケッチです。

ESP8266WebServer server(80);という記述でポート番号80でサーバーをインスタンスし、 WiFi.softAP(ssid, password);という記述でESP8266をAPモードに設定しています。
server.on("/", handleRoot);で、192.168.4.1/にアクセスがあった時handleRootを実行させます。
server.begin();でサーバーが動作し始め、server.handleClient();の内部で端末の接続等を行っています。
handleRoot内のserver.send(200, "text/html", "<h1>You are connected</h1>");では、接続成功(ステータスコード200番)とhtmlのテキスト「You are connected」をレスポンスとして返します。
Serial.~はシリアルモニタにメッセージを表示するための記述です。LEDをAPモードで光らせるのに直接必要はないコードなので、Serial.~の部分は全部消しても構いません。


②SSIDとパスワードを書き換える

まずは、端末からアクセスするときのSSIDとパスワードの部分を変更します。そのままでもいいですが分かりやすくするため、
const char *ssid = "ESPap"; → const char *ssid = "wroom02";
const char *password = "thereisnospoon"; → const char *password = "01234567";
に変更します。

③指定のURLにアクセスしたときの動作を記述する

void setup() {
の上あたりに、指定URLにアクセスしたときの動作を記述します。
以下の記述を追加してください。

void On(){
  server.send(200, "text/html", "<h1>ON</h1>");
  digitalWrite(13,HIGH);
}

void Off(){
  server.send(200, "text/html", "<h1>OFF</h1>");
  digitalWrite(13,LOW);
}

Onはserver.send(200, "text/html", "<h1>ON</h1>");で画面にONと表示した後にdigitalWrite(13,HIGH);で開発キットの13番ピンをHIGHにします。
同様にOffは画面にOFFと表示した後に13番ピンをLOWにします。

④URLと動作を関連付ける

server.on("/", handleRoot);の上か下あたりに以下の記述を追加してください

server.on("/on/", On);
server.on("/off/", Off);

server.on("/on/", On);で、192.168.4.1/on/にアクセスがあった時にOnが実行され、同様にserver.on("/off/", Off);で192.168.4.1/off/にアクセスがあった時にOffが実行されるようになります。

⑤LEDピンを出力にする

pinMode(13,OUTPUT);
という記述をvoid setup() {}内に記述します。
これで開発キットの13番ピンは出力になります。
スケッチはこれで完成です。

⑥開発キットにスケッチを書き込む

USBケーブルで開発キットを接続してArduino IDEの→マークをクリックしてスケッチを書き込みます。書き込む前に開発キットのPGM押す→RST押す→RST離す→PGM離すの手順でスケッチ書き込みモードにするのを忘れずに。
以下に⑤までの手順で完成したスケッチを記述します。

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "wroom02";
const char *password = "01234567";

ESP8266WebServer server(80);

/* Just a little test message.  Go to http://192.168.4.1 in a web browser
   connected to this access point to see it.
*/
void handleRoot() {
  server.send(200, "text/html", "<h1>You are connected</h1>");
}

void On(){
  server.send(200, "text/html", "<h1>ON</h1>");
  digitalWrite(13,HIGH);
}

void Off(){
  server.send(200, "text/html", "<h1>OFF</h1>");
  digitalWrite(13,LOW);
}

void setup() {
  delay(1000);
  pinMode(13,OUTPUT);
  Serial.begin(115200);
  Serial.println();
  Serial.print("Configuring access point...");
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssid, password);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.on("/", handleRoot);
  server.on("/on/", On);
  server.on("/off/", Off);
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  server.handleClient();
}

⑦端末から開発キットのAPに接続する

PCやスマホなどの端末と開発キットをつなげます。
以下はiPhoneでの例ですが基本的にどの端末でも手順は同じです。
Wi-Fiの電波を検索し、SSIDがwroom02に接続します。
パスワードには「01234567」を入力して接続します。

⑧webブラウザから指定のURLにアクセスしてLチカさせる

iPhoneなのでSafariから指定URLにアクセスします。
URLに192.168.4.1/on/を入力してアクセスします。
すると画面にONと表示されて、開発キットに接続されたLEDが光ります。
次にLEDを消しましょう。
同様にURLに192.168.4.1/off/を入力してアクセスします。
すると、画面にOFFと表示されて、開発キットに接続されたLEDが消えます。
これでAPモードでLチカができました!

開発キットにつないでいる間は端末はインターネットに接続されていないので、他のWebサイトにはアクセスできなくなります。Lチカが確認できたら端末のwroom02の設定を削除しておきましょう。

次回(秋月のESP-WROOM-02開発キットを使う~STAモードでwifiLチカ編~)はSTAモードでLチカをします。
STAモードのおかげで無線LANルーターを経由して接続が可能になり、開発キットにつないでいる間もインターネットが使えるようになります。

0 件のコメント:

コメントを投稿