You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:05:27