ESP8266 で UDP からの受信に対応させます
IO 4 16 にLEDをつけています。
SSID ESP8266 パスワード 12345678 のwifiアクセスポイントとして起動します
接続後 iPhoneアプリで通常192.168.4.1 ポート 8888 でアクセスします
iPhone用のUDPアクセスアプリはこちらから
ソースコード
動画ダウンロード
#include
#include
WiFiUDP UDP;
unsigned int localPort = 8888;
const char* ssid = "ssid";
const char* password = "password";
const char *ap_ssid = "ESP8266";
const char *ap_password = "12345678";
char packetBuffer[255];
static const char *udpReturnAddr = "1.1.1.1";
static const int udpReturnPort = 8889;
void setup() {
Serial.begin(115200);
Serial.println(""); // to separate line
/*
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
*/
WiFi.mode(WIFI_AP); // モード設定
WiFi.softAP(ap_ssid, ap_password); // APのSSID・パスワード設定
IPAddress myIP = WiFi.softAPIP(); // APとしてのIPアドレスを取得。デフォルトは 192.168.4.1 ?
Serial.println("AP IP address: ");
Serial.println(myIP);
UDP.begin(localPort);
pinMode(4, OUTPUT);
pinMode(16, OUTPUT);
}
void loop()
{
int packetSize = UDP.parsePacket();
if (packetSize) {
int len = UDP.read(packetBuffer, packetSize);
//終端文字設定
if (len > 0) packetBuffer[len] = '\0';
Serial.print(UDP.remoteIP());
Serial.print(" / ");
Serial.println(packetBuffer);
digitalWrite(4,LOW);
digitalWrite(16,LOW);
String s;
s = packetBuffer;
if(s == "1"){
Serial.println(" get 1 ");
digitalWrite(4, HIGH);
}else if(s == "2"){
Serial.println(" get 2 ");
digitalWrite(16, HIGH);
}else{
digitalWrite(4,LOW);
digitalWrite(16,LOW);
}
UDP.beginPacket(udpReturnAddr, udpReturnPort);
UDP.write("ok");
UDP.endPacket();
}
delay(3000);
}