tamox.net |
|
ESP32 published on 2024/Aug/16 | |
ESP32を用いて無線スイッチを作成 WiFi UDP通信を適用 リレーでAC100Vを制御 ★★★ スイッチの切り忘れ防止のため、タクトスイッチに切り替えタイマー動作 |
|
|
|
![]() |
|
受信器(親機)の回路図 | |
|
|
![]() 送信器(子機)の回路図 |
|
|
|
IDE code | |
//skech_aug16a 受信器側コード #include <WiFi.h> #include <WiFiUdp.h> const char ssid[] = "WS202"; // SSID const char password[] = "0123456789"; // password const int localPort = 10000; // ポート番号 const IPAddress ip(192, 168, 10, 202); // ServerのIPアドレス const IPAddress gateway(192, 168, 10, 202); // gatewayのIPアドレス const IPAddress subnet(255, 255, 255, 0); // サブネットマスク WiFiUDP udp; static int cnt = 0; void setup() { Serial.begin(115200); WiFi.softAP(ssid, password); delay(100); WiFi.softAPConfig(ip, gateway, subnet); Serial.println("Starting UDP"); udp.begin(localPort); pinMode(23, OUTPUT); } void loop() { if(udp.parsePacket()){ cnt = 0; char i = udp.read(); if (i == 'L') { digitalWrite(23, LOW); } if (i == 'H') { digitalWrite(23, HIGH); } } cnt++; Serial.println(cnt,DEC); if ( cnt > 900){ //900:15min digitalWrite(23, LOW); } delay(1000); } |
|
//--------------------------------------------- //skech_aug16b 送信器側コード #include <WiFi.h> #include <WiFiUdp.h> const char ssid[] = "WS202"; // SSID const char password[] = "0123456789"; // password static WiFiUDP wifiUdp; static const char *kRemoteIpadr = "192.168.10.202"; static const int kRmoteUdpPort = 10000; static const int kLocalPort = 5000; bool WiFi_FLG; static int cnt = 0; void setup() { int i; Serial.begin(115200); WiFi_FLG = true; i = 0; WiFi.begin(ssid, password); while ( WiFi.status() != WL_CONNECTED) { i++; if ( i > 30 ) { WiFi_FLG = false; break; } delay(500); } if ( WiFi_FLG == true ) wifiUdp.begin(kLocalPort); pinMode(23, OUTPUT); pinMode(33, INPUT); while(digitalRead(33)==0); //タクトスイッチのスタート待ち } void loop(){ cnt++; Serial.println(cnt,DEC); if (cnt > 900){ //900:15min digitalWrite(23,LOW); delay(20); while(digitalRead(33)==0); //再スタート Serial.println("***"); cnt = 0; } else{ digitalWrite(23,HIGH); if ( WiFi_FLG == true ) { wifiUdp.beginPacket(kRemoteIpadr, kRmoteUdpPort); if (digitalRead(33) == HIGH) { wifiUdp.print("H"); wifiUdp.endPacket(); } delay(20); } delay(500); digitalWrite(23,LOW); delay(500); } } |
|
|