Course Booklets
Beginner-friendly activity books packed with diagrams, code walkthroughs, and self-learn questions. Read below or use your browser's Print → Save as PDF to download.
Let's Get Started!
Day 1: Icebreaker — Meet Your Device
Saturday, March 14, 2026 · 3:00 PM
What Is This Course About?
Welcome to the Rysera Intermediate Course — Course on Integrated System Design! Over the next few weeks, you're going to build something really cool: a Medibox.
By the end of this course, you'll have:
- 🔌 Wired up real electronic components on a circuit board
- 🖥 Designed your own PCB (Printed Circuit Board) in professional software
- 💻 Written C++ code to make your device work
- 🌐 Connected your device to the internet
- 🧊 3D-designed and printed an enclosure for it
Today's Star: The 1.3" TFT Display
Today we're going to work with the 1.3" TFT Display. TFT stands for Thin Film Transistor — it's a colorful screen, just like the screen on your phone, but much smaller!
📐 Specs at a Glance
| Screen size | 1.3 inches diagonal |
| Resolution | 240 × 240 pixels |
| Colors | 65,536 colors (16-bit) |
| Interface | SPI (Serial Peripheral Interface) |
| Voltage | 3.3V (powered by ESP32) |
🔌 What is SPI? (And why should I care?)
SPI — Serial Peripheral Interface — is a communication "language" that your ESP32 and TFT screen use to talk to each other. Think of it like texting: the ESP32 sends messages (pixel data), and the TFT displays them.
- MOSI — Master Out, Slave In (ESP32 → TFT, sends data)
- MISO — Master In, Slave Out (TFT → ESP32, sends data back)
- SCLK — Clock (keeps both devices in sync)
- CS — Chip Select (tells the TFT "hey, I'm talking to you!")
🔗 Wiring Diagram (ESP32 → 1.3" TFT)
| TFT Pin | ESP32 Pin | What it does |
|---|---|---|
| VCC | 3.3V | Power supply for the screen |
| GND | GND | Ground (completes the circuit) |
| SCL (CLK) | GPIO 18 | Clock signal |
| SDA (MOSI) | GPIO 23 | Data from ESP32 to screen |
| RES (RST) | GPIO 4 | Reset pin |
| DC | GPIO 2 | Data/Command selector |
| CS | GPIO 5 | Chip select |
| BLK | 3.3V or GPIO | Backlight (optional) |
Today's Activity: Display Your Name on the TFT!
Let's write your first Medibox code! Follow the steps below carefully.
Using the wiring table above, connect your TFT display to the ESP32 on your breadboard. Double-check each wire — a wrong connection can prevent the screen from working!
Open Arduino IDE on your laptop. Make sure you have selected ESP32 Dev Moduleas your board under Tools → Board.
Go to Sketch → Include Library → Manage Libraries. Search for TFT_eSPIby Bodmer and click Install. This library speaks SPI to our TFT screen.
Copy the code below into a new sketch and upload it to your ESP32:
TFT_GREEN to TFT_CYANor TFT_YELLOW!Self-Learn Questions
Answer these questions to check your understanding. Some you can figure out from today's session, others will need a bit of extra research — use Google or ask your instructor!
Multiple Choice
Q1. What does SPI stand for?
Q2. How many wires does SPI typically use?
Q3. Which ESP32 pin is used for the SPI Clock (SCLK)?
Q4. What is the resolution of the 1.3" TFT display we used today?
Q5. What Arduino function do we call to set the cursor position on the TFT screen?
Short Answer
Q6. In your own words, explain what SPI is and why we need it to use the TFT display.
Q7. What would happen if you connected the VCC pin of the TFT to 5V instead of 3.3V? (Hint: look up the TFT's max voltage in its datasheet.)
Q8. What is the difference between `tft.print()` and `tft.println()`? Try both and describe what you see.
Glossary
Electronics in Action!
Day 2: Putting It All Together
Saturday, March 21, 2026 · 3:00 PM
Component 1: Push Buttons
Push buttons are one of the most basic ways for a user to interact with our Medibox. We'll use two push buttons — one to navigate left/up and one to navigate right/down in the menu.
🔗 Wiring Two Buttons to ESP32
| Button | Button Pin | ESP32 Pin | Other Connection |
|---|---|---|---|
| Button 1 (Left) | One leg | GPIO 34 | Other leg → GND |
| Button 2 (Right) | One leg | GPIO 35 | Other leg → GND |
Component 2: The Buzzer
Our Medibox needs to alert us when it's time for medicine! We'll use a passive buzzer connected to an ESP32 pin. We control it with PWM (Pulse Width Modulation) to create different tones.
Passive buzzer: You control the frequency — you can play musical notes and alarms! We use a passive buzzer for the Medibox.
Component 3: HTU21D Temperature & Humidity Sensor
The Medibox needs to monitor the storage environment — medicines are sensitive to temperature and humidity! The HTU21D sensor measures both and sends the data to the ESP32 using I2C protocol.
- SDA — Data line
- SCL — Clock line
🔗 HTU21D Wiring
| HTU21D Pin | ESP32 Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO 21 (SDA) |
| SCL | GPIO 22 (SCL) |
tft.setCursor() and tft.print(temp).Bonus: AMS117 5V Voltage Regulator
The AMS117 5V is a voltage regulator module — its job is to provide a stable 5V output from a higher voltage source (like a 9V battery). Our Medibox uses this to ensure all components get a clean, stable supply voltage.
Self-Learn Questions
Multiple Choice
Q1. What type of buzzer allows you to control the frequency (tone)?
Q2. Which GPIO pins on the ESP32 are used for I2C by default?
Q3. What does INPUT_PULLUP mean when setting a pin mode?
Q4. What is the purpose of the delay(200) after reading a button?
Q5. The HTU21D sensor measures which two environmental values?
Short Answer
Q6. Compare SPI and I2C protocols: what are the main differences in terms of wires needed and how multiple devices are supported?
Q7. Why is debouncing important when reading button presses? What problem does it solve?
Q8. Design a plan for your Medibox alarm: what tone frequencies would you use for the morning alarm vs an emergency low-battery warning? Explain your reasoning.