■目的:
携帯などでロボットカーの運転をコントロールために、
ESP8266のAPモードで、コントロール用サイトを構築する。
ソースは下記通り:
■プログラム:
#include <ESP8266WiFi.h>#include <ESP8266WebServer.h>#define STATUS_FORWORD 1#define STATUS_BACK 2#define STATUS_LEFT 3#define STATUS_RIGHT 4#define STATUS_STOP 5const char *ssid = "phoenix"; // WIFI名const char *password = "12345678"; // パスワードIPAddress local_ip(192,168,1,1);IPAddress gateway(192,168,1,1);IPAddress subnet(255,255,255,0);ESP8266WebServer server(8090);int status = 0;void setup() {Serial.begin(115200);WiFi.softAP(ssid, password); // APモードWiFi.softAPConfig(local_ip, gateway, subnet);Serial.print("Access Point: ");Serial.println(ssid);Serial.print("IP address: ");Serial.println(WiFi.softAPIP());delay(100);server.on("/", handle_OnConnect);server.on("/forword", handle_forword);server.on("/back", handle_back);server.on("/left", handle_left);server.on("/right", handle_right);server.on("/stop", handle_stop);server.begin();Serial.println("HTTP server started");}void loop() {server.handleClient();op();delay(100);}void op() {switch (status) {case STATUS_FORWORD:Serial.println("forword");break;case STATUS_BACK:Serial.println("back");break;case STATUS_LEFT:Serial.println("left");break;case STATUS_RIGHT:Serial.println("right");break;case STATUS_STOP:Serial.println("stop");break;deault:break;}}void handle_OnConnect() {server.send(200, "text/html", SendHTML());}void handle_forword() {status = STATUS_FORWORD;handle_OnConnect();}void handle_back() {status = STATUS_BACK;handle_OnConnect();}void handle_left() {status = STATUS_LEFT;handle_OnConnect();}void handle_right() {status = STATUS_RIGHT;handle_OnConnect();}void handle_stop() {status = STATUS_STOP;handle_OnConnect();}String SendHTML() {String ptr = "<!DOCTYPE html> <html>\n";ptr += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";ptr +="<title>Robot Car Controller</title>\n";ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";ptr +=".button {display: block;width: 120px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";ptr +=".button-on {background-color: #1abc9c;}\n";ptr +=".button-on:active {background-color: #16a085;}\n";ptr +=".button-off {background-color: #34495e;}\n";ptr +=".button-off:active {background-color: #2c3e50;}\n";ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";ptr +="</style>\n";ptr +="</head>\n";ptr +="<body>\n";ptr +="<a class=\"button button-on\" href=\"/forword\">FORWORD</a>\n";ptr +="<a class=\"button button-on\" href=\"/back\">BACK</a>\n";ptr +="<a class=\"button button-on\" href=\"/left\">LEFT</a>\n";ptr +="<a class=\"button button-on\" href=\"/right\">RIGHT</a>\n";ptr +="<a class=\"button button-on\" href=\"/stop\">STOP</a>\n";ptr +="</body>\n";ptr +="</html>\n";return ptr;}
0 件のコメント:
コメントを投稿