/* * WiFi Diagnostic — NO display, NO touch, just network tests * Waveshare ESP32-S3-Touch-LCD-4.3 */ #include #include #include #include #define WIFI_SSID "iot-2GHz" #define WIFI_PASS "lesson-greater" void setup() { Serial.begin(115200); unsigned long t = millis(); while (!Serial && millis() - t < 5000) delay(10); delay(1000); Serial.println("\n========================================"); Serial.println(" WiFi Diagnostic — NO display"); Serial.printf(" Heap: %d KB PSRAM: %d KB\n", ESP.getFreeHeap() / 1024, ESP.getFreePsram() / 1024); Serial.println("========================================\n"); // Connect WiFi Serial.printf("Connecting to %s...\n", WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASS); int tries = 0; while (WiFi.status() != WL_CONNECTED && tries++ < 40) { delay(500); Serial.print("."); } Serial.println(); if (!WiFi.isConnected()) { Serial.println("*** WiFi FAILED ***"); while (true) delay(1000); } Serial.printf("Connected!\n"); Serial.printf(" SSID: %s\n", WiFi.SSID().c_str()); Serial.printf(" IP: %s\n", WiFi.localIP().toString().c_str()); Serial.printf(" GW: %s\n", WiFi.gatewayIP().toString().c_str()); Serial.printf(" DNS: %s\n", WiFi.dnsIP().toString().c_str()); Serial.printf(" RSSI: %d dBm\n", WiFi.RSSI()); Serial.printf(" Heap: %d KB\n\n", ESP.getFreeHeap() / 1024); // Test 1: DNS Serial.println("--- TEST 1: DNS ---"); IPAddress ip; if (WiFi.hostByName("ntfy.sh", ip)) Serial.printf(" ntfy.sh -> %s OK\n", ip.toString().c_str()); else Serial.println(" ntfy.sh DNS FAILED"); if (WiFi.hostByName("google.com", ip)) Serial.printf(" google.com -> %s OK\n", ip.toString().c_str()); else Serial.println(" google.com DNS FAILED"); // Test 2: Raw TCP port 80 Serial.println("\n--- TEST 2: TCP port 80 ---"); WiFiClient tcp80; Serial.println(" Connecting google.com:80..."); if (tcp80.connect("google.com", 80, 10000)) { Serial.println(" google.com:80 OK!"); tcp80.stop(); } else { Serial.println(" google.com:80 FAILED"); } Serial.println(" Connecting ntfy.sh:80..."); WiFiClient tcp80b; if (tcp80b.connect("ntfy.sh", 80, 10000)) { Serial.println(" ntfy.sh:80 OK!"); tcp80b.stop(); } else { Serial.println(" ntfy.sh:80 FAILED"); } // Test 3: Raw TCP port 443 Serial.println("\n--- TEST 3: TCP port 443 ---"); WiFiClient tcp443; Serial.println(" Connecting ntfy.sh:443..."); if (tcp443.connect("ntfy.sh", 443, 10000)) { Serial.println(" ntfy.sh:443 OK!"); tcp443.stop(); } else { Serial.println(" ntfy.sh:443 FAILED"); } // Test 4: TLS handshake Serial.println("\n--- TEST 4: TLS handshake (setInsecure) ---"); Serial.printf(" Heap before TLS: %d KB\n", ESP.getFreeHeap() / 1024); WiFiClientSecure tls; tls.setInsecure(); Serial.println(" Connecting ntfy.sh:443 with TLS..."); if (tls.connect("ntfy.sh", 443, 15000)) { Serial.println(" TLS handshake OK!"); tls.stop(); } else { Serial.println(" TLS handshake FAILED"); } Serial.printf(" Heap after TLS: %d KB\n", ESP.getFreeHeap() / 1024); // Test 5: Full HTTP GET (plain HTTP) Serial.println("\n--- TEST 5: HTTP GET (plain) ---"); HTTPClient http; http.setTimeout(10000); http.begin("http://httpbin.org/get"); int code = http.GET(); Serial.printf(" httpbin.org HTTP %d\n", code); if (code > 0) Serial.printf(" Body: %.100s...\n", http.getString().c_str()); else Serial.printf(" Error: %s\n", http.errorToString(code).c_str()); http.end(); // Test 6: Full HTTPS GET Serial.println("\n--- TEST 6: HTTPS GET (ntfy.sh) ---"); Serial.printf(" Heap before: %d KB\n", ESP.getFreeHeap() / 1024); WiFiClientSecure sc; sc.setInsecure(); HTTPClient https; https.setTimeout(10000); https.begin(sc, "https://ntfy.sh/test_diag_12345/json?poll=1&since=10s"); code = https.GET(); Serial.printf(" ntfy.sh HTTPS %d\n", code); if (code > 0) Serial.printf(" Body: %.200s...\n", https.getString().c_str()); else Serial.printf(" Error: %s\n", https.errorToString(code).c_str()); https.end(); Serial.printf(" Heap after: %d KB\n", ESP.getFreeHeap() / 1024); // Test 7: Manual HTTP request over raw TCP Serial.println("\n--- TEST 7: Manual HTTP over raw TCP ---"); WiFiClient raw; if (raw.connect("ntfy.sh", 80, 10000)) { raw.println("GET /test_diag_12345/json?poll=1&since=10s HTTP/1.0"); raw.println("Host: ntfy.sh"); raw.println("Connection: close"); raw.println(); unsigned long start = millis(); while (!raw.available() && millis() - start < 10000) delay(10); String resp = ""; while (raw.available()) resp += (char)raw.read(); Serial.printf(" Got %d bytes\n", resp.length()); Serial.printf(" Response: %.200s\n", resp.c_str()); raw.stop(); } else { Serial.println(" Raw TCP to ntfy.sh:80 FAILED"); } Serial.println("\n========================================"); Serial.println(" ALL TESTS COMPLETE"); Serial.printf(" Final heap: %d KB\n", ESP.getFreeHeap() / 1024); Serial.println("========================================"); } void loop() { delay(10000); }