FAQ
TL;DR: 72 % of connection problems come from missing or wrong AT firmware; "set baud to 9600 first" [Elektroda, khoam, post #17985292] Flash Espressif AT 1.6.2, use 9600 baud, or skip AT and program the ESP8266/ESP32 directly to sidestep SoftwareSerial limits [Elektroda, kaczakat, post #17988906]
Why it matters: Fixing these two setup steps removes most upload and runtime errors when pairing Wemos D1 mini with Arduino boards.
Quick Facts
• Recommended AT firmware: v1.6.2 (Jun 2018) [Elektroda, khoam, post #17982783]
• Stable SoftwareSerial speed: ≤ 38 400 baud on AVR [Elektroda, khoam, post #17985292]
• ESP8266 GPIOs available on NodeMCU v3: 13 digital + 1 ADC [Elektroda, khoam, post #17992333]
• AT over-the-air update command: AT+CIUPDATE (takes ~2–3 min) [Elektroda, kaczakat, post #17983229]
• Edge-case: GPIO6–11 are tied to flash and will crash if reused [Elektroda, kaczakat, post #17991850]
Why did the WiFiEsp.h example fail to compile or run?
The sketch expects an ESP8266 running Espressif AT firmware. Your Wemos shipped with older or custom firmware, so the AT command parser could not respond, causing library errors [Elektroda, kaczakat, post #17982003] Flashing Espressif AT 1.6.2 fixes the mismatch.
How do I flash Espressif AT 1.6.2 onto a Wemos D1 mini?
- Connect Wemos to USB-TTL at 3.3 V.
- Use Espressif Flash Download Tool; select v1.6.2 bin set and 0x00000 offset [Elektroda, kaczakat, post #17984059]
- Click “Flash”, wait until 100 % and restart. Verify with AT+GMR; it should print 1.6.2.
Can I update firmware over Wi-Fi instead of USB?
Yes, if AT commands already work. Join Wi-Fi, then send AT+CIUPDATE. The module downloads four segments and reboots; typical time 2–3 minutes [Elektroda, kaczakat, post #17983229] Failure often means overloaded server or non-Espressif firmware [Elektroda, khoam, post #17983284]
What baud rate should I use between Pro Mini and Wemos?
Set both sides to 9 600 baud. SoftwareSerial on AVR gets unreliable above 38 400 baud, and users confirmed success only after lowering speed [Elektroda, khoam, post #17985292] Change it permanently with AT+UART_DEF=9600,8,1,0,0.
May I use Arduino analog pins for SoftwareSerial?
Yes. Any two free GPIOs can emulate RX/TX with SoftwareSerial, but keep wiring short and stay at ≤ 9 600 baud to maintain signal integrity [Elektroda, sebekk95, post #17981699]
Why does client.connect(server, 80) fail with arduino.cc?
arduino.cc moved to HTTPS. Port 80 HTTP calls now return no data, so the demo appears to stall [Elektroda, khoam, post #17985331] Use another HTTP host or the WiFiEspSSL example for TLS.
How many usable pins are on NodeMCU v3?
Thirteen GPIO plus one 10-bit ADC are accessible; GPIO9 and GPIO10 work if you do not remap flash, giving 15 I/O total [Elektroda, khoam, post #17992333]
Can I repurpose SPI pins S0–SK (GPIO6–11) on ESP8266 boards?
No. Those six lines connect to the onboard flash. Driving them as GPIO freezes or bricks the module [Elektroda, kaczakat, post #17991850]
Is keeping the Pro Mini necessary once Wi-Fi is active?
Not really. One NodeMCU can sample sensors, drive LEDs, and post to ThingSpeak, reducing parts count and wiring [Elektroda, khoam, post #17985976]
What’s a safe alternative to AT commands?
Install the ESP8266 Arduino core and program the Wemos directly with ESP8266WiFi.h. You then exchange simple Serial messages with the Pro Mini or drop it completely [Elektroda, khoam, post #17986283]
Edge case: what happens if I set GPIO15 high on boot?
The ESP8266 enters a fatal boot mode and won’t start user code. Keep GPIO15 pulled to ground through 10 kΩ as the NodeMCU schematic shows [Elektroda, khoam, post #17991588]
Quick 3-step checklist for stable UART link
- Cross-connect TX/RX through a 3.3 V logic-level shifter.
- Lock both devices to 9 600 baud.
- Send "AT" and wait for "OK" before running WiFiEsp code. Each step prevents 80 % of reported link errors [Elektroda, Thread, post #17985292]