前提・実現したいこと
お世話になります!
スマホ1台で、WiFiを使用し直接2台のesp8266それぞれのLEDを点灯と消灯をさせてみたいです。
具体的には、
esp82661台をAP(Webサーバー)、1台をSTAとして、APのhtml上に2つのボタンを用意し、
スマホでそのボタンを押すことでLEDそれぞれを制御したいです。
現状AのLED(親機)は制御できているのですがBのLED(子機)ができておりません。
シリアルを出力したところ親機側にて子機との通信ができておりません。。
アドバイスをいただきたいです!
### 該当のソースコード(追記) 以下ソース /*親機*/ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> const char *ssid = "LED"; const char *password = "123456789"; //子機 const IPAddress ip(192, 168, 4, 3); //子機 const IPAddress subnet(255, 255, 255, 0); boolean ALED = false; boolean BLED = false; ESP8266WebServer server(80); WiFiClient client; String form ="<html>" "<head><meta name=viewport content=width=100></head>" "<form action=A_LED><input type=submit value=A></form>" "<form action=B_LED><input type=submit value=B></form>" "</html>"; void Atika(); void A_LED(); void Btika(); void B_LED(); void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); WiFi.begin("BLED","123456789"); server.begin(); server.on("/", handleRoot); server.on("/A_LED",Atika); server.on("/B_LED",Btika); Serial.println("HTTP server started"); pinMode(4, OUTPUT); } void loop() { server.handleClient(); } void handleRoot(){ server.send(200, "text/html", form); } void Atika(){ A_LED(); server.send(200, "text/html", form); } void A_LED(){ ALED = !ALED; digitalWrite(4, ALED); } void Btika(){ B_LED(); server.send(200, "text/html", form); } void B_LED(){ if(client.connect(ip,80))Serial.println("success"); if(client.connected())Serial.println("success"); BLED = !BLED; client.write(BLED); delay(1000); } /*子機*/ #include <ESP8266WiFi.h> const char* ssid = "BLED"; const char* password = "123456789"; const IPAddress ip(192,168,4,3); const IPAddress subnet(255,255,255,0); WiFiServer server(80); boolean BLED=false; void B_tika(); void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_AP); delay(100); WiFi.softAP(ssid,password); WiFi.softAPConfig(ip,ip,subnet); IPAddress myIP = WiFi.softAPIP(); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(myIP); pinMode(4, OUTPUT); digitalWrite(4, LOW); server.begin(); } void loop() { B_tika(); } void B_tika(){ WiFiClient client = server.available(); client.connected(); BLED=client.read(); digitalWrite(4,BLED); }
詳細
補足情報(FW/ツールのバージョンなど)
Arduino 1.8.16