
ESP32-S3 board
The brain that runs your sketch and sends the text.
TinySkiff ESP32-S3 Lab · Day 11 of 30
No wiring today. You upload a short sketch, open Serial Monitor, and the ESP32-S3 starts sending text up the same USB cable that carries your code — a start-up line first, then a running clock that ticks up every second.
TSK-DAY11-SERIALPRINT
Hand this to an agent so it can pull the lesson packet and coach you step by step.
01 First, know the pieces
Almost nothing today — the board talks over the same USB cable that's already uploading your code. Tap Define on anything unfamiliar; the answer opens as a field note you can read and dismiss without losing your place.

The brain that runs your sketch and sends the text.

Uploads the sketch and opens Serial Monitor.

Sketch_07.1_SerialPrinter.ino
02 One action at a time
The whole day is upload, open the monitor, and read. 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.
In Arduino IDE, select your ESP32-S3 board and the port it appears on.
Open Sketch_07.1_SerialPrinter.ino.
Press Upload and wait for the IDE to say Done uploading.
Open Serial Monitor and set the baud rate to 115200.
Watch the start-up line appear, then a running-time count that climbs every second.
03 Read just enough code
The whole sketch is short. Two lines in setup() open the link and announce the board is ready; the loop() prints a running-time line once a second. Switch to MicroPython if you'd rather see the same idea in Python.
void setup() {
Serial.begin(115200);
Serial.println("ESP32S3 initialization completed!");
}
void loop() {
Serial.printf("Running time : %.1f s\r\n", millis() / 1000.0f);
delay(1000);
}
Serial.begin(115200)Opens the USB serial link at 115200 baud — the same number you set in Serial Monitor. Serial.println("ESP32S3 initialization completed!")Sends one line of text, then moves to the next line — the board's start-up announcement. Serial.printf("Running time : %.1f s\r\n", millis() / 1000.0f)Fills the running time into the text, one decimal place, and sends it once a second. Optional side path · no wiring
import time
print("ESP32S3 initialization completed!")
while True:
print("Running time : ", time.ticks_ms()/1000, "s")
time.sleep(1)
print("ESP32S3 initialization completed!")In MicroPython, print() sends text up the same USB serial link Thonny reads.time.ticks_ms()/1000Milliseconds since the board started, divided into seconds — the same running clock as the Arduino sketch.Same cable, no wiring. MicroPython's print() lands in Thonny's shell instead of Serial Monitor, but the idea is identical. If MicroPython isn't set up yet, skip this — it should never block the Arduino-first path.
04 Understand, don't memorise
There's no new hardware today — the same cable that flashes your code doubles as a two-way text line, provided the board and the monitor keep the same pace.
The board switches the USB line into text mode at a set speed.
Serial Monitor must use the same 115200 or the text arrives scrambled.
Each print pushes characters up the cable to your screen.
The loop prints the running time again after each delay.
readable text = board baud = monitor baud
Baud is how fast the two sides send signal changes. Both must agree, or the letters turn to gibberish.
millis() is the board's own stopwatch — milliseconds since it booted — which the sketch divides into seconds.
05 Know it worked
Success and recovery sit side by side, so you never have to go hunting when something looks off.
The first line prints once at start-up; the running time then climbs by about one each second.
06 Make the idea yours
Same working sketch, no wiring — just the text and the timing. It fits inside today's 15 minutes.
Change the words inside Serial.println("…") and re-upload — the board greets you however you like.
Lower the delay(1000) to delay(250) so the running time updates four times a second, then add a second Serial.println of your own.
Logbook
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-DAY11-SERIALPRINT
How the agent should behave: keep it to upload-and-read, check board, port, cable, and baud rate before touching code, and explain Serial.begin, println, and millis on request.