tamox.net

  ESP32  published on 2024/Aug/10
ESP32を用いて無線スイッチを作成
WiFi UDP通信を適用
リレーでAC100Vを制御
IPAdrressを変更することにより、グループ同士で別々にON/OFF動作することを確認 



 
 
 送信器側のスイッチをOFF





受信器(親機)の回路図  

 
 
 
送信器(子機)の回路図 

 
 
  IDE code
//skech_jul24a 受信器側コード
#include <WiFi.h>
#include <WiFiUdp.h>

const char ssid[] = "WS204"; // SSID
const char password[] = "0123456789"; // password
const int localPort = 10000; // ポート番号
const IPAddress ip(192, 168, 10, 204); // ServerのIPアドレス
const IPAddress gateway(192, 168, 10, 204); // 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 > 100){
        digitalWrite(23, LOW);//送信が途切れたとき、リレーを落とす
      }
      delay(100);
}
//---------------------------------------------
//skech_jul24b 送信器側コード
#include <WiFi.h>
#include <WiFiUdp.h>

const char ssid[] = "WS204"; // SSID
const char password[] = "0123456789"; // password

static WiFiUDP wifiUdp;
static const char *kRemoteIpadr = "192.168.10.204";
static const int kRmoteUdpPort = 10000;
static const int kLocalPort = 5000;
bool WiFi_FLG;


static void WiFi_setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println(WL_CONNECTED);
  Serial.println(WiFi.status());
    while ( WiFi.status() != WL_CONNECTED) {
      delay(500);
    }

    wifiUdp.begin(kLocalPort);
    WiFi_FLG = true;
}


void setup() {
    WiFi_setup();
    pinMode(23, OUTPUT);
    pinMode(33, INPUT);
}



void loop(){
    if ( WiFi_FLG == true ) {
      wifiUdp.beginPacket(kRemoteIpadr, kRmoteUdpPort);
      if (digitalRead(33) == LOW) {
        Serial.println("L");
        wifiUdp.print("L");
        wifiUdp.endPacket();
      }
    if (digitalRead(33) == HIGH) {
        wifiUdp.print("H");
        wifiUdp.endPacket();

      digitalWrite(23, HIGH);
      delay(500);
      digitalWrite(23, LOW);
      delay(500);
    }
    delay(20);
  }
}