TinySkiff ESP32-S3 Lab · Day 11 of 30

Make the board
talk back

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.

About 15 minutesArduino firstMicroPython optionalNo wiring today
Agent assist code 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

What you need

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.

Official manual photo of the ESP32-S3 development board.
Manual photo

ESP32-S3 board

The brain that runs your sketch and sends the text.

Official manual screenshot of the Arduino IDE interface.
Manual screenshot

Arduino IDE

Uploads the sketch and opens Serial Monitor.

Official manual page showing an Arduino sketch and its Serial Monitor output.
Manual sketch

Official sketch

Sketch_07.1_SerialPrinter.ino

02 One action at a time

Build it

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.

0 / 6 done
  1. Plug the ESP32-S3 into your computer with a data-capable USB cable.

  2. In Arduino IDE, select your ESP32-S3 board and the port it appears on.

  3. Open Sketch_07.1_SerialPrinter.ino.

  4. Press Upload and wait for the IDE to say Done uploading.

  5. Open Serial Monitor and set the baud rate to 115200.

  6. Watch the start-up line appear, then a running-time count that climbs every second.

The board has a voice.

Your ESP32-S3 is sending text back over USB. Head to Test & debug to confirm what should scroll past.

03 Read just enough code

Read the 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.

Sketch_07.1_SerialPrinter.ino
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.

04 Understand, don't memorise

How the board talks over USB

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.

Open the link

Serial.begin

The board switches the USB line into text mode at a set speed.

Agree on speed

Same baud

Serial Monitor must use the same 115200 or the text arrives scrambled.

Send a line

println

Each print pushes characters up the cable to your screen.

Keep reporting

Once a second

The loop prints the running time again after each delay.

The rule readable text = board baud = monitor baud

What the baud rate is

Baud is how fast the two sides send signal changes. Both must agree, or the letters turn to gibberish.

Where the number comes from

millis() is the board's own stopwatch — milliseconds since it booted — which the sketch divides into seconds.

05 Know it worked

Test & debug

Success and recovery sit side by side, so you never have to go hunting when something looks off.

What you should see
Serial Monitor115200 baud
ESP32S3 initialization completed!Running time : 1.0 sRunning time : 2.0 sRunning time : 3.0 s

The first line prints once at start-up; the running time then climbs by about one each second.

If it doesn't
  • Garbled or random characters? Set Serial Monitor to 115200 baud to match the sketch.
  • Blank monitor? Confirm the right board and port, then press the board's reset button.
  • Only the first line, no count? Give it a second — the running time prints once per delay(1000).
  • Upload fails? Swap in a data-capable USB cable.

06 Make the idea yours

Try this: change what it says

Same working sketch, no wiring — just the text and the timing. It fits inside today's 15 minutes.

Rename the start-up line

Change the words inside Serial.println("…") and re-upload — the board greets you however you like.

Report faster

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

Coach me through it

Every lesson ships with a code and a machine-readable packet, so an agent can guide you with full context.

Lesson code

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.

Field note

Shortcut

Prompt copied