ESP32唤醒时发送UDP消息失败求助
ESP32唤醒后UDP消息发送失败排查求助
初次接触无线组网,已耗时两周调试ESP32唤醒时向服务器发送UDP消息的功能,但始终无法正常运行。测试时,手机UDP Monitor未收到消息,Wireshark也未捕获到数据包。尝试过使用广播地址255.255.255.255、目标设备IP、不同端口、不同库及各类教程方案,均无效果。以下是最后尝试的代码,恳请帮忙排查问题所在,提供解决方向。
#include <WiFi.h> #include <WiFiUdp.h> #define BUTTON_PIN_BITMASK 0x200002000 const char* ssid = "*****"; const char* password = "*****"; /*const char* ssid = "*****"; const char* password = "*****";*/ WiFiUDP udp; const char * udpAddress = "255.255.255.255"; const int udpPort = 3333; int MY_PIN = 13; int MY_PIN2 = 33; int MY_PIN3 = 15; RTC_DATA_ATTR int bootCount = 0; void setup(){ Serial.begin(115200); ++bootCount; Serial.println("Boot number: " + String(bootCount)); pinMode(MY_PIN, INPUT_PULLUP); pinMode(MY_PIN2, INPUT_PULLUP); pinMode(MY_PIN3, OUTPUT); digitalWrite(MY_PIN3, HIGH); Serial.println("Booting"); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to wifi"); Serial.println("Ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); udp.begin(udpPort); Serial.println(udp.remotePort()); Serial.println(udp.remoteIP()); uint8_t message[50] = "hello world"; udp.beginPacket(udpAddress, udpPort); udp.write(message,11); udp.endPacket(); Serial.println("UDP send to: "); Serial.println(udp.remoteIP()); Serial.println(udp.remotePort()); Serial.println(" "); Serial.println(WiFi.localIP()); delay(500); int reading = digitalRead(MY_PIN); int reading2 = digitalRead(MY_PIN2); if(reading == 1 ||reading2 == 1) { esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ALL_LOW);; } else { esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);; } Serial.println("Going to sleep now"); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_XTAL, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_MAX, ESP_PD_OPTION_OFF); esp_deep_sleep_start(); Serial.println("check_sleep"); } void loop(){ Serial.println("check_sleep2"); }
此外,还尝试过使用udp.printf或udp.broadcastTo语句,仍无法发送数据包。请问问题出在哪里?遗漏了什么?
内容的提问来源于stack exchange,提问作者Lucasaenz
相关产品推荐
相关产品推荐

