Install
openclaw skills install esp32Avoid common ESP32 mistakes — GPIO conflicts, WiFi+ADC2 trap, deep sleep gotchas, and FreeRTOS pitfalls.
openclaw skills install esp32RTC_DATA_ATTR for persistent variables — regular RAM lost in deep sleepesp_sleep_enable_ext0_wakeup() for single pin — ext1 for multiple pinsWiFi.mode() before WiFi.begin() — mode affects behaviorWiFi.setAutoReconnect(true) doesn't always work — implement reconnect in loopWiFi.onEvent() more reliable — don't poll WiFi.status()vTaskDelay() or feed watchdogxTaskCreatePinnedToCore() for core affinity — WiFi on core 0, your code on core 1delay() yields to scheduler — vTaskDelay(pdMS_TO_TICKS(ms)) in tasksESP.getFreeHeap() for monitoring — log periodically in long-running appsheap_caps_malloc(size, MALLOC_CAP_SPIRAM)reserve() or char arraysanalogWrite() — use LEDC: ledcSetup(), ledcAttachPin(), ledcWrite()SPI.begin() doesn't auto-configureESP.getFreeSketchSpace() — OTA fails silently if not enough spaceArduinoOTA blocks during update — handle in loop, not in time-critical codeesp_brownout_disable() if using battery