Master ESP32 WiFi scan with this step-by-step guide. Learn to scan networks, connect to routers, fix connection issues, and build reliable IoT projects. Now!
If you’ve just started working with the ESP32 and your first goal is to connect the ESP32 to a router, you’re in the right place. Think of this guide like you and I are sitting in a café, talking through each step so you understand not just what to do, but why things work the way they do.
The ESP32 is powerful. It has built-in WiFi, Bluetooth, dual-core processing, and enough flexibility to handle IoT projects, home automation, robots, smart sensors, remote monitors, and even cameras. And the truth is: none of that matters unless the ESP32 connects to the internet correctly.
By the end, you’ll have a practical understanding of how to connect ESP32 to WiFi router in multiple methods, troubleshoot common issues, and build real IoT setups.
Let’s dive in.
What Does ESP32 Connect to Router Actually Mean?
When you tell the ESP32 to connect to a router, you’re doing two simple things:
- Giving the ESP32 the WiFi name (SSID)
- Giving it the password
If everything goes well, the router assigns an ESP32 IP address, and the ESP32 becomes a device on your local network.
Once connected, you can:
- Access ESP32 web servers
- Send data to Home Assistant
- Connect ESP32 to Raspberry Pi
- Use ESP32 as an internet-connected IoT device
- Stream video if you’re connecting a camera to ESP32
- Build ESP32 mesh network setups
- Connect two ESP32 boards together
Basically, the router becomes your bridge to the world.
Requirements to Connect ESP32 to WiFi Router
Before running any code, you need:
- ESP32 DevKit, ESP32-C3, or ESP32-S3
- Arduino IDE or MicroPython
- A WiFi router (2.4 GHz — note this!)
- Power via USB
- Stable SSID and password
Important:
Most beginners face the “ESP32 not connecting to WiFi” error because the ESP32 does not support 5 GHz networks. Only 2.4 GHz works.
ESP32 Connect to Router – Arduino Example
This is the simplest ESP32 Arduino connect to WiFi code you’ll ever use.
#include <WiFi.h>
const char* ssid = "Your_WiFi_Name";
const char* password = "Your_WiFi_Password";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting...");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to router!");
Serial.print("ESP32 IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {}
What this does:
- Starts the WiFi
- Connects to your router
- Waits until ESP32 connects
- Prints the ESP32 WiFi IP address
You now have a working connection.
Understanding ESP32 WiFi Events
ESP32 is smart. It sends events whenever something happens:
| Event | Meaning |
|---|---|
| SYSTEM_EVENT_STA_CONNECTED | ESP32 connected to router |
| SYSTEM_EVENT_STA_DISCONNECTED | ESP32 lost WiFi |
| SYSTEM_EVENT_STA_GOT_IP | Router gave ESP32 IP address |
| SYSTEM_EVENT_STA_LOST_IP | ESP32 lost its IP |
Handling WiFi events helps you build reliable systems.
Example:
WiFi.onEvent(WiFiEvent);
void WiFiEvent(WiFiEvent_t event) {
switch(event) {
case SYSTEM_EVENT_STA_CONNECTED:
Serial.println("Connected to WiFi");
break;
case SYSTEM_EVENT_STA_GOT_IP:
Serial.println("Got IP:");
Serial.println(WiFi.localIP());
break;
case SYSTEM_EVENT_STA_DISCONNECTED:
Serial.println("Disconnected. Trying to reconnect...");
WiFi.begin(ssid, password);
break;
}
}
This kind of setup helps avoid random disconnections.
ESP32 Connect to Router – MicroPython Example
If you prefer MicroPython, here’s how to connect ESP32 to WiFi MicroPython:
import network
import time
ssid = "Your_WiFi_Name"
password = "Your_WiFi_Password"
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)
print("Connecting...")
while not wifi.isconnected():
time.sleep(1)
print(".")
print("Connected!")
print("ESP32 IP address:", wifi.ifconfig()[0])
ESP32 Not Connecting to Router? (FIXED)
This is the most searched problem:
1. ESP32 not connecting to router
2. ESP32 not connecting to WiFi
Here are real causes and fixes:
1. Your router is 5 GHz
ESP32 connects only to 2.4 GHz, not 5 GHz.
2. Wrong password
Double-check uppercase, lowercase, and symbols.
3. Special characters in SSID
Try renaming your WiFi to something simple.
4. Weak WiFi signal
Bring the ESP32 closer to the router.
5. MAC filtering enabled
Turn off MAC filtering in router settings.
6. Hidden SSID
Enable SSID broadcast or manually enter details.
7. Power issues
A weak USB cable or port can cause random disconnects.
ESP32 WiFi IP Address Explained
Once ESP32 connects, you’ll get something like:
192.168.1.92
This is the ESP32 WiFi IP address.
Your PC or phone can use this IP to:
- Access ESP32 web server
- Control LEDs
- Read sensor values
- Integrate into Home Assistant
You can also set a static ESP32 IP address:
WiFi.config(local_IP, gateway, subnet);
How to Connect Camera to ESP32
If you are connecting a camera to ESP32, you’ll most likely use:
- ESP32-CAM
- OV2640 camera module
Once the camera boots, it connects to the router and provides a streaming link like:
http://192.168.1.77
You can open this in any browser.
ESP32 as a Router (SoftAP Example)
ESP32 can also act as a WiFi router itself.
WiFi.softAP("ESP32_Router", "12345678");
Now your phone or laptop can connect to the ESP32.
This is used when:
- No home router is available
- You want to control ESP32 locally
- You’re connecting two ESP32 boards
Connecting Two ESP32 Boards Together
You can connect ESP32 boards using:
1. WiFi (station to station)
2. ESP32 mesh network example
3. Bluetooth
4. UART wired communication
The simplest way is soft AP + STA mode.
ESP32 Connect to Raspberry Pi
You can connect ESP32 to Raspberry Pi in 3 ways:
Via router (recommended)
Both connect to same WiFi.
Direct WiFi (ESP32 as router)
ESP32 softAP → Pi connects to ESP32.
Serial communication
UART between GPIO pins.
Most people use the router method so the Pi can also connect ESP32 to the internet.
ESP32 Connect to Arduino Uno
You can connect ESP32 and Arduino Uno using multiple methods depending on your project:
- Serial communication (RX/TX)
- I2C
- WiFi communication
- Sending ESP32 data to the Uno to control sensors or motors
If you want a deeper explanation with visuals, I’ve also covered this in my WiFi guide here: Master ESP32 WiFi Scan Tutorials
Connect ESP32 to PC
When ESP32 connects to a router, your PC can:
- Open ESP32 web server
- Read sensor data
- Control GPIO pins
- Flash firmware
How to Connect ESP32 to Home Assistant
Home Assistant → ESP32 integration is simple:
- Use ESPHome
- Or use MQTT
- Or REST API
ESP32 connects to your router, then Home Assistant reads data via local network.
ESP32-C3 WiFi and ESP32-S3 Ethernet Notes
ESP32-C3 WiFi
Supports WiFi 2.4 GHz
Low power
Great for battery projects
ESP32-S3 Ethernet
Some S3 boards have Ethernet PHY
Great for stable wired IoT
Zero wireless drops
ESP32 Mesh Network Example
A mesh network means multiple ESP32 boards communicate without a central router.
Perfect for:
- Farms
- Large buildings
- Outdoor sensors
- Long-range applications
You can still connect one node to a router to access the internet.
Troubleshooting – Quick Fix Table
| Issue | Fix |
|---|---|
| ESP32 not connecting to router | Use 2.4 GHz |
| ESP32 not connecting to WiFi | Check password |
| Got IP but no internet | Restart router |
| ESP32 disconnects randomly | Change power cable |
| ESP32 WiFi slow | Avoid crowded channels |
| ESP32 IP address changes | Assign static IP |
Final Thoughts
Connecting ESP32 to a router is the first big step in IoT development. Once your ESP32 connects to WiFi reliably, you can build smart home systems, cloud dashboards, camera streams, ESP32 mesh network example setups, or even connect ESP32 to Raspberry Pi or Arduino Uno for complex automation projects.
If you follow the examples in this tutorial, your ESP32 will connect to the router confidently every time.
FAQ on ESP32 Connect to Router
1. How do I connect ESP32 to a router for the first time?
To connect the ESP32 to a router, you only need the WiFi name and password. In Arduino IDE, you call WiFi.begin(ssid, password); and the router assigns an ESP32 IP address when the connection succeeds. If you’re using MicroPython, you activate the network interface and connect using wifi.connect(ssid, password).
Search intent covered: esp32 connect to router, esp32 connect to wifi, how to connect esp32 to wifi router.
2. Why is my ESP32 not connecting to router or WiFi?
This is the most common beginner issue. The ESP32 connects only to 2.4 GHz WiFi, not 5 GHz. Wrong password, hidden SSID, weak signal, and MAC filtering are also common reasons. If you see “ESP32 not connecting to router,” first check whether the router is broadcasting 2.4 GHz WiFi.
3. How can I find the ESP32 WiFi IP address once connected?
Open the Serial Monitor after uploading your code. Arduino prints the ESP32 IP address using:
Serial.println(WiFi.localIP());
In MicroPython, use wifi.ifconfig()[0]. This IP allows your PC or phone to access ESP32 web pages, dashboards, and APIs.
4. What is the simplest ESP32 Arduino connect to WiFi example?
The easiest esp32 connect to wifi example is:
WiFi.begin("YourSSID", "YourPassword");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
It’s enough for small IoT projects like LED control, sensors, or data logging.
5. How do I connect ESP32 to Home Assistant?
The best way is using ESPHome. It automatically handles the connection when the ESP32 connects to your home router. You can also use MQTT, REST API, or a simple web server. If the ESP32 and Home Assistant are on the same WiFi network, communication is instant.
6. Can I connect ESP32 to Raspberry Pi using WiFi?
Yes. You can connect ESP32 to Raspberry Pi through the router (recommended), or make the ESP32 act as a WiFi access point and let the Raspberry Pi join it. Sending sensor data or commands becomes easy using HTTP, MQTT, or UDP.
7. How do I connect ESP32 and Arduino Uno together?
There are two ways:
- Wired (UART, I2C) – ESP32 sends sensor or WiFi data to Arduino Uno
- Wireless – both connect to the same router and communicate over WiFi
This is helpful when you want WiFi features on the Uno.
8. Can ESP32 work as a router or WiFi hotspot?
Yes. ESP32 has a mode called SoftAP where it broadcasts its own WiFi network. This lets phones or other ESP32 boards connect directly. Many IoT projects use this for local configuration, dashboards, or controlling devices without a real router.
9. How do I connect ESP32 to WiFi using MicroPython?
MicroPython connection is simple:
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("SSID", "Password")
Keep looping until wifi.isconnected() returns true. Once connected, it gives you an ESP32 WiFi IP address.
Search term included: connect esp32 to wifi micropython.
10. Can ESP32 connect to the internet without a router?
Yes. You have options:
- Use ESP32 SoftAP mode and share internet from your mobile
- Use ESP32 mesh network example (no router needed)
- Use Ethernet with ESP32-S3 boards
- Use a hotspot from your phone or laptop
Without a router, you can still transfer data locally.
11. Can I connect a camera to ESP32 for streaming?
Yes. Using ESP32-CAM or modules like the OV2640. Once the ESP32 connects to your WiFi router, it streams video through a URL like:
http://192.168.X.X
You can view it on PC, mobile, Raspberry Pi, or Home Assistant.
12. What is the difference between ESP32, ESP32-C3 WiFi, and ESP32-S3 Ethernet?
- ESP32: Dual-core, strong performance, WiFi + Bluetooth.
- ESP32-C3 WiFi: Low-power, single-core chip with WiFi 2.4 GHz support; best for battery devices.
- ESP32-S3 Ethernet: Some S3 boards support Ethernet PHY, meaning you can connect wired networks when WiFi is unstable.
13. How do I fix slow or unstable WiFi when connecting ESP32 to router?
Here are practical fixes:
- Keep ESP32 away from heavy power cables
- Reduce distance from router
- Ensure router is using channel 1, 6, or 11
- Use a high-quality USB cable
- Avoid using metal enclosures
- Assign a static ESP32 IP address
- Restart router weekly
This eliminates the most common “slow esp32 wifi” issues.
Mr. Raj Kumar is a highly experienced Technical Content Engineer with 7 years of dedicated expertise in the intricate field of embedded systems. At Embedded Prep, Raj is at the forefront of creating and curating high-quality technical content designed to educate and empower aspiring and seasoned professionals in the embedded domain.
Throughout his career, Raj has honed a unique skill set that bridges the gap between deep technical understanding and effective communication. His work encompasses a wide range of educational materials, including in-depth tutorials, practical guides, course modules, and insightful articles focused on embedded hardware and software solutions. He possesses a strong grasp of embedded architectures, microcontrollers, real-time operating systems (RTOS), firmware development, and various communication protocols relevant to the embedded industry.
Raj is adept at collaborating closely with subject matter experts, engineers, and instructional designers to ensure the accuracy, completeness, and pedagogical effectiveness of the content. His meticulous attention to detail and commitment to clarity are instrumental in transforming complex embedded concepts into easily digestible and engaging learning experiences. At Embedded Prep, he plays a crucial role in building a robust knowledge base that helps learners master the complexities of embedded technologies.
