今回はついに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";
const char *ssid = "ESPap"; → const char *ssid = "wroom02";
const char *password = "thereisnospoon"; → const char *password = "01234567";
に変更します。
の上あたりに、指定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);
}
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が実行されるようになります。
という記述をvoid setup() {}内に記述します。
これで開発キットの13番ピンは出力になります。
スケッチはこれで完成です。
以下に⑤までの手順で完成したスケッチを記述します。
#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();
}
以下はiPhoneでの例ですが基本的にどの端末でも手順は同じです。
Wi-Fiの電波を検索し、SSIDがwroom02に接続します。
パスワードには「01234567」を入力して接続します。
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ルーターを経由して接続が可能になり、開発キットにつないでいる間もインターネットが使えるようになります。
③指定の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 件のコメント:
コメントを投稿