
ESP32-S3 board
The brain of the build — with a Wi-Fi radio already aboard.
ESP32-S3 Lab · Day 29 of 30
No wiring today — the radio is already inside the ESP32-S3. You hand the board your Wi-Fi name and password, watch it join your network the way a phone does, and read back the address your router assigns it. That address is the board's berth number on the local network — reach it once from your computer and you have opened the door Day 30 walks through.
TSK-DAY29-WIFI
Hand this to an agent so it can pull the lesson packet and coach you step by step.
01 First, know the pieces
Three things on the bench, plus one you already own: the name and password of your 2.4 GHz Wi-Fi network. Have both written down before you start. Tap Define on anything unfamiliar — the answer opens as a field note you can read and dismiss without losing your place.

The brain of the build — with a Wi-Fi radio already aboard.

Uploads the sketch and opens Serial Monitor.

Sketch_23.1_WiFi_Station.ino
02 One action at a time
The whole day is edit two lines, upload, and read the monitor. Tap each step as you go to keep your place — you can finish without opening a single field note.
Plug the ESP32-S3 into your computer with a data-capable USB cable.
Open Sketch_23.1_WiFi_Station.ino in Arduino IDE.
Replace both "********" strings with your own Wi-Fi name and password — keep the double quotes, and use your 2.4 GHz network.
Select your ESP32-S3 board and its port, then press Upload.
Open Serial Monitor and set the baud rate to 115200.
Watch Setup start, then dots while the board negotiates, then the IP address your router assigns.
Note that address down — Day 30 dials it.
03 Read just enough code
The sketch is short enough to read whole. Two lines near the top hold the placeholders you replace with your own credentials; setup() does all the work and loop() stays empty. Switch to MicroPython if you'd rather see the same idea in Python.
#include <WiFi.h>
const char *ssid_Router = "********"; //Enter the router name
const char *password_Router = "********"; //Enter the router password
void setup(){
Serial.begin(115200);
delay(2000);
Serial.println("Setup start");
WiFi.begin(ssid_Router, password_Router);
Serial.println(String("Connecting to ")+ssid_Router);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("\nConnected, IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Setup End");
}
void loop() {
}
WiFi.begin(ssid_Router, password_Router)Starts the join — the board finds your network by name and offers the password from the two strings above. This is station mode, the board acting as a guest on your network. while (WiFi.status() != WL_CONNECTED)Waits for the router to accept the board, printing a dot every half second — and it will wait forever, so endless dots mean wrong credentials. Serial.println(WiFi.localIP())Prints the IP address the router leased once the join succeeds — the board's own number on the network, and the address Day 30 dials. Optional side path · no wiring
ssidRouter = '********' #Enter the router name
passwordRouter = '********' #Enter the router password
def STA_Setup(ssidRouter,passwordRouter):
print("Setup start")
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print('connecting to',ssidRouter)
sta_if.active(True)
sta_if.connect(ssidRouter,passwordRouter)
while not sta_if.isconnected():
pass
print('Connected, IP address:', sta_if.ifconfig())
print("Setup End")
network.WLAN(network.STA_IF)Creates the station interface — MicroPython's handle on the board's radio in join-a-network mode.sta_if.ifconfig()Returns the board's network details once connected — the first value is its IP address.Same radio, same credentials — replace both '********' strings before you run it in Thonny. If MicroPython isn't set up yet, skip this — it should never block the Arduino-first day.
04 Understand, don't memorise
"Connecting to Wi-Fi" sounds like one thing, but the board runs a three-part handshake to get on, and it ends with something it did not have before: an address of its own on the local network. Today's sketch runs this in station mode — the board joins your network the way a phone does. The same radio can play the opposite role, an access point that hosts a network instead, and knowing the difference is what makes the address make sense.
The board looks for your network by its name, the SSID, and asks the router to let it join.
It offers the password you typed into the sketch; the router checks it and either accepts the board or turns it away.
Once accepted, the router leases the board a free IP address — its own number on the local network, so other devices can find it.
The sketch reads that assigned address with localIP and prints it, which is why you always use the number the board shows rather than any example.
station = join a network and be handed an address · access point = be the network and hand them out
The router runs a service called DHCP that keeps a pool of free addresses and leases one to every device that joins. The board does not choose its own number, so the IP it prints will differ from the one in this lesson — always read the address the board shows, never the example.
In station mode the board is a guest on your network, joining a router that hands out the addresses. In access-point mode it becomes the network itself — broadcasting its own name and leasing addresses to phones that join it, with no router involved. The two roles can even run at once.
05 Know it worked
Success and recovery sit side by side, so you never have to go hunting when something looks off.
Your network name and the address itself will differ — the IP is whatever your router assigns. A handful of dots is normal; they should stop within a few seconds.
06 Make the idea yours
The address the monitor printed is a real, routable number — not a label the board keeps to itself. The fastest way to prove the board is truly on your network, and to set up Day 30, is to reach it from another machine that shares the same Wi-Fi.
In Serial Monitor, find the line after Connected, IP address: — something like 192.168.1.23. That is the board's own number on your network, leased to it by the router. Copy it exactly.
On a computer joined to the same 2.4 GHz Wi-Fi, open a terminal and run ping 192.168.1.23, swapping in your board's address. Replies coming back mean the board is reachable at that address — the whole point of putting it on the network. On macOS or Linux press Ctrl-C to stop.
Write the address down. Day 30 has your computer dial exactly this number to open a connection to the board, so keeping it handy saves a re-upload. If the board reboots you can reopen the monitor to read it again.
07 Learn it with a hand on the tiller
Every lesson ships with a code and a machine-readable packet, so an agent can guide you with full context.
TSK-DAY29-WIFI
How the agent should behave: teach what joining a network actually means — the board finds the network by name, authenticates with the password, and the router leases it an IP address of its own — and keep credentials private, since the learner edits them into the sketch locally, never into chat. Before touching code, check the 2.4 GHz band, both placeholder strings, and the baud rate. Have the learner read the printed address and reach the board with a ping to prove it is on the network.
Keep your place
Mark it complete — it shows on your course map, and your place is saved on this device.