Demo Day
Time: 135 min
Learning Objectives
By the end of this lab you will be able to:
- Present technical work clearly and concisely
- Demonstrate a working embedded system under test conditions
- Evaluate performance against defined success criteria
- Analyze what worked, what failed, and why
- Learn from other implementations of the same problem
You will prepare a short demo, run under competition conditions, and present decisions and results. The focus is on reliability and communication.
Why This Lab Matters
Engineering isn't finished when a system works once. It is finished when you can demonstrate, explain, and defend it. Demo Day rewards clear technical communication, measurable performance, and reliable execution under constraints.
Pre-Lab Preparation
Prepare
- [ ] Test your robot on practice track
- [ ] Backup your code (USB drive or git)
- [ ] Charge batteries / bring spares
- [ ] Prepare 2-minute presentation
Presentation Content (2 min)
- Approach (30 sec): How does your robot work?
- Challenges (30 sec): What was hardest?
- Data (30 sec): What did you learn from measurements?
- Demo (30 sec): Quick highlight or lesson learned
Checklist
- [ ] Robot charges and turns on
- [ ] Code loads correctly
- [ ] Button starts the robot
- [ ] LEDs show state correctly
The Competition
Competition Track
See the full track specification with dimensions and construction guide. → Track Specification
┌─────────────────────────────────────────────────────────────────┐
│ │
│ DELIVERY ROBOT CHALLENGE │
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │WAREHOUSE│ ════LINE════ ┐ │ ZONE A │ │
│ │ (START) │ │ │(dropoff)│ │
│ └─────────┘ │ ┌────┐ └─────────┘ │
│ ▲ ├────│ │ │
│ │ │ └────┘ ┌─────────┐ │
│ │ │ │ ZONE B │ │
│ └───────────────────┴════LINE═══════│(dropoff)│ │
│ └─────────┘ │
│ │
│ SCORING: │
│ ──────────────────────────────────────────────────── │
│ Complete delivery to any zone ............... 60 pts │
│ Correct zone .............................. +10 pts │
│ Return to warehouse ....................... +10 pts │
│ Time bonus (< 30s) ........................ +10 pts │
│ Time bonus (< 20s) ........................ +10 pts │
│ Smoothness (no wobble) .................... +5 pts │
│ Clear code explanation .................... +5 pts │
│ ──────────────────────────────────────────────────── │
│ Maximum possible: 110 pts │
│ │
└─────────────────────────────────────────────────────────────────┘
Schedule
| Time | Activity |
|---|---|
| 0:00 - 0:15 | Setup & practice runs |
| 0:15 - 0:30 | Competition Round 1 |
| 0:30 - 0:45 | Break & adjustments |
| 0:45 - 1:00 | Competition Round 2 |
| 1:00 - 1:15 | Final Round (top teams) |
| 1:15 - 1:45 | Presentations |
| 1:45 - 2:00 | Awards & reflection |
Competition Strategy
Pacing and Battery Management
- Start conservative. Use a lower base speed (60-70%) for Round 1 to guarantee a completed run. Increase speed only in later rounds once you've proven reliability.
- Charge between rounds. Plug in your battery during breaks. Even 10 minutes of charging helps. Voltage drop changes Kp effectiveness.
- Calibrate fresh each round. Run
robot.imu.calibrate()right before each attempt. Temperature changes between rounds affect gyro bias. - Have a fallback plan. If your fancy state machine fails, have a simpler version ready (e.g., just line follow + stop at junction). 60 points for a basic delivery beats 0 for a failed attempt.
Presentation Coaching
A clear technical demo has three parts:
- State what will happen before you start. ("Our robot will follow the line to the first junction, turn left, and deliver to Zone A.") This shows you understand your system.
- Narrate during the demo. ("It's detecting the junction now... turning... back on the line.") This shows you can read your robot's behavior in real time.
- Explain one number. Show one measurement that drove a design decision ("We set Kp=32 because our data showed oscillation above 40"). This is more convincing than listing features.
Common mistakes: Reading slides word-for-word, saying "it usually works," not explaining WHY you chose an approach.
Day-of Troubleshooting
- Robot won't start / code won't upload: Try a different USB cable. Power cycle the robot (switch off, wait 3 seconds, switch on). If
mpremote connect listshows nothing, try a different USB port. - Robot behaves differently than yesterday: Battery voltage changed overnight. Recalibrate everything. Check if the track surface is different (gym floor vs classroom floor).
- Line following works but turns are off: Temperature affects gyro calibration. Calibrate immediately before your run, not 10 minutes before.
- Robot works on practice track but fails on competition track: Track geometry may differ. Check if the tape width or curve radius is different. Adjust
OBSTACLE_DISTANCEor junction detection sensitivity. - "It worked once but now it doesn't": This is the #1 demo day complaint. It usually means a timing issue — add a
time.sleep(0.5)after calibration and before starting.
Part 1: Setup & Practice (15 min)
Task 1.1: Pre-Competition Checklist
| Check | Status |
|---|---|
| Robot powers on | ☐ |
| Code loads without errors | ☐ |
| Button starts mission | ☐ |
| LEDs indicate states | ☐ |
| Gyro calibration works | ☐ |
| Line following is smooth | ☐ |
| Junction detection works | ☐ |
| Turns are accurate | ☐ |
Task 1.2: Practice Run
Use the practice track to: 1. Verify line following works 2. Test junction detection 3. Check turn accuracy 4. Time a complete run
Practice times: - Run 1: _ seconds - Run 2: seconds - Run 3: __ seconds
Checkpoint — Ready to Compete
All checklist items are checked, and you've completed at least 2 successful practice runs. Your times should be consistent (within ±5 seconds). If times vary wildly, check battery charge and recalibrate.
Part 2: Competition Rounds
Round 1: Qualifying
Each team gets 2 attempts. Best score counts.
| Attempt | Reached Zone | Correct Zone | Returned | Time | Smooth | Score |
|---|---|---|---|---|---|---|
| 1 | ☐ | ☐ | ☐ | s | ☐ | |
| 2 | ☐ | ☐ | ☐ | s | ☐ |
Round 2: Challenge
Same challenge, fresh start.
| Attempt | Reached Zone | Correct Zone | Returned | Time | Smooth | Score |
|---|---|---|---|---|---|---|
| 1 | ☐ | ☐ | ☐ | s | ☐ | |
| 2 | ☐ | ☐ | ☐ | s | ☐ |
Final Round (if applicable)
Top teams compete for best time.
| Team | Time | Notes |
|---|---|---|
Checkpoint — Competition Complete
You should have scores recorded for all attempts. Even if your robot didn't complete the course, you've learned something — document what went wrong and why in your notes.
Part 3: Presentations (30 min)
Background: Engineering vs Hobby
The difference between a hobbyist and an engineer: "It works" vs "Here's data proving it works under specified conditions." Present ONE number that proves your approach: mean tracking error, success rate over N runs, or lap time consistency. The engineering process you followed — measure, model, design, validate — is the transferable skill, not the specific robot.
Your Presentation (2 min)
Structure:
┌─────────────────────────────────────────────────────────────────┐
│ │
│ MINUTE 1: Technical Approach │
│ ───────────────────────────── │
│ • "Our robot uses [state machine / P-control / etc.]" │
│ • "Key parameters: Kp = ___, Base speed = ___" │
│ • "We detect zones by [barcode / junction count / etc.]" │
│ │
│ MINUTE 2: Lessons Learned │
│ ───────────────────────────── │
│ • "Biggest challenge was ___" │
│ • "Data showed us that ___" │
│ • "If we did it again, we'd ___" │
│ │
└─────────────────────────────────────────────────────────────────┘
Evaluation Criteria
| Criterion | Points | Your Score |
|---|---|---|
| Clear explanation of approach | /2 | |
| Technical accuracy | /2 | |
| Lessons learned / reflection | /2 | |
| Time management (under 2 min) | /1 | |
| Total | /7 |
Notes from Other Teams
| Team | Interesting Technique | Question to Ask |
|---|---|---|
Checkpoint — Presentation Delivered
You presented your approach in under 2 minutes and answered at least one question. You noted at least one interesting technique from another team.
Part 4: Reflection
Your Robot's Journey
┌─────────────────────────────────────────────────────────────────┐
│ │
│ Robot Unboxing │
│ └─► First blink, first beep, first movement! │
│ │
│ GPIO & Sensors │
│ └─► Discovery: How GPIO and optocoupler sensors work │
│ │
│ Timing & Ultrasonic │
│ └─► Discovery: Blocking code kills real-time control │
│ └─► FIX: Non-blocking patterns, rate scheduling │
│ │
│ Make It Move │
│ └─► Discovery: Time-based turns are unreliable │
│ │
│ Seeing the Line │
│ └─► P-control works! Discovery: What does Kp do? │
│ │
│ Precise Turns + Data Logging │
│ └─► Gyroscope + calibration + drift │
│ └─► Stop guessing, start measuring │
│ │
│ State Machines │
│ └─► Complex behavior + obstacle avoidance, clean code │
│ │
│ Hardware Abstraction + Architecture │
│ └─► Peek under the hood + professional code organization │
│ │
│ Weeks 9-11: Project Phase │
│ └─► Creative project - make it yours! │
│ │
│ Week 12: Demo Day │
│ └─► Show what you built! │
│ │
└─────────────────────────────────────────────────────────────────┘
Final Reflection Questions
- What was your proudest moment?
- What was the hardest bug to fix?
- What would you do differently?
- What did you learn about embedded systems?
- What surprised you most?
Course Summary
Skills You Developed
| Skill | Lab | Real-World Application |
|---|---|---|
| Basic I/O, LEDs, PWM | 01 | Any microcontroller project |
| GPIO, sensors, optocouplers | 02 | Any sensor-based system |
| Timing, non-blocking code | 03 | All real-time systems |
| Motor control, open-loop | 04 | Robotics, drones |
| P-control, feedback loops | 05 | Industrial control |
| IMU, data-driven tuning | 06 | Drones, VR, phones |
| State machines | 07 | Any complex system |
| Abstractions + architecture | 08 | Professional software |
| System integration | 09-11 | Complete products |
The Engineering Mindset
┌─────────────────────────────────────────────────────────────────┐
│ │
│ BEFORE THIS COURSE: AFTER THIS COURSE: │
│ │
│ "I'll try random things" "I'll measure and analyze" │
│ │
│ "It seems to work" "Data shows it works" │
│ │
│ "Why doesn't this work?!" "Let me check the logs" │
│ │
│ "Code in one big file" "Modules with clear purpose" │
│ │
│ "Guessing parameters" "Systematic tuning" │
│ │
│ YOU ARE NOW AN EMBEDDED SYSTEMS ENGINEER! │
│ │
└─────────────────────────────────────────────────────────────────┘
Awards
| Award | Team | Notes |
|---|---|---|
| 🥇 Fastest Delivery | ||
| 🥈 Runner Up | ||
| 🥉 Third Place | ||
| 🎯 Most Accurate Turns | ||
| 📊 Best Data Analysis | ||
| 💻 Cleanest Code | ||
| 🎨 Most Creative Solution | ||
| 🔧 Best Debugging Story |
What's Next?
Continue Learning
| Path | Next Steps |
|---|---|
| More Embedded | ES102 (Real-Time Systems), ES103 (Advanced Control) |
| Robotics | ROS2, SLAM, Computer Vision |
| Machine Learning | Sensor fusion, Kalman filters, neural networks |
| Hardware | PCB design, custom sensors |
| Projects | Drones, autonomous vehicles, IoT |
Keep Your Robot!
Ideas for future projects: - Add camera for vision - Implement obstacle mapping - Add wireless control app - Try different challenges (maze solving, sumo) - Teach someone else!
Deliverables
Submit:
- Final code (zipped project folder)
- All modules
- config.py with final tuned values
-
main.py
-
Calibration data
- speed_calibration.csv
-
kp_tuning results
-
Documentation (1 page)
- State machine diagram
- Final parameters (Kp, speeds, etc.)
-
Lessons learned
-
Presentation slides (optional)
Final Logbook Entry
Date: _____
Competition Results: - Best score: _ - Best time: ___
Key Learnings: 1. ______ 2. ______ 3. _________
What I'm Most Proud Of:
Instructor Signature: ___
Recap
A working demo is proof of integration, clear explanation is part of engineering quality, and reflection turns this project into lasting skill.
Congratulations!
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 🎓 ES101 COMPLETE 🎓 │
│ │
│ You started with a box of parts. │
│ You end with a working robot and engineering skills. │
│ │
│ From blinking LEDs to autonomous delivery. │
│ From guessing to measuring. │
│ From spaghetti code to clean architecture. │
│ │
│ Welcome to Embedded Systems Engineering! │
│ │
└─────────────────────────────────────────────────────────────────┘
Embedded Systems (ES101) - Óbuda University