| Mode | GPIO0 | GPIO2 | GPIO15 | |------|-------|-------|--------| | UART Download (Flash) | LOW | HIGH | LOW | | Flash Boot (Run) | HIGH | HIGH | LOW | | SDIO/SPI Boot | ? | ? | HIGH (invalid for ESP-01) |
DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); esp-01 01s
void setup() dht.begin(); WiFi.begin("SSID", "PASS"); client.setServer("192.168.1.100", 1883); | Mode | GPIO0 | GPIO2 | GPIO15
| Feature | ESP-01 | ESP-01S | |---------|--------|---------| | Flash | 512 kB (rare 1 MB) | 1 MB | | Pull-ups on GPIO0,2,EN | No | Yes (12k) | | User LED | No (red power only) | Yes (blue on GPIO2) | | Boot reliability | Poor without mods | Good | | AT firmware version | v0.x–v1.x | v1.x–v2.x | | Best for | Hobbyist with soldering | Reliable IoT endpoints | For anything beyond two I/O pins, skip both
void loop() float h = dht.readHumidity(); float t = dht.readTemperature(); client.publish("sensor/temp", String(t).c_str()); delay(30000);
Always buy ESP-01S unless you have a specific need for the original's smaller flash (almost never). For anything beyond two I/O pins, skip both and use ESP-12E/F, Wemos D1 Mini, or NodeMCU.
GPIO0, GPIO2 (both with external 10k pull-ups if original ESP-01).