Skip to content
Free US shipping on orders $35+
Order by 3pm ET — ships same-day from the US
Free US shipping on orders $35+
Skip to main content

Arduino Nano ESP-01: Add Wi-Fi with AT Commands | ShillehTek

May 14, 2026

Arduino Nano ESP-01: Add Wi-Fi with AT Commands | ShillehTek
Project

Add Wi-Fi to an Arduino Nano using the ESP-01 ESP8266 and AT commands over serial, then print an HTTP GET response for a fast connected prototype with ShillehTek.

15 min Beginner / Intermediate3 parts

Project Overview

Arduino Nano + ESP-01 ESP8266: In this build, you connect an Arduino Nano to an ESP-01 ESP8266 Wi-Fi module and use AT commands over UART so your Arduino can join Wi-Fi and print an HTTP GET response in the Serial Monitor.

The ESP-01 is one of the smallest and cheapest ESP8266 boards. You add it to an existing Arduino project over a serial line, send a handful of AT commands, and your sketch can reach the internet without flashing new firmware or installing a separate toolchain.

  • Time: ~15 minutes
  • Skill level: Beginner / Intermediate
  • What you will build: An Arduino that joins a Wi-Fi network and prints the result of a GET request to the Serial Monitor.
ESP-01 ESP8266 Wi-Fi module used to add Wi-Fi connectivity to an Arduino project
The ESP-01 is a low-cost way to add Wi-Fi to an existing project.

Parts List

From ShillehTek

External

  • A 2.4 GHz Wi-Fi network (the ESP8266 is 2.4 GHz only)
  • Optional: a 3.3 V regulator or LD1117V33 (the ESP-01 is not 5 V tolerant)

Note: The ESP-01 runs on 3.3 V and can pull up to ~250 mA in peaks. The Arduino’s 3.3 V pin cannot supply that reliably. Use a dedicated 3.3 V regulator or a battery pack. Powering it from the Arduino’s 3.3 V pin can cause brown-outs and intermittent failures.

Step-by-Step Guide

Step 1 - Wire It Up

Goal: Connect the ESP-01 to the Arduino so both power and serial communication are correct and safe at 3.3 V logic.

What to do: Wire power first, then connect TX/RX. Make sure the Arduino and ESP-01 share a common ground. Use a voltage divider on the Arduino TX line going into the ESP-01 RX pin to avoid feeding 5 V into the ESP-01.

Arduino wired to an ESP-01 ESP8266 module with a resistor divider on the Arduino TX line for 3.3 V-safe RX
VCC + CH_PD to 3.3 V, GND to GND, TX to Arduino RX (D2), RX to Arduino TX (D3) through a divider.
  • VCC to 3.3 V (external supply)
  • GND to GND (common with Arduino)
  • CH_PD to 3.3 V (chip-enable, hold high)
  • TX to Arduino D2 (SoftwareSerial RX)
  • RX to Arduino D3 through a 2x1 kΩ / 1x2 kΩ divider (5 V Arduino TX is too high for the ESP-01)
  • GPIO0, GPIO2, RST: leave floating (or pull GPIO0 HIGH if unreliable)

Expected result: The ESP-01 powers up and is ready to respond to AT commands over serial.

Step 2 - Upload the Sketch

Goal: Use SoftwareSerial to send AT commands to the ESP-01 and print responses to the Arduino Serial Monitor.

What to do: Paste the sketch below into the Arduino IDE, update the SSID and password, then upload it to your Arduino Nano.

Code:

#include <SoftwareSerial.h>

SoftwareSerial esp(2, 3);   // RX, TX

void sendAT(const char* cmd, int waitMs = 1500) {
  esp.println(cmd);
  long t = millis();
  while (millis() - t < waitMs) {
    while (esp.available()) Serial.write(esp.read());
  }
  Serial.println();
}

void setup() {
  Serial.begin(9600);
  esp.begin(9600);

  sendAT("AT");                          // sanity
  sendAT("AT+CWMODE=1");                 // station mode
  sendAT("AT+CWJAP=\"your-ssid\",\"your-password\"", 8000);
  sendAT("AT+CIFSR");                    // print IP

  sendAT("AT+CIPSTART=\"TCP\",\"example.com\",80", 4000);
  esp.println("AT+CIPSEND=44");
  delay(500);
  esp.println("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
  delay(3000);
  while (esp.available()) Serial.write(esp.read());
}

void loop() {}

Expected result: The ESP-01 responds to AT, joins your Wi-Fi network, prints an IP address, then returns a raw HTTP response from example.com.

Step 3 - Watch It Connect

Goal: Verify the AT command responses and confirm the GET request returns data.

What to do: Open the Arduino Serial Monitor and watch the output as the ESP-01 connects and prints the response.

Arduino Serial Monitor showing ESP-01 AT command responses including WIFI CONNECTED, WIFI GOT IP, and an HTTP response
You should see OK, WIFI CONNECTED, WIFI GOT IP, then the raw HTTP response.

Expected result: You see connection status messages followed by an HTTP response body and headers.

Step 4 - Where to Take It Next

Goal: Identify practical next steps using the same ESP-01 + AT command approach.

What to do: Pick an option below and adapt the AT commands and request strings in your sketch.

  • POST sensor readings to a Google Sheet or a webhook
  • Subscribe to MQTT (Home Assistant, Mosquitto) from an 8-bit Arduino
  • Flash the ESP-01 with custom firmware via the GPIO0-LOW bootloader trick
  • Upgrade to a D1 Mini or NodeMCU when you outgrow AT commands (same chip, more I/O)

Expected result: You have a clear path to extend this basic Wi-Fi link into a real connected project.

Conclusion

The ESP-01 ESP8266 can turn an Arduino Nano project into a Wi-Fi connected device using simple AT commands over UART. Even though AT commands are not fancy, they are a practical option when you want to keep your existing Arduino sketch and add connectivity quickly.

Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building something for your product, check out our IoT consulting services.

Credits: Photos and AT-command screenshots referenced from Instructables.