tamox.net |
|
ESP32 published on 2024/Aug/10 | |
ESP32を用いて無線スイッチを作成 WiFi UDP通信を適用 リレーでAC100Vを制御 IPAdrressを変更することにより、グループ同士で別々にON/OFF動作することを確認 親機と子機の一対一の接続でしかできない。親機と子機をニ個はできない タイマー動作 を付加したものはこちらを参照してください |
|
|
|
Aruino nano/nRF2401の場合 電波到達距離の関係で実用にたえなかった。 Tweiliteは、利用できている。 Tweilite一つとESP32二個がほぼ同額。(ESP32は、基板とか、USBケーブルの負担が増すがあまりあり。) |
|
![]() |
![]() |
送信器側のスイッチをON | 送信器側のスイッチを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); } } |
|
|