tamox.net |
||
ESP32 published on 2024/Aug/11 ESP32を用いて宅配ボックスへ応用 WiFi UDP通信を適用 |
||
|
||
![]() |
||
Photo1 蓋が閉まっているとき(リードスイッチが接しているとき),送信器、受信器ともに緑LEDがONPhoto2 |
||
|
||
![]() |
||
蓋が開いているとき(リードスイッチが離れるたとき),送信器、受信器ともに赤LEDがON | ||
|
||
![]() |
||
蓋が閉じられたとき(リードスイッチが接している),送信器、受信器ともに緑LEDがON 赤色LEDは、蓋が開けられた形跡により、送信器、受信器ともに赤色LEDはONのまま |
||
|
||
![]() |
||
送信側のリセットスイッチ(黄色の枠)を押すことにより、赤LEDはOFF | ||
|
||
![]() |
||
受信器(親機)の回路図 | ||
|
||
![]() |
||
送信器(子機)の回路図 | ||
|
||
IDE code | ||
//skech_jul30s 送信器側コード #include <WiFi.h> #include <WiFiUdp.h> const char ssid[] = "WS203"; // SSID const char password[] = "0123456789"; // password static WiFiUDP wifiUdp; static const char *kRemoteIpadr = "192.168.10.203"; static const int kRmoteUdpPort = 10000; static const int kLocalPort = 5000; bool WiFi_FLG; bool alter=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(21, OUTPUT); pinMode(32, INPUT); //lead switch pinMode(34, INPUT); //reset switch } void loop(){ if (alter ==1){ Serial.println(WiFi_FLG); if ( WiFi_FLG == true ) { wifiUdp.beginPacket(kRemoteIpadr, kRmoteUdpPort); if (digitalRead(32) == LOW ) { //Serial.println("L"); wifiUdp.print("L"); wifiUdp.endPacket(); digitalWrite(23, LOW); delay(20); digitalWrite(21, HIGH); delay(20); } if (digitalRead(32) == HIGH ) { wifiUdp.print("R"); wifiUdp.endPacket(); digitalWrite(23, HIGH); delay(20); digitalWrite(21, HIGH); delay(20); } if(digitalRead(34) == HIGH){ alter =0; } } } if (alter ==0){ Serial.println(WiFi_FLG); if ( WiFi_FLG == true ) { wifiUdp.beginPacket(kRemoteIpadr, kRmoteUdpPort); if (digitalRead(32) == LOW ) { alter = 1;//変化しない //Serial.println("L"); wifiUdp.print("L"); wifiUdp.endPacket(); digitalWrite(23, LOW); delay(20); digitalWrite(21, HIGH); delay(20); alter = 1; } if (digitalRead(32) == HIGH ) { wifiUdp.print("H"); wifiUdp.endPacket(); digitalWrite(23, HIGH); delay(20); digitalWrite(21, LOW); delay(20); } } } } //送信側 //----------------------------------------------------------------------- //skech_jul30r 受信器側コード #include <WiFi.h> #include <WiFiUdp.h> const char ssid[] = "WS203"; // SSID const char password[] = "0123456789"; // password const int localPort = 10000; // ポート番号 const IPAddress ip(192, 168, 10, 203); // ServerのIPアドレス const IPAddress gateway(192, 168, 10, 203); // 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); pinMode(33, OUTPUT); } void loop() { if(udp.parsePacket()){ cnt = 0; char i = udp.read(); if (i == 'H') { digitalWrite(23, HIGH); digitalWrite(33, LOW); } if (i == 'L') { digitalWrite(23, LOW); digitalWrite(33, HIGH); } if (i == 'R') { digitalWrite(23, HIGH); digitalWrite(33, HIGH); } } cnt++; Serial.println(cnt,DEC); if ( cnt > 100){ digitalWrite(23, LOW); udp.begin(localPort); } delay(20); } |