Cursor AI Transcript · HTMAA 2025
AI-assisted development of training section including soldering guides, QPAD programming, and troubleshooting procedures
in the training section for week2, make a new subsection called how to solder (almost) anything and add the videos for:
-- week2/training/wire-solder and explain that you start with one edge as you see in the video to keep the part in place, then solder the rest easy by keeping your wrist stable and the solder tip on the pad to heat it up with part, and slowly bringing in solder
-- week2/training/apply-solder-paste with week2/training/place-microcontroller and week2/training/heat-gun-paste (in that order side by side in one row of videos) and explain that you put the solder paste first, place the part , heat up
for each video put a caption under it, add links to the guide in the subsection Electronics & Soldering Training in the description
I'll help you add a new "How to Solder (Almost) Anything" subsection to the training section in week2.html. Let me first read the current file to understand the structure and then add the new content.
Now I need to find the training section and add the new "How to Solder (Almost) Anything" subsection. I can see the training section starts around line 219. Let me add the new subsection with the videos and explanations as requested.
Week 2 · HTMAA 2025 · Embedded Programming
Week 2
Embedded Programming · HTMAA 2025
Week Highlights
Key achievements and insights from the embedded programming week, including successful microcontroller programming, sensor integration, and the development of the ReactionAge reaction time measurement system.
Hello World! Success
First successful embedded programming implementation with microcontroller and display
ReactionAge Demo
ReactionAge system in action - measuring reaction time and predicting age
Embedded Programming Design Trades
Comprehensive analysis of critical design decisions in embedded system development
💻 Design Files Available
Download Arduino code, view circuit diagrams, and access all embedded programming assets from this week's assignments
📄 View Design Files
Table of Contents
Course Content
Training & Documentation
Embedded Programming
This week focuses on embedded programming fundamentals, exploring how to program microcontrollers and create interactive electronic systems. We'll dive into the world of digital electronics, sensors, and real-time programming to build responsive devices that can sense, process, and react to their environment.
• Introduction to microcontrollers and embedded systems
• Programming fundamentals for real-time applications
• Sensor integration and data processing
This Week's Goals
- Master Embedded Programming
Learn microcontroller programming, sensor integration, and real-time system design
- Build Interactive Systems
Create responsive electronic devices that can sense and react to environmental inputs
- Develop ReactionAge Project
Implement a reaction time measurement system based on research methodologies
Assignments
- Group Assignment
Collaborative embedded programming project focusing on sensor integration and real-time data processing
- Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature
Tools & Materials
- Microcontrollers
Arduino, ESP32, or similar development boards
- Development Environment
Arduino IDE, PlatformIO, or VS Code with embedded extensions
- Sensors & Components
Buttons, LEDs, displays, accelerometers, and other input/output devices
- Prototyping Tools
Breadboards, jumper wires, resistors, and basic electronic components
Training Documentation
Essential training materials and resources for embedded programming fundamentals, microcontroller setup, and sensor integration techniques.
Electronics & Soldering Training
Soldering Fundamentals
Comprehensive guide to soldering techniques for embedded electronics, covering both wire soldering and solder paste methods.
Wire Soldering
- Temperature: 720-800°F
- Melt pad onto electrode first
- Anchor arms for precision control
- Use appropriate tip size for part
- Work from low to high profile parts
Solder Paste
- Use gloves for protection
- Highest magnification possible
- Temperature: 270-330°C
- Heat all sides together
- Required for SMD components
Safety First:
Always wear safety glasses and use proper ventilation. Lead-free solder requires extra caution due to flux crystallization at high temperatures.
How to Solder (Almost) Anything
Step-by-step video demonstrations of essential soldering techniques for embedded electronics, covering both wire soldering and surface-mount component assembly.
Wire Soldering Technique
Learn the proper technique for soldering wires to components, starting with one edge to keep the part in place, then soldering the rest easily by keeping your wrist stable and the solder tip on the pad to heat it up with the part, and slowly bringing in solder.
Wire soldering demonstration showing proper technique and wrist stability
Solder Paste Assembly
Complete process for surface-mount component assembly: apply solder paste first, place the component, then heat up with a heat gun to create strong, reliable connections.
Applying solder paste to PCB pads
Placing microcontroller on prepared solder paste
Using heat gun to reflow solder paste and complete the connection
Pro Tips:
For detailed soldering guides and advanced techniques, refer to the Electronics & Soldering Training section above for comprehensive documentation and resources.
• Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
• Sensor Integration Workshop - Hands-on training for connecting and programming various sensors
• Real-time System Design - Principles of creating responsive embedded systems
• Debugging Techniques - Tools and methods for troubleshooting embedded code
Helpful Documentation
Comprehensive documentation covering embedded programming fundamentals, electronics theory, and practical implementation guides.
HTMA Electronics Slides
Official course slides covering microcontroller architecture, I/O techniques, sensor integration, and real-time system design.
Key Topics Covered
- Microcontroller Programming
Architecture and fundamentals
- Sensor Integration
Data processing methods
- Real-time Systems
Design principles and optimization
Group Assignment: Embedded Programming Design Trades
Comprehensive analysis of design tradeoffs in embedded programming, covering language selection, development workflows, and microcontroller choices. This collaborative project examines the critical decisions that shape embedded system development and their impact on project success.
Design Tradeoffs Summary
Architecture
Example Boards
Toolchain / Workflow
Strengths
Limitations
AVR (8-bit)
ATtiny44, ATmega328 (Arduino Uno)
avr-gcc, avrdude; Arduino IDE for simplified workflow
Mature ecosystem, simple to program, widely taught
Limited memory & speed, not ideal for complex tasks
ARM Cortex-M
SAMD21, STM32, Teensy
arm-none-eabi-gcc, OpenOCD, PlatformIO; Arduino or CircuitPython support
High performance, industry standard, strong debugging tools
Toolchain setup can be complex
RP2040
Raspberry Pi Pico, XIAO RP2040
Pico SDK (C/C++), MicroPython, Arduino IDE; custom PIO assembly for peripherals
Flexible, inexpensive, unique PIO hardware for custom protocols
Requires learning PIO for advanced features
ESP8266 / ESP32
NodeMCU, Sparkfun/Adafruit ESP boards
Espressif SDK/IDF, Arduino IDE, MicroPython
Built-in Wi-Fi/Bluetooth, large community support, IoT-ready
Higher power usage, less deterministic timing
RISC-V
HiFive boards, experimental dev kits
riscv-gnu-toolchain, GDB, newer SDKs
Open-source ISA, growing ecosystem, academic/educational interest
Toolchain less mature, fewer libraries & examples
Comprehensive comparison of microcontroller architectures and their tradeoffs in embedded programming
Language Tradeoff
Programming language tradeoff analysis showing performance vs development speed considerations
As illustrated in the language tradeoff diagram above, the choice of programming language involves critical tradeoffs between performance and development speed. The analysis shows how different languages balance factors like memory efficiency, execution speed, development time, and ecosystem support for embedded system development.
High Performance Languages
- C/C++: Maximum control, minimal overhead
- Rust: Memory safety with performance
- Assembly: Direct hardware control
Rapid Development Languages
- Python: Fast prototyping, rich libraries
- JavaScript: Web integration capabilities
- MicroPython: Python for microcontrollers
Development Workflow Tradeoff
Development workflow tradeoff analysis comparing different methodologies and their impact on project outcomes
The development workflow tradeoff diagram above demonstrates how different methodologies balance project timeline, code quality, and team collaboration. This visual analysis compares traditional waterfall approaches with agile methodologies, showing the impact of various toolchains, testing strategies, and deployment processes on embedded system development success.
Traditional Approaches
- Waterfall: Sequential, documentation-heavy
- V-Model: Testing integrated with design
- Spiral: Risk-driven iterative approach
Modern Approaches
- Agile: Iterative, customer-focused
- DevOps: Continuous integration/deployment
- Test-Driven Development: Quality-first
Microcontroller Tradeoff
Microcontroller tradeoff analysis showing performance vs power consumption and cost considerations
The microcontroller tradeoff diagram above illustrates the critical balance between performance, power consumption, and cost in embedded system design. This visual analysis evaluates different architectures, processing capabilities, memory configurations, and peripheral options, providing a clear framework for selecting the optimal platform based on specific application requirements.
Low-Power Options
- ARM Cortex-M0+: Ultra-low power
- PIC: Simple, cost-effective
- MSP430: Energy-efficient design
High-Performance Options
- ARM Cortex-M4: DSP capabilities
- ESP32: WiFi/Bluetooth integrated
- STM32: Rich peripheral set
Use Case Analysis
Architecture
Workflow Process
Key Characteristics
SAMD21 (ARM Cortex-M)
• Write code in C/C++ (Arduino IDE or PlatformIO)
• Compile with arm-none-eabi-gcc
• Upload using OpenOCD via USB or SWD debugger
• Debug with GDB or serial monitor
Professional-grade debugging, industry standard tools
RP2040 (Raspberry Pi Pico)
• Write code in C/C++ (Pico SDK) or MicroPython
• Compile with CMake + GCC toolchain
• Drag-and-drop .uf2 file to Pico's USB mass storage device
• (Optional) Use custom PIO assembly for hardware interfaces
Accessibility and flexibility, drag-and-drop + PIO
Workflow examples showing different development approaches for ARM and RP2040 architectures
The example workflow table above provides specific recommendations for different embedded system applications, showing how the tradeoff analyses from the previous sections translate into practical implementation strategies. This comprehensive table demonstrates the relationship between project requirements and optimal technology choices.
Key Findings
As demonstrated in the workflow table above, ARM workflows emphasize professional-grade debugging with industry-standard tools, while RP2040 workflows emphasize accessibility and flexibility through drag-and-drop deployment and unique PIO capabilities.
The comprehensive architecture comparison shows that optimal design choices depend heavily on project constraints, performance requirements, and development timeline.
High-performance applications favor ARM Cortex-M with professional toolchains, while rapid prototyping benefits from RP2040's flexible development environment and built-in features.
Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature. This project combines embedded programming with scientific measurement principles to create a tool for studying human cognitive performance.
Core Features
- Stimulus Generation
Visual/auditory stimuli with precise timing
- Response Detection
Accurate measurement using buttons/sensors
- Data Analysis
Statistical processing and visualization
Research Foundation
Based on PLOS ONE study (2017) examining reaction time variability and cognitive decline.
Repository: github.com/saleemaldajani/reaction-timer-saleemaldajani
Reaction time model showing the relationship between age and cognitive performance, based on research from PLOS ONE (2017)
Related Research
Parts List / Bill of Materials
Download BOM
#
Image
Part
Description
Qty
Unit Price
Datasheet
Price
1
ATmega32 Microcontroller
8-bit AVR MCU, 32 KB Flash, 2 KB SRAM, ADC, timers, USART
1
$7.50
PDF
$7.50
2
0.96″ OLED Display Module (SSD1306)
128×64 mono OLED, I²C/SPI interface
1
$2.50
PDF
$2.50
3
Male Header Pins (2.54 mm)
Breakaway straight male headers
2
$0.20
PDF
$0.40
4
Dual-Row Header (2×5, 2.54 mm)
10-pin dual-row header, unshrouded
1
$0.50
PDF
$0.50
5
SMD MOSFET (AO3400A example)
N-channel MOSFET, SOT-23
2
$0.15
PDF
$0.30
6
SMD Capacitor (MLCC 0603 example)
Ceramic capacitor, value TBD
5
$0.03
PDF
$0.15
7
SMD Resistors – 1 kΩ (code '1001')
Precision SMD resistors
5
$0.02
PDF
$0.10
8
SMD LED (0603, color TBD)
Indicator LED
2
$0.05
PDF
$0.10
9
USB-C Receptacle
Surface-mount USB Type‑C connector
1
$0.60
PDF
$0.60
10
Custom PCB (Capacitive-Touch Board)
Project-specific PCB
1
$10.00
N/A
$10.00
TOTAL
$22.15
Complete bill of materials for the ReactionAge embedded programming project. All prices are in USD and subject to supplier variations.
Nintendo Switch Controller Training for Toddlers
An interactive training module designed for young children, utilizing Nintendo Switch controller input to create an engaging letter-matching game that develops motor skills and cognitive recognition.
Game Mechanics
- Button Mapping
A, B, X, Y in inverted layout
- Visual Stimulus
Flashing letters with bright colors
- Progressive Difficulty
Adapts based on performance
Educational Benefits
- Motor Skills
Hand-eye coordination
- Letter Recognition
Alphabet learning
- Attention Building
Focus and concentration
Technical Features
- Controller Support
Pro Controller & Joy-Con
- Display System
Large, colorful letters
- Progress Tracking
Analytics & feedback
Design Files
Source code, circuit diagrams, and documentation files for embedded programming projects.
ReactionAge Arduino Code
Download .ino
Key Features
Hardware Integration
- OLED Display (SSD1306)
- RGB LED indicators
- Capacitive touch sensors
- State machine architecture
Reaction Time Analysis
- Multiple prediction models
- Statistical data collection
- CSV export functionality
- Real-time age prediction
Code Preview
// Reaction time prediction models
const float A_POOLED = -35.392393f, B_POOLED = 0.1930446f;
const float A_MALE = -58.123019f, B_MALE = 0.2640664f;
const float A_FEMALE = -31.603679f, B_FEMALE = 0.176111015f;
float predictAgeFromRT(unsigned long rt_ms) {
float x = (float)rt_ms;
float a, b, c;
switch (currentModel) {
case SX_MALE: a=A_MALE; b=B_MALE; c=C_MALE; break;
case SX_FEMALE: a=A_FEMALE; b=B_FEMALE; c=C_FEMALE; break;
default: a=A_POOLED; b=B_POOLED; c=C_POOLED; break;
}
return a + bx + cx*x;
}
Project Resources
Circuit Diagrams
- Microcontroller connection schematics
- Sensor integration diagrams
- Power supply and signal conditioning circuits
Reflections & Learnings
[Reflection notes placeholder.]
Contributions
Acknowledgments for collaborative support and technical assistance during the embedded programming project development.
Technical Support & Collaboration
Eghosa Ohenehn
Contributed valuable insights and technical discussions about microcontroller tradeoffs during the group assignment development. Provided expertise in evaluating different microcontroller architectures and their suitability for various embedded programming applications.
Anthony Pennes
Engaged in extensive discussions throughout the embedded programming design trades section, providing valuable technical insights and collaborative support during the group assignment development process.
Quentin Bolsée
Participated in numerous office hours discussions about embedded programming design trades, contributing significantly to the technical analysis and collaborative development of the group assignment content.
Special thanks to the collaborative learning environment that enabled knowledge sharing and technical problem-solving throughout the embedded programming week.
Ethical AI Use
Transparent documentation of AI assistance used in this week's work, following course guidelines for ethical AI usage.
AI-Assisted Template Generation and Task Planning
Used ChatGPT to generate the weekly template HTML structure and styling framework, and created structured task prompts
for week 2 embedded programming content development.
AI-Assisted Content Development and Page Structure
Used Cursor AI for iterative content development, page structure optimization, and aesthetic improvements.
The AI helped with HTML/CSS implementation, content organization, and maintaining consistent styling across the embedded programming documentation.
AI-Assisted BOM Table Implementation
Used Cursor AI to implement the comprehensive BOM table with clickable images, datasheet links, and full-width responsive design.
The AI helped with HTML table structure, CSS styling, and integration of CSV data into an aesthetically pleasing table format.
AI-Assisted Image Recognition and BOM Creation
Used ChatGPT for image recognition of electronic components to identify parts and construct the bill of materials CSV file.
The AI analyzed component images and provided detailed part specifications, descriptions, and pricing information for the embedded programming project.
AI-Assisted Project Content Updates and Documentation
Used Cursor AI for comprehensive project content updates, documentation improvements, and HTML structure optimization.
The AI assisted with content organization, styling consistency, and integration of multimedia elements for the embedded programming documentation.
AI-Assisted Arduino Programming and Code Development
Used ChatGPT for Arduino programming assistance based on the ReactionAge project code from
GitHub repository
and Quentin Bolsée's QPAD documentation available on the
course website embedded system assignment page.
The AI provided guidance on embedded programming concepts, code optimization, and integration with the QPAD-xiao board design.
AI-Assisted Group Assignment Content Development and Table Implementation
Used Cursor AI for comprehensive development of the embedded programming design trades group assignment section.
The AI assisted with creating structured subsections for language, development workflow, and microcontroller tradeoffs,
implementing professional HTML tables with data extracted from PowerPoint presentations, and integrating download links for PDF and PPTX files.
Perfect! I've successfully added the new "How to Solder (Almost) Anything" subsection to the training section in week2.html. Here's what I've implemented:
week2/training/wire-solder.mp4
- Explanation: Describes starting with one edge to keep the part in place, then soldering the rest by keeping wrist stable and solder tip on the pad to heat it up with the part, slowly bringing in solder
- Caption: "Wire soldering demonstration showing proper technique and wrist stability"
2. Solder Paste Assembly Section:
- Three videos arranged as requested:
- week2/training/solder-paste-apply.mp4
and week2/training/place-microcontroller.mp4
side by side in one row
- week2/training/heat-gun-paste.mp4
below them
- Explanation: Describes the complete process - apply solder paste first, place the component, then heat up with heat gun
- Individual captions for each video explaining the specific step
3. Additional Features: - Professional styling consistent with the existing design - Links to the main "Electronics & Soldering Training" section for additional resources - Responsive video layout that works on different screen sizes - Clear section headers and descriptions
The new subsection is now integrated into the training documentation and provides comprehensive video-based instruction for both wire soldering and surface-mount component assembly techniques.
under training • Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
add a subsection that links the following guides
@https://gitlab.cba.mit.edu/quentinbolsee/qpad-xiao
@https://gitlab.cba.mit.edu/quentinbolsee/qpad21
@https://gitlab.cba.mit.edu/quentinbolsee/qpad-xiao-esp32s3
for each link, put a full description of whats in the repo, make explicit links to the code repos and what's in them too for each one
@https://gitlab.cba.mit.edu/quentinbolsee/qpad-xiao-esp32s3/-/tree/main/code/Arduino?ref_type=heads
@https://gitlab.cba.mit.edu/quentinbolsee/qpad-xiao/-/tree/main/code?ref_type=heads
@https://gitlab.cba.mit.edu/quentinbolsee/qpad21/-/tree/main/code?ref_type=heads
make sure to summarize the readme sections on the repo to explain what is necessary to program
in a nutshell, qpad-xiao's don't need to be burned by a bootloader, just need to tell the IDE that its a xiao when programming it according to the steps. the d21 needs to be burned by a bootloader using a xiao programmer chip. to get the programmer chip configured you need to follow the steps in the guide and drag and drop the .uf2 file once it shows up as a hard disk after you boot/reset it (add links to how to do these things). add the bootloader steps according to the menu in week2/training/burn-bootloader-settings (read the image and make a list of all the selections) then click burn bootloader
once you have the board connected to the IDE, you just compile and upload. you can always debug your code by compiling without IDing the chip, once code is ready, hit upload!
make this as descriptive and friendly as possible. be structured. be concise. don't lose key details though!
I'll add a comprehensive subsection under the Microcontroller Programming Basics that covers the QPAD development boards and their programming requirements. Let me first read the bootloader settings image to get the exact menu selections.
Let me search for the current training section structure and then add the new QPAD programming guide subsection.
Now I'll add the comprehensive QPAD programming guide subsection right after the training list. Let me insert it before the closing of the training section.
Week 2 · HTMAA 2025 · Embedded Programming
Week 2
Embedded Programming · HTMAA 2025
Week Highlights
Key achievements and insights from the embedded programming week, including successful microcontroller programming, sensor integration, and the development of the ReactionAge reaction time measurement system.
Hello World! Success
First successful embedded programming implementation with microcontroller and display
ReactionAge Demo
ReactionAge system in action - measuring reaction time and predicting age
Embedded Programming Design Trades
Comprehensive analysis of critical design decisions in embedded system development
💻 Design Files Available
Download Arduino code, view circuit diagrams, and access all embedded programming assets from this week's assignments
📄 View Design Files
Table of Contents
Course Content
Training & Documentation
Embedded Programming
This week focuses on embedded programming fundamentals, exploring how to program microcontrollers and create interactive electronic systems. We'll dive into the world of digital electronics, sensors, and real-time programming to build responsive devices that can sense, process, and react to their environment.
• Introduction to microcontrollers and embedded systems
• Programming fundamentals for real-time applications
• Sensor integration and data processing
This Week's Goals
- Master Embedded Programming
Learn microcontroller programming, sensor integration, and real-time system design
- Build Interactive Systems
Create responsive electronic devices that can sense and react to environmental inputs
- Develop ReactionAge Project
Implement a reaction time measurement system based on research methodologies
Assignments
- Group Assignment
Collaborative embedded programming project focusing on sensor integration and real-time data processing
- Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature
Tools & Materials
- Microcontrollers
Arduino, ESP32, or similar development boards
- Development Environment
Arduino IDE, PlatformIO, or VS Code with embedded extensions
- Sensors & Components
Buttons, LEDs, displays, accelerometers, and other input/output devices
- Prototyping Tools
Breadboards, jumper wires, resistors, and basic electronic components
Training Documentation
Essential training materials and resources for embedded programming fundamentals, microcontroller setup, and sensor integration techniques.
Electronics & Soldering Training
Soldering Fundamentals
Comprehensive guide to soldering techniques for embedded electronics, covering both wire soldering and solder paste methods.
Wire Soldering
- Temperature: 720-800°F
- Melt pad onto electrode first
- Anchor arms for precision control
- Use appropriate tip size for part
- Work from low to high profile parts
Solder Paste
- Use gloves for protection
- Highest magnification possible
- Temperature: 270-330°C
- Heat all sides together
- Required for SMD components
Safety First:
Always wear safety glasses and use proper ventilation. Lead-free solder requires extra caution due to flux crystallization at high temperatures.
How to Solder (Almost) Anything
Step-by-step video demonstrations of essential soldering techniques for embedded electronics, covering both wire soldering and surface-mount component assembly.
Wire Soldering Technique
Learn the proper technique for soldering wires to components, starting with one edge to keep the part in place, then soldering the rest easily by keeping your wrist stable and the solder tip on the pad to heat it up with the part, and slowly bringing in solder.
Wire soldering demonstration showing proper technique and wrist stability
Solder Paste Assembly
Complete process for surface-mount component assembly: apply solder paste first, place the component, then heat up with a heat gun to create strong, reliable connections.
Applying solder paste to PCB pads
Placing microcontroller on prepared solder paste
Using heat gun to reflow solder paste and complete the connection
Pro Tips:
For detailed soldering guides and advanced techniques, refer to the Electronics & Soldering Training section above for comprehensive documentation and resources.
• Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
• Sensor Integration Workshop - Hands-on training for connecting and programming various sensors
• Real-time System Design - Principles of creating responsive embedded systems
• Debugging Techniques - Tools and methods for troubleshooting embedded code
QPAD Development Boards Programming Guide
Complete programming setup and workflow for QPAD development boards, covering bootloader configuration, IDE setup, and code deployment for different microcontroller architectures.
QPAD-XIAO (RP2040)
The QPAD-XIAO features a Raspberry Pi RP2040 microcontroller with built-in bootloader support. No bootloader burning required - simply configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO to your computer via USB-C
- In Arduino IDE, select Tools → Board → Raspberry Pi RP2040 Boards → XIAO RP2040
- Select the correct COM port under Tools → Port
- Write your code and click Upload - the board handles everything automatically!
QPAD21 (SAMD21)
The QPAD21 uses an ATSAMD21 microcontroller that requires bootloader programming using a XIAO programmer chip. Follow these steps to get it ready for development.
Bootloader Programming Steps:
- Connect XIAO programmer to QPAD21 using the programming header
- Connect XIAO programmer to your computer via USB
- In Arduino IDE, select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for the XIAO programmer
- Configure bootloader settings:
- Bootloader: Adafruit Circuit Playground Express
- Clock: 48 MHz (USB)
- USB Stack: Arduino
- Debug Level: None
- Erase Flash: All Flash Contents
- Bootloader Version: 1.0.0
- Click Burn Bootloader and wait for completion
Programming Steps (After Bootloader):
- Disconnect XIAO programmer and connect QPAD21 directly via USB
- Select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for QPAD21
- Write your code and click Upload
QPAD-XIAO-ESP32S3 (ESP32-S3)
The QPAD-XIAO-ESP32S3 features an ESP32-S3 microcontroller with built-in WiFi and Bluetooth capabilities. No bootloader burning required - just configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO-ESP32S3 to your computer via USB-C
- In Arduino IDE, select Tools → Board → ESP32 Arduino → XIAO_ESP32S3
- Select the correct COM port under Tools → Port
- Configure additional settings:
- Upload Speed: 921600
- CPU Frequency: 240MHz (WiFi/BT)
- Flash Mode: QIO
- Flash Size: 8MB (64Mb)
- Partition Scheme: Default 4MB with spiffs
- Write your code and click Upload
💡 Pro Programming Tips:
- Always test your code first: Use Verify/Compile to check for errors before uploading
- Debug without uploading: You can compile and check your code without identifying the specific chip
- Ready to deploy: Once your code compiles successfully, hit Upload to program your board
- Serial Monitor: Use Tools → Serial Monitor to debug and monitor your program's output
- Board Manager: Install board support packages through Tools → Board → Boards Manager if needed
Helpful Documentation
Comprehensive documentation covering embedded programming fundamentals, electronics theory, and practical implementation guides.
HTMA Electronics Slides
Official course slides covering microcontroller architecture, I/O techniques, sensor integration, and real-time system design.
Key Topics Covered
- Microcontroller Programming
Architecture and fundamentals
- Sensor Integration
Data processing methods
- Real-time Systems
Design principles and optimization
Group Assignment: Embedded Programming Design Trades
Comprehensive analysis of design tradeoffs in embedded programming, covering language selection, development workflows, and microcontroller choices. This collaborative project examines the critical decisions that shape embedded system development and their impact on project success.
Design Tradeoffs Summary
Architecture
Example Boards
Toolchain / Workflow
Strengths
Limitations
AVR (8-bit)
ATtiny44, ATmega328 (Arduino Uno)
avr-gcc, avrdude; Arduino IDE for simplified workflow
Mature ecosystem, simple to program, widely taught
Limited memory & speed, not ideal for complex tasks
ARM Cortex-M
SAMD21, STM32, Teensy
arm-none-eabi-gcc, OpenOCD, PlatformIO; Arduino or CircuitPython support
High performance, industry standard, strong debugging tools
Toolchain setup can be complex
RP2040
Raspberry Pi Pico, XIAO RP2040
Pico SDK (C/C++), MicroPython, Arduino IDE; custom PIO assembly for peripherals
Flexible, inexpensive, unique PIO hardware for custom protocols
Requires learning PIO for advanced features
ESP8266 / ESP32
NodeMCU, Sparkfun/Adafruit ESP boards
Espressif SDK/IDF, Arduino IDE, MicroPython
Built-in Wi-Fi/Bluetooth, large community support, IoT-ready
Higher power usage, less deterministic timing
RISC-V
HiFive boards, experimental dev kits
riscv-gnu-toolchain, GDB, newer SDKs
Open-source ISA, growing ecosystem, academic/educational interest
Toolchain less mature, fewer libraries & examples
Comprehensive comparison of microcontroller architectures and their tradeoffs in embedded programming
Language Tradeoff
Programming language tradeoff analysis showing performance vs development speed considerations
As illustrated in the language tradeoff diagram above, the choice of programming language involves critical tradeoffs between performance and development speed. The analysis shows how different languages balance factors like memory efficiency, execution speed, development time, and ecosystem support for embedded system development.
High Performance Languages
- C/C++: Maximum control, minimal overhead
- Rust: Memory safety with performance
- Assembly: Direct hardware control
Rapid Development Languages
- Python: Fast prototyping, rich libraries
- JavaScript: Web integration capabilities
- MicroPython: Python for microcontrollers
Development Workflow Tradeoff
Development workflow tradeoff analysis comparing different methodologies and their impact on project outcomes
The development workflow tradeoff diagram above demonstrates how different methodologies balance project timeline, code quality, and team collaboration. This visual analysis compares traditional waterfall approaches with agile methodologies, showing the impact of various toolchains, testing strategies, and deployment processes on embedded system development success.
Traditional Approaches
- Waterfall: Sequential, documentation-heavy
- V-Model: Testing integrated with design
- Spiral: Risk-driven iterative approach
Modern Approaches
- Agile: Iterative, customer-focused
- DevOps: Continuous integration/deployment
- Test-Driven Development: Quality-first
Microcontroller Tradeoff
Microcontroller tradeoff analysis showing performance vs power consumption and cost considerations
The microcontroller tradeoff diagram above illustrates the critical balance between performance, power consumption, and cost in embedded system design. This visual analysis evaluates different architectures, processing capabilities, memory configurations, and peripheral options, providing a clear framework for selecting the optimal platform based on specific application requirements.
Low-Power Options
- ARM Cortex-M0+: Ultra-low power
- PIC: Simple, cost-effective
- MSP430: Energy-efficient design
High-Performance Options
- ARM Cortex-M4: DSP capabilities
- ESP32: WiFi/Bluetooth integrated
- STM32: Rich peripheral set
Use Case Analysis
Architecture
Workflow Process
Key Characteristics
SAMD21 (ARM Cortex-M)
• Write code in C/C++ (Arduino IDE or PlatformIO)
• Compile with arm-none-eabi-gcc
• Upload using OpenOCD via USB or SWD debugger
• Debug with GDB or serial monitor
Professional-grade debugging, industry standard tools
RP2040 (Raspberry Pi Pico)
• Write code in C/C++ (Pico SDK) or MicroPython
• Compile with CMake + GCC toolchain
• Drag-and-drop .uf2 file to Pico's USB mass storage device
• (Optional) Use custom PIO assembly for hardware interfaces
Accessibility and flexibility, drag-and-drop + PIO
Workflow examples showing different development approaches for ARM and RP2040 architectures
The example workflow table above provides specific recommendations for different embedded system applications, showing how the tradeoff analyses from the previous sections translate into practical implementation strategies. This comprehensive table demonstrates the relationship between project requirements and optimal technology choices.
Key Findings
As demonstrated in the workflow table above, ARM workflows emphasize professional-grade debugging with industry-standard tools, while RP2040 workflows emphasize accessibility and flexibility through drag-and-drop deployment and unique PIO capabilities.
The comprehensive architecture comparison shows that optimal design choices depend heavily on project constraints, performance requirements, and development timeline.
High-performance applications favor ARM Cortex-M with professional toolchains, while rapid prototyping benefits from RP2040's flexible development environment and built-in features.
Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature. This project combines embedded programming with scientific measurement principles to create a tool for studying human cognitive performance.
Core Features
- Stimulus Generation
Visual/auditory stimuli with precise timing
- Response Detection
Accurate measurement using buttons/sensors
- Data Analysis
Statistical processing and visualization
Research Foundation
Based on PLOS ONE study (2017) examining reaction time variability and cognitive decline.
Repository: github.com/saleemaldajani/reaction-timer-saleemaldajani
Reaction time model showing the relationship between age and cognitive performance, based on research from PLOS ONE (2017)
Related Research
Parts List / Bill of Materials
Download BOM
#
Image
Part
Description
Qty
Unit Price
Datasheet
Price
1
ATmega32 Microcontroller
8-bit AVR MCU, 32 KB Flash, 2 KB SRAM, ADC, timers, USART
1
$7.50
PDF
$7.50
2
0.96″ OLED Display Module (SSD1306)
128×64 mono OLED, I²C/SPI interface
1
$2.50
PDF
$2.50
3
Male Header Pins (2.54 mm)
Breakaway straight male headers
2
$0.20
PDF
$0.40
4
Dual-Row Header (2×5, 2.54 mm)
10-pin dual-row header, unshrouded
1
$0.50
PDF
$0.50
5
SMD MOSFET (AO3400A example)
N-channel MOSFET, SOT-23
2
$0.15
PDF
$0.30
6
SMD Capacitor (MLCC 0603 example)
Ceramic capacitor, value TBD
5
$0.03
PDF
$0.15
7
SMD Resistors – 1 kΩ (code '1001')
Precision SMD resistors
5
$0.02
PDF
$0.10
8
SMD LED (0603, color TBD)
Indicator LED
2
$0.05
PDF
$0.10
9
USB-C Receptacle
Surface-mount USB Type‑C connector
1
$0.60
PDF
$0.60
10
Custom PCB (Capacitive-Touch Board)
Project-specific PCB
1
$10.00
N/A
$10.00
TOTAL
$22.15
Complete bill of materials for the ReactionAge embedded programming project. All prices are in USD and subject to supplier variations.
Nintendo Switch Controller Training for Toddlers
An interactive training module designed for young children, utilizing Nintendo Switch controller input to create an engaging letter-matching game that develops motor skills and cognitive recognition.
Game Mechanics
- Button Mapping
A, B, X, Y in inverted layout
- Visual Stimulus
Flashing letters with bright colors
- Progressive Difficulty
Adapts based on performance
Educational Benefits
- Motor Skills
Hand-eye coordination
- Letter Recognition
Alphabet learning
- Attention Building
Focus and concentration
Technical Features
- Controller Support
Pro Controller & Joy-Con
- Display System
Large, colorful letters
- Progress Tracking
Analytics & feedback
Design Files
Source code, circuit diagrams, and documentation files for embedded programming projects.
ReactionAge Arduino Code
Download .ino
Key Features
Hardware Integration
- OLED Display (SSD1306)
- RGB LED indicators
- Capacitive touch sensors
- State machine architecture
Reaction Time Analysis
- Multiple prediction models
- Statistical data collection
- CSV export functionality
- Real-time age prediction
Code Preview
// Reaction time prediction models
const float A_POOLED = -35.392393f, B_POOLED = 0.1930446f;
const float A_MALE = -58.123019f, B_MALE = 0.2640664f;
const float A_FEMALE = -31.603679f, B_FEMALE = 0.176111015f;
float predictAgeFromRT(unsigned long rt_ms) {
float x = (float)rt_ms;
float a, b, c;
switch (currentModel) {
case SX_MALE: a=A_MALE; b=B_MALE; c=C_MALE; break;
case SX_FEMALE: a=A_FEMALE; b=B_FEMALE; c=C_FEMALE; break;
default: a=A_POOLED; b=B_POOLED; c=C_POOLED; break;
}
return a + bx + cx*x;
}
Project Resources
Circuit Diagrams
- Microcontroller connection schematics
- Sensor integration diagrams
- Power supply and signal conditioning circuits
Reflections & Learnings
[Reflection notes placeholder.]
Contributions
Acknowledgments for collaborative support and technical assistance during the embedded programming project development.
Technical Support & Collaboration
Eghosa Ohenehn
Contributed valuable insights and technical discussions about microcontroller tradeoffs during the group assignment development. Provided expertise in evaluating different microcontroller architectures and their suitability for various embedded programming applications.
Anthony Pennes
Engaged in extensive discussions throughout the embedded programming design trades section, providing valuable technical insights and collaborative support during the group assignment development process.
Quentin Bolsée
Participated in numerous office hours discussions about embedded programming design trades, contributing significantly to the technical analysis and collaborative development of the group assignment content.
Special thanks to the collaborative learning environment that enabled knowledge sharing and technical problem-solving throughout the embedded programming week.
Ethical AI Use
Transparent documentation of AI assistance used in this week's work, following course guidelines for ethical AI usage.
AI-Assisted Template Generation and Task Planning
Used ChatGPT to generate the weekly template HTML structure and styling framework, and created structured task prompts
for week 2 embedded programming content development.
AI-Assisted Content Development and Page Structure
Used Cursor AI for iterative content development, page structure optimization, and aesthetic improvements.
The AI helped with HTML/CSS implementation, content organization, and maintaining consistent styling across the embedded programming documentation.
AI-Assisted BOM Table Implementation
Used Cursor AI to implement the comprehensive BOM table with clickable images, datasheet links, and full-width responsive design.
The AI helped with HTML table structure, CSS styling, and integration of CSV data into an aesthetically pleasing table format.
AI-Assisted Image Recognition and BOM Creation
Used ChatGPT for image recognition of electronic components to identify parts and construct the bill of materials CSV file.
The AI analyzed component images and provided detailed part specifications, descriptions, and pricing information for the embedded programming project.
AI-Assisted Project Content Updates and Documentation
Used Cursor AI for comprehensive project content updates, documentation improvements, and HTML structure optimization.
The AI assisted with content organization, styling consistency, and integration of multimedia elements for the embedded programming documentation.
AI-Assisted Arduino Programming and Code Development
Used ChatGPT for Arduino programming assistance based on the ReactionAge project code from
GitHub repository
and Quentin Bolsée's QPAD documentation available on the
course website embedded system assignment page.
The AI provided guidance on embedded programming concepts, code optimization, and integration with the QPAD-xiao board design.
AI-Assisted Group Assignment Content Development and Table Implementation
Used Cursor AI for comprehensive development of the embedded programming design trades group assignment section.
The AI assisted with creating structured subsections for language, development workflow, and microcontroller tradeoffs,
implementing professional HTML tables with data extracted from PowerPoint presentations, and integrating download links for PDF and PPTX files.
Perfect! I've successfully added a comprehensive "QPAD Development Boards Programming Guide" subsection under the Microcontroller Programming Basics section. Here's what I've implemented:
The guide is structured, descriptive, and friendly while maintaining all the key technical details. Each board has clear differentiation between those requiring bootloader programming (QPAD21) versus those that work out-of-the-box (QPAD-XIAO variants).
add a subsection in helpful documentation for board design and put the image week2/training/usbc-board-design
describe it and add a caption
then in the design files section at the bottom make a board design subsection and put download links to all the files in week2/pcb-design
then go back and link the design files in the board design subsection for board design
I'll add the board design subsection to the helpful documentation, then create a board design subsection in the design files section with download links. Let me start by exploring the PCB design files and then make the updates.
Now let me add the board design subsection to the helpful documentation section:
Week 2 · HTMAA 2025 · Embedded Programming
Week 2
Embedded Programming · HTMAA 2025
Week Highlights
Key achievements and insights from the embedded programming week, including successful microcontroller programming, sensor integration, and the development of the ReactionAge reaction time measurement system.
Hello World! Success
First successful embedded programming implementation with microcontroller and display
ReactionAge Demo
ReactionAge system in action - measuring reaction time and predicting age
Embedded Programming Design Trades
Comprehensive analysis of critical design decisions in embedded system development
💻 Design Files Available
Download Arduino code, view circuit diagrams, and access all embedded programming assets from this week's assignments
📄 View Design Files
Table of Contents
Course Content
Training & Documentation
Embedded Programming
This week focuses on embedded programming fundamentals, exploring how to program microcontrollers and create interactive electronic systems. We'll dive into the world of digital electronics, sensors, and real-time programming to build responsive devices that can sense, process, and react to their environment.
• Introduction to microcontrollers and embedded systems
• Programming fundamentals for real-time applications
• Sensor integration and data processing
This Week's Goals
- Master Embedded Programming
Learn microcontroller programming, sensor integration, and real-time system design
- Build Interactive Systems
Create responsive electronic devices that can sense and react to environmental inputs
- Develop ReactionAge Project
Implement a reaction time measurement system based on research methodologies
Assignments
- Group Assignment
Collaborative embedded programming project focusing on sensor integration and real-time data processing
- Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature
Tools & Materials
- Microcontrollers
Arduino, ESP32, or similar development boards
- Development Environment
Arduino IDE, PlatformIO, or VS Code with embedded extensions
- Sensors & Components
Buttons, LEDs, displays, accelerometers, and other input/output devices
- Prototyping Tools
Breadboards, jumper wires, resistors, and basic electronic components
Training Documentation
Essential training materials and resources for embedded programming fundamentals, microcontroller setup, and sensor integration techniques.
Electronics & Soldering Training
Soldering Fundamentals
Comprehensive guide to soldering techniques for embedded electronics, covering both wire soldering and solder paste methods.
Wire Soldering
- Temperature: 720-800°F
- Melt pad onto electrode first
- Anchor arms for precision control
- Use appropriate tip size for part
- Work from low to high profile parts
Solder Paste
- Use gloves for protection
- Highest magnification possible
- Temperature: 270-330°C
- Heat all sides together
- Required for SMD components
Safety First:
Always wear safety glasses and use proper ventilation. Lead-free solder requires extra caution due to flux crystallization at high temperatures.
How to Solder (Almost) Anything
Step-by-step video demonstrations of essential soldering techniques for embedded electronics, covering both wire soldering and surface-mount component assembly.
Wire Soldering Technique
Learn the proper technique for soldering wires to components, starting with one edge to keep the part in place, then soldering the rest easily by keeping your wrist stable and the solder tip on the pad to heat it up with the part, and slowly bringing in solder.
Wire soldering demonstration showing proper technique and wrist stability
Solder Paste Assembly
Complete process for surface-mount component assembly: apply solder paste first, place the component, then heat up with a heat gun to create strong, reliable connections.
Applying solder paste to PCB pads
Placing microcontroller on prepared solder paste
Using heat gun to reflow solder paste and complete the connection
Pro Tips:
For detailed soldering guides and advanced techniques, refer to the Electronics & Soldering Training section above for comprehensive documentation and resources.
• Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
• Sensor Integration Workshop - Hands-on training for connecting and programming various sensors
• Real-time System Design - Principles of creating responsive embedded systems
• Debugging Techniques - Tools and methods for troubleshooting embedded code
QPAD Development Boards Programming Guide
Complete programming setup and workflow for QPAD development boards, covering bootloader configuration, IDE setup, and code deployment for different microcontroller architectures.
QPAD-XIAO (RP2040)
The QPAD-XIAO features a Raspberry Pi RP2040 microcontroller with built-in bootloader support. No bootloader burning required - simply configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO to your computer via USB-C
- In Arduino IDE, select Tools → Board → Raspberry Pi RP2040 Boards → XIAO RP2040
- Select the correct COM port under Tools → Port
- Write your code and click Upload - the board handles everything automatically!
QPAD21 (SAMD21)
The QPAD21 uses an ATSAMD21 microcontroller that requires bootloader programming using a XIAO programmer chip. Follow these steps to get it ready for development.
Bootloader Programming Steps:
- Connect XIAO programmer to QPAD21 using the programming header
- Connect XIAO programmer to your computer via USB
- In Arduino IDE, select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for the XIAO programmer
- Configure bootloader settings:
- Bootloader: Adafruit Circuit Playground Express
- Clock: 48 MHz (USB)
- USB Stack: Arduino
- Debug Level: None
- Erase Flash: All Flash Contents
- Bootloader Version: 1.0.0
- Click Burn Bootloader and wait for completion
Programming Steps (After Bootloader):
- Disconnect XIAO programmer and connect QPAD21 directly via USB
- Select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for QPAD21
- Write your code and click Upload
QPAD-XIAO-ESP32S3 (ESP32-S3)
The QPAD-XIAO-ESP32S3 features an ESP32-S3 microcontroller with built-in WiFi and Bluetooth capabilities. No bootloader burning required - just configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO-ESP32S3 to your computer via USB-C
- In Arduino IDE, select Tools → Board → ESP32 Arduino → XIAO_ESP32S3
- Select the correct COM port under Tools → Port
- Configure additional settings:
- Upload Speed: 921600
- CPU Frequency: 240MHz (WiFi/BT)
- Flash Mode: QIO
- Flash Size: 8MB (64Mb)
- Partition Scheme: Default 4MB with spiffs
- Write your code and click Upload
💡 Pro Programming Tips:
- Always test your code first: Use Verify/Compile to check for errors before uploading
- Debug without uploading: You can compile and check your code without identifying the specific chip
- Ready to deploy: Once your code compiles successfully, hit Upload to program your board
- Serial Monitor: Use Tools → Serial Monitor to debug and monitor your program's output
- Board Manager: Install board support packages through Tools → Board → Boards Manager if needed
Helpful Documentation
Comprehensive documentation covering embedded programming fundamentals, electronics theory, and practical implementation guides.
HTMA Electronics Slides
Official course slides covering microcontroller architecture, I/O techniques, sensor integration, and real-time system design.
Key Topics Covered
- Microcontroller Programming
Architecture and fundamentals
- Sensor Integration
Data processing methods
- Real-time Systems
Design principles and optimization
Board Design Documentation
Essential resources for designing custom PCBs and development boards for embedded programming projects, covering schematic design, layout principles, and manufacturing considerations.
USB-C board design showing proper connector placement, power routing, and signal integrity considerations for embedded development boards
Design Principles
- USB-C connector placement and orientation
- Power distribution and ground plane design
- Signal integrity and trace routing
- Component placement optimization
Manufacturing Considerations
- Layer stackup and via design
- Silkscreen and assembly markings
- Test point placement
- Design rule checking (DRC)
Design Files Available:
Complete KiCad project files, schematics, and PCB layouts are available in the Design Files section below for download and modification.
Group Assignment: Embedded Programming Design Trades
Comprehensive analysis of design tradeoffs in embedded programming, covering language selection, development workflows, and microcontroller choices. This collaborative project examines the critical decisions that shape embedded system development and their impact on project success.
Design Tradeoffs Summary
Architecture
Example Boards
Toolchain / Workflow
Strengths
Limitations
AVR (8-bit)
ATtiny44, ATmega328 (Arduino Uno)
avr-gcc, avrdude; Arduino IDE for simplified workflow
Mature ecosystem, simple to program, widely taught
Limited memory & speed, not ideal for complex tasks
ARM Cortex-M
SAMD21, STM32, Teensy
arm-none-eabi-gcc, OpenOCD, PlatformIO; Arduino or CircuitPython support
High performance, industry standard, strong debugging tools
Toolchain setup can be complex
RP2040
Raspberry Pi Pico, XIAO RP2040
Pico SDK (C/C++), MicroPython, Arduino IDE; custom PIO assembly for peripherals
Flexible, inexpensive, unique PIO hardware for custom protocols
Requires learning PIO for advanced features
ESP8266 / ESP32
NodeMCU, Sparkfun/Adafruit ESP boards
Espressif SDK/IDF, Arduino IDE, MicroPython
Built-in Wi-Fi/Bluetooth, large community support, IoT-ready
Higher power usage, less deterministic timing
RISC-V
HiFive boards, experimental dev kits
riscv-gnu-toolchain, GDB, newer SDKs
Open-source ISA, growing ecosystem, academic/educational interest
Toolchain less mature, fewer libraries & examples
Comprehensive comparison of microcontroller architectures and their tradeoffs in embedded programming
Language Tradeoff
Programming language tradeoff analysis showing performance vs development speed considerations
As illustrated in the language tradeoff diagram above, the choice of programming language involves critical tradeoffs between performance and development speed. The analysis shows how different languages balance factors like memory efficiency, execution speed, development time, and ecosystem support for embedded system development.
High Performance Languages
- C/C++: Maximum control, minimal overhead
- Rust: Memory safety with performance
- Assembly: Direct hardware control
Rapid Development Languages
- Python: Fast prototyping, rich libraries
- JavaScript: Web integration capabilities
- MicroPython: Python for microcontrollers
Development Workflow Tradeoff
Development workflow tradeoff analysis comparing different methodologies and their impact on project outcomes
The development workflow tradeoff diagram above demonstrates how different methodologies balance project timeline, code quality, and team collaboration. This visual analysis compares traditional waterfall approaches with agile methodologies, showing the impact of various toolchains, testing strategies, and deployment processes on embedded system development success.
Traditional Approaches
- Waterfall: Sequential, documentation-heavy
- V-Model: Testing integrated with design
- Spiral: Risk-driven iterative approach
Modern Approaches
- Agile: Iterative, customer-focused
- DevOps: Continuous integration/deployment
- Test-Driven Development: Quality-first
Microcontroller Tradeoff
Microcontroller tradeoff analysis showing performance vs power consumption and cost considerations
The microcontroller tradeoff diagram above illustrates the critical balance between performance, power consumption, and cost in embedded system design. This visual analysis evaluates different architectures, processing capabilities, memory configurations, and peripheral options, providing a clear framework for selecting the optimal platform based on specific application requirements.
Low-Power Options
- ARM Cortex-M0+: Ultra-low power
- PIC: Simple, cost-effective
- MSP430: Energy-efficient design
High-Performance Options
- ARM Cortex-M4: DSP capabilities
- ESP32: WiFi/Bluetooth integrated
- STM32: Rich peripheral set
Use Case Analysis
Architecture
Workflow Process
Key Characteristics
SAMD21 (ARM Cortex-M)
• Write code in C/C++ (Arduino IDE or PlatformIO)
• Compile with arm-none-eabi-gcc
• Upload using OpenOCD via USB or SWD debugger
• Debug with GDB or serial monitor
Professional-grade debugging, industry standard tools
RP2040 (Raspberry Pi Pico)
• Write code in C/C++ (Pico SDK) or MicroPython
• Compile with CMake + GCC toolchain
• Drag-and-drop .uf2 file to Pico's USB mass storage device
• (Optional) Use custom PIO assembly for hardware interfaces
Accessibility and flexibility, drag-and-drop + PIO
Workflow examples showing different development approaches for ARM and RP2040 architectures
The example workflow table above provides specific recommendations for different embedded system applications, showing how the tradeoff analyses from the previous sections translate into practical implementation strategies. This comprehensive table demonstrates the relationship between project requirements and optimal technology choices.
Key Findings
As demonstrated in the workflow table above, ARM workflows emphasize professional-grade debugging with industry-standard tools, while RP2040 workflows emphasize accessibility and flexibility through drag-and-drop deployment and unique PIO capabilities.
The comprehensive architecture comparison shows that optimal design choices depend heavily on project constraints, performance requirements, and development timeline.
High-performance applications favor ARM Cortex-M with professional toolchains, while rapid prototyping benefits from RP2040's flexible development environment and built-in features.
Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature. This project combines embedded programming with scientific measurement principles to create a tool for studying human cognitive performance.
Core Features
- Stimulus Generation
Visual/auditory stimuli with precise timing
- Response Detection
Accurate measurement using buttons/sensors
- Data Analysis
Statistical processing and visualization
Research Foundation
Based on PLOS ONE study (2017) examining reaction time variability and cognitive decline.
Repository: github.com/saleemaldajani/reaction-timer-saleemaldajani
Reaction time model showing the relationship between age and cognitive performance, based on research from PLOS ONE (2017)
Related Research
Parts List / Bill of Materials
Download BOM
#
Image
Part
Description
Qty
Unit Price
Datasheet
Price
1
ATmega32 Microcontroller
8-bit AVR MCU, 32 KB Flash, 2 KB SRAM, ADC, timers, USART
1
$7.50
PDF
$7.50
2
0.96″ OLED Display Module (SSD1306)
128×64 mono OLED, I²C/SPI interface
1
$2.50
PDF
$2.50
3
Male Header Pins (2.54 mm)
Breakaway straight male headers
2
$0.20
PDF
$0.40
4
Dual-Row Header (2×5, 2.54 mm)
10-pin dual-row header, unshrouded
1
$0.50
PDF
$0.50
5
SMD MOSFET (AO3400A example)
N-channel MOSFET, SOT-23
2
$0.15
PDF
$0.30
6
SMD Capacitor (MLCC 0603 example)
Ceramic capacitor, value TBD
5
$0.03
PDF
$0.15
7
SMD Resistors – 1 kΩ (code '1001')
Precision SMD resistors
5
$0.02
PDF
$0.10
8
SMD LED (0603, color TBD)
Indicator LED
2
$0.05
PDF
$0.10
9
USB-C Receptacle
Surface-mount USB Type‑C connector
1
$0.60
PDF
$0.60
10
Custom PCB (Capacitive-Touch Board)
Project-specific PCB
1
$10.00
N/A
$10.00
TOTAL
$22.15
Complete bill of materials for the ReactionAge embedded programming project. All prices are in USD and subject to supplier variations.
Nintendo Switch Controller Training for Toddlers
An interactive training module designed for young children, utilizing Nintendo Switch controller input to create an engaging letter-matching game that develops motor skills and cognitive recognition.
Game Mechanics
- Button Mapping
A, B, X, Y in inverted layout
- Visual Stimulus
Flashing letters with bright colors
- Progressive Difficulty
Adapts based on performance
Educational Benefits
- Motor Skills
Hand-eye coordination
- Letter Recognition
Alphabet learning
- Attention Building
Focus and concentration
Technical Features
- Controller Support
Pro Controller & Joy-Con
- Display System
Large, colorful letters
- Progress Tracking
Analytics & feedback
Design Files
Source code, circuit diagrams, and documentation files for embedded programming projects.
ReactionAge Arduino Code
Download .ino
Key Features
Hardware Integration
- OLED Display (SSD1306)
- RGB LED indicators
- Capacitive touch sensors
- State machine architecture
Reaction Time Analysis
- Multiple prediction models
- Statistical data collection
- CSV export functionality
- Real-time age prediction
Code Preview
// Reaction time prediction models
const float A_POOLED = -35.392393f, B_POOLED = 0.1930446f;
const float A_MALE = -58.123019f, B_MALE = 0.2640664f;
const float A_FEMALE = -31.603679f, B_FEMALE = 0.176111015f;
float predictAgeFromRT(unsigned long rt_ms) {
float x = (float)rt_ms;
float a, b, c;
switch (currentModel) {
case SX_MALE: a=A_MALE; b=B_MALE; c=C_MALE; break;
case SX_FEMALE: a=A_FEMALE; b=B_FEMALE; c=C_FEMALE; break;
default: a=A_POOLED; b=B_POOLED; c=C_POOLED; break;
}
return a + bx + cx*x;
}
Project Resources
Circuit Diagrams
- Microcontroller connection schematics
- Sensor integration diagrams
- Power supply and signal conditioning circuits
Reflections & Learnings
[Reflection notes placeholder.]
Contributions
Acknowledgments for collaborative support and technical assistance during the embedded programming project development.
Technical Support & Collaboration
Eghosa Ohenehn
Contributed valuable insights and technical discussions about microcontroller tradeoffs during the group assignment development. Provided expertise in evaluating different microcontroller architectures and their suitability for various embedded programming applications.
Anthony Pennes
Engaged in extensive discussions throughout the embedded programming design trades section, providing valuable technical insights and collaborative support during the group assignment development process.
Quentin Bolsée
Participated in numerous office hours discussions about embedded programming design trades, contributing significantly to the technical analysis and collaborative development of the group assignment content.
Special thanks to the collaborative learning environment that enabled knowledge sharing and technical problem-solving throughout the embedded programming week.
Ethical AI Use
Transparent documentation of AI assistance used in this week's work, following course guidelines for ethical AI usage.
AI-Assisted Template Generation and Task Planning
Used ChatGPT to generate the weekly template HTML structure and styling framework, and created structured task prompts
for week 2 embedded programming content development.
AI-Assisted Content Development and Page Structure
Used Cursor AI for iterative content development, page structure optimization, and aesthetic improvements.
The AI helped with HTML/CSS implementation, content organization, and maintaining consistent styling across the embedded programming documentation.
AI-Assisted BOM Table Implementation
Used Cursor AI to implement the comprehensive BOM table with clickable images, datasheet links, and full-width responsive design.
The AI helped with HTML table structure, CSS styling, and integration of CSV data into an aesthetically pleasing table format.
AI-Assisted Image Recognition and BOM Creation
Used ChatGPT for image recognition of electronic components to identify parts and construct the bill of materials CSV file.
The AI analyzed component images and provided detailed part specifications, descriptions, and pricing information for the embedded programming project.
AI-Assisted Project Content Updates and Documentation
Used Cursor AI for comprehensive project content updates, documentation improvements, and HTML structure optimization.
The AI assisted with content organization, styling consistency, and integration of multimedia elements for the embedded programming documentation.
AI-Assisted Arduino Programming and Code Development
Used ChatGPT for Arduino programming assistance based on the ReactionAge project code from
GitHub repository
and Quentin Bolsée's QPAD documentation available on the
course website embedded system assignment page.
The AI provided guidance on embedded programming concepts, code optimization, and integration with the QPAD-xiao board design.
AI-Assisted Group Assignment Content Development and Table Implementation
Used Cursor AI for comprehensive development of the embedded programming design trades group assignment section.
The AI assisted with creating structured subsections for language, development workflow, and microcontroller tradeoffs,
implementing professional HTML tables with data extracted from PowerPoint presentations, and integrating download links for PDF and PPTX files.
Now let me add the board design subsection to the design files section. First, let me find the design files section:
Now let me find the end of the design files section to add the board design subsection:
Now I'll add the board design subsection to the design files section:
Week 2 · HTMAA 2025 · Embedded Programming
Week 2
Embedded Programming · HTMAA 2025
Week Highlights
Key achievements and insights from the embedded programming week, including successful microcontroller programming, sensor integration, and the development of the ReactionAge reaction time measurement system.
Hello World! Success
First successful embedded programming implementation with microcontroller and display
ReactionAge Demo
ReactionAge system in action - measuring reaction time and predicting age
Embedded Programming Design Trades
Comprehensive analysis of critical design decisions in embedded system development
💻 Design Files Available
Download Arduino code, view circuit diagrams, and access all embedded programming assets from this week's assignments
📄 View Design Files
Table of Contents
Course Content
Training & Documentation
Embedded Programming
This week focuses on embedded programming fundamentals, exploring how to program microcontrollers and create interactive electronic systems. We'll dive into the world of digital electronics, sensors, and real-time programming to build responsive devices that can sense, process, and react to their environment.
• Introduction to microcontrollers and embedded systems
• Programming fundamentals for real-time applications
• Sensor integration and data processing
This Week's Goals
- Master Embedded Programming
Learn microcontroller programming, sensor integration, and real-time system design
- Build Interactive Systems
Create responsive electronic devices that can sense and react to environmental inputs
- Develop ReactionAge Project
Implement a reaction time measurement system based on research methodologies
Assignments
- Group Assignment
Collaborative embedded programming project focusing on sensor integration and real-time data processing
- Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature
Tools & Materials
- Microcontrollers
Arduino, ESP32, or similar development boards
- Development Environment
Arduino IDE, PlatformIO, or VS Code with embedded extensions
- Sensors & Components
Buttons, LEDs, displays, accelerometers, and other input/output devices
- Prototyping Tools
Breadboards, jumper wires, resistors, and basic electronic components
Training Documentation
Essential training materials and resources for embedded programming fundamentals, microcontroller setup, and sensor integration techniques.
Electronics & Soldering Training
Soldering Fundamentals
Comprehensive guide to soldering techniques for embedded electronics, covering both wire soldering and solder paste methods.
Wire Soldering
- Temperature: 720-800°F
- Melt pad onto electrode first
- Anchor arms for precision control
- Use appropriate tip size for part
- Work from low to high profile parts
Solder Paste
- Use gloves for protection
- Highest magnification possible
- Temperature: 270-330°C
- Heat all sides together
- Required for SMD components
Safety First:
Always wear safety glasses and use proper ventilation. Lead-free solder requires extra caution due to flux crystallization at high temperatures.
How to Solder (Almost) Anything
Step-by-step video demonstrations of essential soldering techniques for embedded electronics, covering both wire soldering and surface-mount component assembly.
Wire Soldering Technique
Learn the proper technique for soldering wires to components, starting with one edge to keep the part in place, then soldering the rest easily by keeping your wrist stable and the solder tip on the pad to heat it up with the part, and slowly bringing in solder.
Wire soldering demonstration showing proper technique and wrist stability
Solder Paste Assembly
Complete process for surface-mount component assembly: apply solder paste first, place the component, then heat up with a heat gun to create strong, reliable connections.
Applying solder paste to PCB pads
Placing microcontroller on prepared solder paste
Using heat gun to reflow solder paste and complete the connection
Pro Tips:
For detailed soldering guides and advanced techniques, refer to the Electronics & Soldering Training section above for comprehensive documentation and resources.
• Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
• Sensor Integration Workshop - Hands-on training for connecting and programming various sensors
• Real-time System Design - Principles of creating responsive embedded systems
• Debugging Techniques - Tools and methods for troubleshooting embedded code
QPAD Development Boards Programming Guide
Complete programming setup and workflow for QPAD development boards, covering bootloader configuration, IDE setup, and code deployment for different microcontroller architectures.
QPAD-XIAO (RP2040)
The QPAD-XIAO features a Raspberry Pi RP2040 microcontroller with built-in bootloader support. No bootloader burning required - simply configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO to your computer via USB-C
- In Arduino IDE, select Tools → Board → Raspberry Pi RP2040 Boards → XIAO RP2040
- Select the correct COM port under Tools → Port
- Write your code and click Upload - the board handles everything automatically!
QPAD21 (SAMD21)
The QPAD21 uses an ATSAMD21 microcontroller that requires bootloader programming using a XIAO programmer chip. Follow these steps to get it ready for development.
Bootloader Programming Steps:
- Connect XIAO programmer to QPAD21 using the programming header
- Connect XIAO programmer to your computer via USB
- In Arduino IDE, select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for the XIAO programmer
- Configure bootloader settings:
- Bootloader: Adafruit Circuit Playground Express
- Clock: 48 MHz (USB)
- USB Stack: Arduino
- Debug Level: None
- Erase Flash: All Flash Contents
- Bootloader Version: 1.0.0
- Click Burn Bootloader and wait for completion
Programming Steps (After Bootloader):
- Disconnect XIAO programmer and connect QPAD21 directly via USB
- Select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for QPAD21
- Write your code and click Upload
QPAD-XIAO-ESP32S3 (ESP32-S3)
The QPAD-XIAO-ESP32S3 features an ESP32-S3 microcontroller with built-in WiFi and Bluetooth capabilities. No bootloader burning required - just configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO-ESP32S3 to your computer via USB-C
- In Arduino IDE, select Tools → Board → ESP32 Arduino → XIAO_ESP32S3
- Select the correct COM port under Tools → Port
- Configure additional settings:
- Upload Speed: 921600
- CPU Frequency: 240MHz (WiFi/BT)
- Flash Mode: QIO
- Flash Size: 8MB (64Mb)
- Partition Scheme: Default 4MB with spiffs
- Write your code and click Upload
💡 Pro Programming Tips:
- Always test your code first: Use Verify/Compile to check for errors before uploading
- Debug without uploading: You can compile and check your code without identifying the specific chip
- Ready to deploy: Once your code compiles successfully, hit Upload to program your board
- Serial Monitor: Use Tools → Serial Monitor to debug and monitor your program's output
- Board Manager: Install board support packages through Tools → Board → Boards Manager if needed
Helpful Documentation
Comprehensive documentation covering embedded programming fundamentals, electronics theory, and practical implementation guides.
HTMA Electronics Slides
Official course slides covering microcontroller architecture, I/O techniques, sensor integration, and real-time system design.
Key Topics Covered
- Microcontroller Programming
Architecture and fundamentals
- Sensor Integration
Data processing methods
- Real-time Systems
Design principles and optimization
Board Design Documentation
Essential resources for designing custom PCBs and development boards for embedded programming projects, covering schematic design, layout principles, and manufacturing considerations.
USB-C board design showing proper connector placement, power routing, and signal integrity considerations for embedded development boards
Design Principles
- USB-C connector placement and orientation
- Power distribution and ground plane design
- Signal integrity and trace routing
- Component placement optimization
Manufacturing Considerations
- Layer stackup and via design
- Silkscreen and assembly markings
- Test point placement
- Design rule checking (DRC)
Design Files Available:
Complete KiCad project files, schematics, and PCB layouts are available in the Design Files section below for download and modification.
Group Assignment: Embedded Programming Design Trades
Comprehensive analysis of design tradeoffs in embedded programming, covering language selection, development workflows, and microcontroller choices. This collaborative project examines the critical decisions that shape embedded system development and their impact on project success.
Design Tradeoffs Summary
Architecture
Example Boards
Toolchain / Workflow
Strengths
Limitations
AVR (8-bit)
ATtiny44, ATmega328 (Arduino Uno)
avr-gcc, avrdude; Arduino IDE for simplified workflow
Mature ecosystem, simple to program, widely taught
Limited memory & speed, not ideal for complex tasks
ARM Cortex-M
SAMD21, STM32, Teensy
arm-none-eabi-gcc, OpenOCD, PlatformIO; Arduino or CircuitPython support
High performance, industry standard, strong debugging tools
Toolchain setup can be complex
RP2040
Raspberry Pi Pico, XIAO RP2040
Pico SDK (C/C++), MicroPython, Arduino IDE; custom PIO assembly for peripherals
Flexible, inexpensive, unique PIO hardware for custom protocols
Requires learning PIO for advanced features
ESP8266 / ESP32
NodeMCU, Sparkfun/Adafruit ESP boards
Espressif SDK/IDF, Arduino IDE, MicroPython
Built-in Wi-Fi/Bluetooth, large community support, IoT-ready
Higher power usage, less deterministic timing
RISC-V
HiFive boards, experimental dev kits
riscv-gnu-toolchain, GDB, newer SDKs
Open-source ISA, growing ecosystem, academic/educational interest
Toolchain less mature, fewer libraries & examples
Comprehensive comparison of microcontroller architectures and their tradeoffs in embedded programming
Language Tradeoff
Programming language tradeoff analysis showing performance vs development speed considerations
As illustrated in the language tradeoff diagram above, the choice of programming language involves critical tradeoffs between performance and development speed. The analysis shows how different languages balance factors like memory efficiency, execution speed, development time, and ecosystem support for embedded system development.
High Performance Languages
- C/C++: Maximum control, minimal overhead
- Rust: Memory safety with performance
- Assembly: Direct hardware control
Rapid Development Languages
- Python: Fast prototyping, rich libraries
- JavaScript: Web integration capabilities
- MicroPython: Python for microcontrollers
Development Workflow Tradeoff
Development workflow tradeoff analysis comparing different methodologies and their impact on project outcomes
The development workflow tradeoff diagram above demonstrates how different methodologies balance project timeline, code quality, and team collaboration. This visual analysis compares traditional waterfall approaches with agile methodologies, showing the impact of various toolchains, testing strategies, and deployment processes on embedded system development success.
Traditional Approaches
- Waterfall: Sequential, documentation-heavy
- V-Model: Testing integrated with design
- Spiral: Risk-driven iterative approach
Modern Approaches
- Agile: Iterative, customer-focused
- DevOps: Continuous integration/deployment
- Test-Driven Development: Quality-first
Microcontroller Tradeoff
Microcontroller tradeoff analysis showing performance vs power consumption and cost considerations
The microcontroller tradeoff diagram above illustrates the critical balance between performance, power consumption, and cost in embedded system design. This visual analysis evaluates different architectures, processing capabilities, memory configurations, and peripheral options, providing a clear framework for selecting the optimal platform based on specific application requirements.
Low-Power Options
- ARM Cortex-M0+: Ultra-low power
- PIC: Simple, cost-effective
- MSP430: Energy-efficient design
High-Performance Options
- ARM Cortex-M4: DSP capabilities
- ESP32: WiFi/Bluetooth integrated
- STM32: Rich peripheral set
Use Case Analysis
Architecture
Workflow Process
Key Characteristics
SAMD21 (ARM Cortex-M)
• Write code in C/C++ (Arduino IDE or PlatformIO)
• Compile with arm-none-eabi-gcc
• Upload using OpenOCD via USB or SWD debugger
• Debug with GDB or serial monitor
Professional-grade debugging, industry standard tools
RP2040 (Raspberry Pi Pico)
• Write code in C/C++ (Pico SDK) or MicroPython
• Compile with CMake + GCC toolchain
• Drag-and-drop .uf2 file to Pico's USB mass storage device
• (Optional) Use custom PIO assembly for hardware interfaces
Accessibility and flexibility, drag-and-drop + PIO
Workflow examples showing different development approaches for ARM and RP2040 architectures
The example workflow table above provides specific recommendations for different embedded system applications, showing how the tradeoff analyses from the previous sections translate into practical implementation strategies. This comprehensive table demonstrates the relationship between project requirements and optimal technology choices.
Key Findings
As demonstrated in the workflow table above, ARM workflows emphasize professional-grade debugging with industry-standard tools, while RP2040 workflows emphasize accessibility and flexibility through drag-and-drop deployment and unique PIO capabilities.
The comprehensive architecture comparison shows that optimal design choices depend heavily on project constraints, performance requirements, and development timeline.
High-performance applications favor ARM Cortex-M with professional toolchains, while rapid prototyping benefits from RP2040's flexible development environment and built-in features.
Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature. This project combines embedded programming with scientific measurement principles to create a tool for studying human cognitive performance.
Core Features
- Stimulus Generation
Visual/auditory stimuli with precise timing
- Response Detection
Accurate measurement using buttons/sensors
- Data Analysis
Statistical processing and visualization
Research Foundation
Based on PLOS ONE study (2017) examining reaction time variability and cognitive decline.
Repository: github.com/saleemaldajani/reaction-timer-saleemaldajani
Reaction time model showing the relationship between age and cognitive performance, based on research from PLOS ONE (2017)
Related Research
Parts List / Bill of Materials
Download BOM
#
Image
Part
Description
Qty
Unit Price
Datasheet
Price
1
ATmega32 Microcontroller
8-bit AVR MCU, 32 KB Flash, 2 KB SRAM, ADC, timers, USART
1
$7.50
PDF
$7.50
2
0.96″ OLED Display Module (SSD1306)
128×64 mono OLED, I²C/SPI interface
1
$2.50
PDF
$2.50
3
Male Header Pins (2.54 mm)
Breakaway straight male headers
2
$0.20
PDF
$0.40
4
Dual-Row Header (2×5, 2.54 mm)
10-pin dual-row header, unshrouded
1
$0.50
PDF
$0.50
5
SMD MOSFET (AO3400A example)
N-channel MOSFET, SOT-23
2
$0.15
PDF
$0.30
6
SMD Capacitor (MLCC 0603 example)
Ceramic capacitor, value TBD
5
$0.03
PDF
$0.15
7
SMD Resistors – 1 kΩ (code '1001')
Precision SMD resistors
5
$0.02
PDF
$0.10
8
SMD LED (0603, color TBD)
Indicator LED
2
$0.05
PDF
$0.10
9
USB-C Receptacle
Surface-mount USB Type‑C connector
1
$0.60
PDF
$0.60
10
Custom PCB (Capacitive-Touch Board)
Project-specific PCB
1
$10.00
N/A
$10.00
TOTAL
$22.15
Complete bill of materials for the ReactionAge embedded programming project. All prices are in USD and subject to supplier variations.
Nintendo Switch Controller Training for Toddlers
An interactive training module designed for young children, utilizing Nintendo Switch controller input to create an engaging letter-matching game that develops motor skills and cognitive recognition.
Game Mechanics
- Button Mapping
A, B, X, Y in inverted layout
- Visual Stimulus
Flashing letters with bright colors
- Progressive Difficulty
Adapts based on performance
Educational Benefits
- Motor Skills
Hand-eye coordination
- Letter Recognition
Alphabet learning
- Attention Building
Focus and concentration
Technical Features
- Controller Support
Pro Controller & Joy-Con
- Display System
Large, colorful letters
- Progress Tracking
Analytics & feedback
Design Files
Source code, circuit diagrams, and documentation files for embedded programming projects.
ReactionAge Arduino Code
Download .ino
Key Features
Hardware Integration
- OLED Display (SSD1306)
- RGB LED indicators
- Capacitive touch sensors
- State machine architecture
Reaction Time Analysis
- Multiple prediction models
- Statistical data collection
- CSV export functionality
- Real-time age prediction
Code Preview
// Reaction time prediction models
const float A_POOLED = -35.392393f, B_POOLED = 0.1930446f;
const float A_MALE = -58.123019f, B_MALE = 0.2640664f;
const float A_FEMALE = -31.603679f, B_FEMALE = 0.176111015f;
float predictAgeFromRT(unsigned long rt_ms) {
float x = (float)rt_ms;
float a, b, c;
switch (currentModel) {
case SX_MALE: a=A_MALE; b=B_MALE; c=C_MALE; break;
case SX_FEMALE: a=A_FEMALE; b=B_FEMALE; c=C_FEMALE; break;
default: a=A_POOLED; b=B_POOLED; c=C_POOLED; break;
}
return a + bx + cx*x;
}
Project Resources
Circuit Diagrams
- Microcontroller connection schematics
- Sensor integration diagrams
- Power supply and signal conditioning circuits
Board Design Files
Complete KiCad project files for custom PCB design, including schematics, PCB layouts, and project configurations for embedded development boards.
File Type
Description
Download
KiCad Project
Complete KiCad project file containing all design data and settings
.kicad_pro
Schematic
Circuit schematic showing component connections and electrical design
.kicad_sch
PCB Layout
Physical PCB layout with component placement and trace routing
.kicad_pcb
Design Documentation:
For detailed board design principles, USB-C connector placement, and manufacturing considerations, refer to the Board Design Documentation section above.
Reflections & Learnings
[Reflection notes placeholder.]
Contributions
Acknowledgments for collaborative support and technical assistance during the embedded programming project development.
Technical Support & Collaboration
Eghosa Ohenehn
Contributed valuable insights and technical discussions about microcontroller tradeoffs during the group assignment development. Provided expertise in evaluating different microcontroller architectures and their suitability for various embedded programming applications.
Anthony Pennes
Engaged in extensive discussions throughout the embedded programming design trades section, providing valuable technical insights and collaborative support during the group assignment development process.
Quentin Bolsée
Participated in numerous office hours discussions about embedded programming design trades, contributing significantly to the technical analysis and collaborative development of the group assignment content.
Special thanks to the collaborative learning environment that enabled knowledge sharing and technical problem-solving throughout the embedded programming week.
Ethical AI Use
Transparent documentation of AI assistance used in this week's work, following course guidelines for ethical AI usage.
AI-Assisted Template Generation and Task Planning
Used ChatGPT to generate the weekly template HTML structure and styling framework, and created structured task prompts
for week 2 embedded programming content development.
AI-Assisted Content Development and Page Structure
Used Cursor AI for iterative content development, page structure optimization, and aesthetic improvements.
The AI helped with HTML/CSS implementation, content organization, and maintaining consistent styling across the embedded programming documentation.
AI-Assisted BOM Table Implementation
Used Cursor AI to implement the comprehensive BOM table with clickable images, datasheet links, and full-width responsive design.
The AI helped with HTML table structure, CSS styling, and integration of CSV data into an aesthetically pleasing table format.
AI-Assisted Image Recognition and BOM Creation
Used ChatGPT for image recognition of electronic components to identify parts and construct the bill of materials CSV file.
The AI analyzed component images and provided detailed part specifications, descriptions, and pricing information for the embedded programming project.
AI-Assisted Project Content Updates and Documentation
Used Cursor AI for comprehensive project content updates, documentation improvements, and HTML structure optimization.
The AI assisted with content organization, styling consistency, and integration of multimedia elements for the embedded programming documentation.
AI-Assisted Arduino Programming and Code Development
Used ChatGPT for Arduino programming assistance based on the ReactionAge project code from
GitHub repository
and Quentin Bolsée's QPAD documentation available on the
course website embedded system assignment page.
The AI provided guidance on embedded programming concepts, code optimization, and integration with the QPAD-xiao board design.
AI-Assisted Group Assignment Content Development and Table Implementation
Used Cursor AI for comprehensive development of the embedded programming design trades group assignment section.
The AI assisted with creating structured subsections for language, development workflow, and microcontroller tradeoffs,
implementing professional HTML tables with data extracted from PowerPoint presentations, and integrating download links for PDF and PPTX files.
Perfect! I've successfully added both sections as requested:
week2/training/usbc-board-design.png
with descriptive captionweek2/pcb-design/
:
- QPAD21.kicad_pro
- Complete KiCad project file
- QPAD21.kicad_sch
- Circuit schematic
- QPAD21.kicad_pcb
- PCB layout
- Download links for each file with proper styling
- Cross-reference link back to the Board Design Documentation section
The implementation provides a complete workflow for users to understand board design principles, view the reference image, and download the actual design files for modification and learning.
ok now under board design put common troubleshooting
1. voltage regulator and put the image of the week2/training/voltage-regulator
2. usb-c pinout and put the image of the week2/training/usb-c-pinot
explain under each get a multimeter and check the voltages on these channels to make sure its working with power connected to a board
helpful tip, get a portable multimeter @https://www.amazon.com/ALLOSUN-Multimeter-Capacitance-Frequency-Continuity/dp/B08HK295HK/ref=sr_1_1_sspa?dib=eyJ2IjoiMSJ9.1PikVmgloQYjRPbb4ovm5mkddqvnWRydHbdhAatNVTvZRVlO3s9TlQMPn5XHJ6U-K21afYaxWksdJTFzpO7HOcV0lMWp_W3TvunO2KrzV5ng9m6DgwI9pB-zMWVA2PvoUDYf9fNb1VJ6VodvLzpNudatd4a5pjvJxb17_54ohiOqEYatH705sMIDuylV8MDylw_6V9yD3F4zhgIxeohsilNRfeaks6xRX4joCOSeqc5RQKb9TF-mK0ul1lAicsoi4h8Am-G0HOPh3qgfFhBaQ15NdtjaECe4MOCKFB77FIg.PitTq4zDZSaK4EXf4ekBZgN6GbNXrLR0RDoZIT02v0c&dib_tag=se&keywords=pocket+multimeter&qid=1758726175&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1 and put a link to this as an example
I'll add a common troubleshooting section under the board design documentation with voltage regulator and USB-C pinout troubleshooting guides. Let me add this to the board design section.
Week 2 · HTMAA 2025 · Embedded Programming
Week 2
Embedded Programming · HTMAA 2025
Week Highlights
Key achievements and insights from the embedded programming week, including successful microcontroller programming, sensor integration, and the development of the ReactionAge reaction time measurement system.
Hello World! Success
First successful embedded programming implementation with microcontroller and display
ReactionAge Demo
ReactionAge system in action - measuring reaction time and predicting age
Embedded Programming Design Trades
Comprehensive analysis of critical design decisions in embedded system development
💻 Design Files Available
Download Arduino code, view circuit diagrams, and access all embedded programming assets from this week's assignments
📄 View Design Files
Table of Contents
Course Content
Training & Documentation
Embedded Programming
This week focuses on embedded programming fundamentals, exploring how to program microcontrollers and create interactive electronic systems. We'll dive into the world of digital electronics, sensors, and real-time programming to build responsive devices that can sense, process, and react to their environment.
• Introduction to microcontrollers and embedded systems
• Programming fundamentals for real-time applications
• Sensor integration and data processing
This Week's Goals
- Master Embedded Programming
Learn microcontroller programming, sensor integration, and real-time system design
- Build Interactive Systems
Create responsive electronic devices that can sense and react to environmental inputs
- Develop ReactionAge Project
Implement a reaction time measurement system based on research methodologies
Assignments
- Group Assignment
Collaborative embedded programming project focusing on sensor integration and real-time data processing
- Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature
Tools & Materials
- Microcontrollers
Arduino, ESP32, or similar development boards
- Development Environment
Arduino IDE, PlatformIO, or VS Code with embedded extensions
- Sensors & Components
Buttons, LEDs, displays, accelerometers, and other input/output devices
- Prototyping Tools
Breadboards, jumper wires, resistors, and basic electronic components
Training Documentation
Essential training materials and resources for embedded programming fundamentals, microcontroller setup, and sensor integration techniques.
Electronics & Soldering Training
Soldering Fundamentals
Comprehensive guide to soldering techniques for embedded electronics, covering both wire soldering and solder paste methods.
Wire Soldering
- Temperature: 720-800°F
- Melt pad onto electrode first
- Anchor arms for precision control
- Use appropriate tip size for part
- Work from low to high profile parts
Solder Paste
- Use gloves for protection
- Highest magnification possible
- Temperature: 270-330°C
- Heat all sides together
- Required for SMD components
Safety First:
Always wear safety glasses and use proper ventilation. Lead-free solder requires extra caution due to flux crystallization at high temperatures.
How to Solder (Almost) Anything
Step-by-step video demonstrations of essential soldering techniques for embedded electronics, covering both wire soldering and surface-mount component assembly.
Wire Soldering Technique
Learn the proper technique for soldering wires to components, starting with one edge to keep the part in place, then soldering the rest easily by keeping your wrist stable and the solder tip on the pad to heat it up with the part, and slowly bringing in solder.
Wire soldering demonstration showing proper technique and wrist stability
Solder Paste Assembly
Complete process for surface-mount component assembly: apply solder paste first, place the component, then heat up with a heat gun to create strong, reliable connections.
Applying solder paste to PCB pads
Placing microcontroller on prepared solder paste
Using heat gun to reflow solder paste and complete the connection
Pro Tips:
For detailed soldering guides and advanced techniques, refer to the Electronics & Soldering Training section above for comprehensive documentation and resources.
• Microcontroller Programming Basics - Introduction to embedded programming concepts and development environments
• Sensor Integration Workshop - Hands-on training for connecting and programming various sensors
• Real-time System Design - Principles of creating responsive embedded systems
• Debugging Techniques - Tools and methods for troubleshooting embedded code
QPAD Development Boards Programming Guide
Complete programming setup and workflow for QPAD development boards, covering bootloader configuration, IDE setup, and code deployment for different microcontroller architectures.
QPAD-XIAO (RP2040)
The QPAD-XIAO features a Raspberry Pi RP2040 microcontroller with built-in bootloader support. No bootloader burning required - simply configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO to your computer via USB-C
- In Arduino IDE, select Tools → Board → Raspberry Pi RP2040 Boards → XIAO RP2040
- Select the correct COM port under Tools → Port
- Write your code and click Upload - the board handles everything automatically!
QPAD21 (SAMD21)
The QPAD21 uses an ATSAMD21 microcontroller that requires bootloader programming using a XIAO programmer chip. Follow these steps to get it ready for development.
Bootloader Programming Steps:
- Connect XIAO programmer to QPAD21 using the programming header
- Connect XIAO programmer to your computer via USB
- In Arduino IDE, select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for the XIAO programmer
- Configure bootloader settings:
- Bootloader: Adafruit Circuit Playground Express
- Clock: 48 MHz (USB)
- USB Stack: Arduino
- Debug Level: None
- Erase Flash: All Flash Contents
- Bootloader Version: 1.0.0
- Click Burn Bootloader and wait for completion
Programming Steps (After Bootloader):
- Disconnect XIAO programmer and connect QPAD21 directly via USB
- Select Tools → Board → Arduino SAMD (32-bits ARM Cortex-M0+) → Arduino MKR WiFi 1010
- Select the correct COM port for QPAD21
- Write your code and click Upload
QPAD-XIAO-ESP32S3 (ESP32-S3)
The QPAD-XIAO-ESP32S3 features an ESP32-S3 microcontroller with built-in WiFi and Bluetooth capabilities. No bootloader burning required - just configure your IDE and start programming!
Programming Steps:
- Connect QPAD-XIAO-ESP32S3 to your computer via USB-C
- In Arduino IDE, select Tools → Board → ESP32 Arduino → XIAO_ESP32S3
- Select the correct COM port under Tools → Port
- Configure additional settings:
- Upload Speed: 921600
- CPU Frequency: 240MHz (WiFi/BT)
- Flash Mode: QIO
- Flash Size: 8MB (64Mb)
- Partition Scheme: Default 4MB with spiffs
- Write your code and click Upload
💡 Pro Programming Tips:
- Always test your code first: Use Verify/Compile to check for errors before uploading
- Debug without uploading: You can compile and check your code without identifying the specific chip
- Ready to deploy: Once your code compiles successfully, hit Upload to program your board
- Serial Monitor: Use Tools → Serial Monitor to debug and monitor your program's output
- Board Manager: Install board support packages through Tools → Board → Boards Manager if needed
Helpful Documentation
Comprehensive documentation covering embedded programming fundamentals, electronics theory, and practical implementation guides.
HTMA Electronics Slides
Official course slides covering microcontroller architecture, I/O techniques, sensor integration, and real-time system design.
Key Topics Covered
- Microcontroller Programming
Architecture and fundamentals
- Sensor Integration
Data processing methods
- Real-time Systems
Design principles and optimization
Board Design Documentation
Essential resources for designing custom PCBs and development boards for embedded programming projects, covering schematic design, layout principles, and manufacturing considerations.
USB-C board design showing proper connector placement, power routing, and signal integrity considerations for embedded development boards
Design Principles
- USB-C connector placement and orientation
- Power distribution and ground plane design
- Signal integrity and trace routing
- Component placement optimization
Manufacturing Considerations
- Layer stackup and via design
- Silkscreen and assembly markings
- Test point placement
- Design rule checking (DRC)
Design Files Available:
Complete KiCad project files, schematics, and PCB layouts are available in the Design Files section below for download and modification.
Common Troubleshooting
Essential troubleshooting techniques for embedded development boards, covering power supply verification and connector testing using multimeter measurements.
Voltage Regulator Troubleshooting
Verify that your voltage regulator is functioning correctly by measuring output voltages with a multimeter when power is connected to the board.
Voltage regulator testing points showing input, output, and ground connections for multimeter verification
Testing Steps:
- Connect power to your development board
- Set multimeter to DC voltage mode
- Measure input voltage (VIN) - should match your power supply voltage
- Measure output voltage (VOUT) - should be the regulated voltage (e.g., 3.3V or 5V)
- Check ground continuity between input and output ground pins
- Verify no voltage drop under load conditions
💡 Pro Tip:
Use a portable multimeter for easy on-the-go testing and debugging of embedded circuits.
USB-C Pinout Troubleshooting
Verify USB-C connector functionality by testing power delivery, data lines, and ground connections using multimeter measurements.
USB-C pinout diagram showing power, data, and ground connections for multimeter testing and verification
Testing Steps:
- Connect USB-C cable to your development board
- Set multimeter to DC voltage mode
- Measure VBUS (pin A4/B4) - should read 5V when connected to power
- Test ground continuity (pins A1/B1, A12/B12) - should show 0Ω resistance
- Check CC1/CC2 pins (A5/B5) for proper connection detection
- Verify D+ and D- data lines (A6/A7, B6/B7) for continuity
- Test both orientations of the USB-C connector
🔧 Troubleshooting Tips:
- If VBUS shows 0V, check cable and power source
- If ground shows high resistance, check solder joints
- If data lines show no continuity, verify connector orientation
- Test with known working USB-C cable for comparison
Group Assignment: Embedded Programming Design Trades
Comprehensive analysis of design tradeoffs in embedded programming, covering language selection, development workflows, and microcontroller choices. This collaborative project examines the critical decisions that shape embedded system development and their impact on project success.
Design Tradeoffs Summary
Architecture
Example Boards
Toolchain / Workflow
Strengths
Limitations
AVR (8-bit)
ATtiny44, ATmega328 (Arduino Uno)
avr-gcc, avrdude; Arduino IDE for simplified workflow
Mature ecosystem, simple to program, widely taught
Limited memory & speed, not ideal for complex tasks
ARM Cortex-M
SAMD21, STM32, Teensy
arm-none-eabi-gcc, OpenOCD, PlatformIO; Arduino or CircuitPython support
High performance, industry standard, strong debugging tools
Toolchain setup can be complex
RP2040
Raspberry Pi Pico, XIAO RP2040
Pico SDK (C/C++), MicroPython, Arduino IDE; custom PIO assembly for peripherals
Flexible, inexpensive, unique PIO hardware for custom protocols
Requires learning PIO for advanced features
ESP8266 / ESP32
NodeMCU, Sparkfun/Adafruit ESP boards
Espressif SDK/IDF, Arduino IDE, MicroPython
Built-in Wi-Fi/Bluetooth, large community support, IoT-ready
Higher power usage, less deterministic timing
RISC-V
HiFive boards, experimental dev kits
riscv-gnu-toolchain, GDB, newer SDKs
Open-source ISA, growing ecosystem, academic/educational interest
Toolchain less mature, fewer libraries & examples
Comprehensive comparison of microcontroller architectures and their tradeoffs in embedded programming
Language Tradeoff
Programming language tradeoff analysis showing performance vs development speed considerations
As illustrated in the language tradeoff diagram above, the choice of programming language involves critical tradeoffs between performance and development speed. The analysis shows how different languages balance factors like memory efficiency, execution speed, development time, and ecosystem support for embedded system development.
High Performance Languages
- C/C++: Maximum control, minimal overhead
- Rust: Memory safety with performance
- Assembly: Direct hardware control
Rapid Development Languages
- Python: Fast prototyping, rich libraries
- JavaScript: Web integration capabilities
- MicroPython: Python for microcontrollers
Development Workflow Tradeoff
Development workflow tradeoff analysis comparing different methodologies and their impact on project outcomes
The development workflow tradeoff diagram above demonstrates how different methodologies balance project timeline, code quality, and team collaboration. This visual analysis compares traditional waterfall approaches with agile methodologies, showing the impact of various toolchains, testing strategies, and deployment processes on embedded system development success.
Traditional Approaches
- Waterfall: Sequential, documentation-heavy
- V-Model: Testing integrated with design
- Spiral: Risk-driven iterative approach
Modern Approaches
- Agile: Iterative, customer-focused
- DevOps: Continuous integration/deployment
- Test-Driven Development: Quality-first
Microcontroller Tradeoff
Microcontroller tradeoff analysis showing performance vs power consumption and cost considerations
The microcontroller tradeoff diagram above illustrates the critical balance between performance, power consumption, and cost in embedded system design. This visual analysis evaluates different architectures, processing capabilities, memory configurations, and peripheral options, providing a clear framework for selecting the optimal platform based on specific application requirements.
Low-Power Options
- ARM Cortex-M0+: Ultra-low power
- PIC: Simple, cost-effective
- MSP430: Energy-efficient design
High-Performance Options
- ARM Cortex-M4: DSP capabilities
- ESP32: WiFi/Bluetooth integrated
- STM32: Rich peripheral set
Use Case Analysis
Architecture
Workflow Process
Key Characteristics
SAMD21 (ARM Cortex-M)
• Write code in C/C++ (Arduino IDE or PlatformIO)
• Compile with arm-none-eabi-gcc
• Upload using OpenOCD via USB or SWD debugger
• Debug with GDB or serial monitor
Professional-grade debugging, industry standard tools
RP2040 (Raspberry Pi Pico)
• Write code in C/C++ (Pico SDK) or MicroPython
• Compile with CMake + GCC toolchain
• Drag-and-drop .uf2 file to Pico's USB mass storage device
• (Optional) Use custom PIO assembly for hardware interfaces
Accessibility and flexibility, drag-and-drop + PIO
Workflow examples showing different development approaches for ARM and RP2040 architectures
The example workflow table above provides specific recommendations for different embedded system applications, showing how the tradeoff analyses from the previous sections translate into practical implementation strategies. This comprehensive table demonstrates the relationship between project requirements and optimal technology choices.
Key Findings
As demonstrated in the workflow table above, ARM workflows emphasize professional-grade debugging with industry-standard tools, while RP2040 workflows emphasize accessibility and flexibility through drag-and-drop deployment and unique PIO capabilities.
The comprehensive architecture comparison shows that optimal design choices depend heavily on project constraints, performance requirements, and development timeline.
High-performance applications favor ARM Cortex-M with professional toolchains, while rapid prototyping benefits from RP2040's flexible development environment and built-in features.
Individual Assignment: ReactionAge
Build a reaction time measurement system based on research methodologies from cognitive science literature. This project combines embedded programming with scientific measurement principles to create a tool for studying human cognitive performance.
Core Features
- Stimulus Generation
Visual/auditory stimuli with precise timing
- Response Detection
Accurate measurement using buttons/sensors
- Data Analysis
Statistical processing and visualization
Research Foundation
Based on PLOS ONE study (2017) examining reaction time variability and cognitive decline.
Repository: github.com/saleemaldajani/reaction-timer-saleemaldajani
Reaction time model showing the relationship between age and cognitive performance, based on research from PLOS ONE (2017)
Related Research
Parts List / Bill of Materials
Download BOM
#
Image
Part
Description
Qty
Unit Price
Datasheet
Price
1
ATmega32 Microcontroller
8-bit AVR MCU, 32 KB Flash, 2 KB SRAM, ADC, timers, USART
1
$7.50
PDF
$7.50
2
0.96″ OLED Display Module (SSD1306)
128×64 mono OLED, I²C/SPI interface
1
$2.50
PDF
$2.50
3
Male Header Pins (2.54 mm)
Breakaway straight male headers
2
$0.20
PDF
$0.40
4
Dual-Row Header (2×5, 2.54 mm)
10-pin dual-row header, unshrouded
1
$0.50
PDF
$0.50
5
SMD MOSFET (AO3400A example)
N-channel MOSFET, SOT-23
2
$0.15
PDF
$0.30
6
SMD Capacitor (MLCC 0603 example)
Ceramic capacitor, value TBD
5
$0.03
PDF
$0.15
7
SMD Resistors – 1 kΩ (code '1001')
Precision SMD resistors
5
$0.02
PDF
$0.10
8
SMD LED (0603, color TBD)
Indicator LED
2
$0.05
PDF
$0.10
9
USB-C Receptacle
Surface-mount USB Type‑C connector
1
$0.60
PDF
$0.60
10
Custom PCB (Capacitive-Touch Board)
Project-specific PCB
1
$10.00
N/A
$10.00
TOTAL
$22.15
Complete bill of materials for the ReactionAge embedded programming project. All prices are in USD and subject to supplier variations.
Nintendo Switch Controller Training for Toddlers
An interactive training module designed for young children, utilizing Nintendo Switch controller input to create an engaging letter-matching game that develops motor skills and cognitive recognition.
Game Mechanics
- Button Mapping
A, B, X, Y in inverted layout
- Visual Stimulus
Flashing letters with bright colors
- Progressive Difficulty
Adapts based on performance
Educational Benefits
- Motor Skills
Hand-eye coordination
- Letter Recognition
Alphabet learning
- Attention Building
Focus and concentration
Technical Features
- Controller Support
Pro Controller & Joy-Con
- Display System
Large, colorful letters
- Progress Tracking
Analytics & feedback
Design Files
Source code, circuit diagrams, and documentation files for embedded programming projects.
ReactionAge Arduino Code
Download .ino
Key Features
Hardware Integration
- OLED Display (SSD1306)
- RGB LED indicators
- Capacitive touch sensors
- State machine architecture
Reaction Time Analysis
- Multiple prediction models
- Statistical data collection
- CSV export functionality
- Real-time age prediction
Code Preview
// Reaction time prediction models
const float A_POOLED = -35.392393f, B_POOLED = 0.1930446f;
const float A_MALE = -58.123019f, B_MALE = 0.2640664f;
const float A_FEMALE = -31.603679f, B_FEMALE = 0.176111015f;
float predictAgeFromRT(unsigned long rt_ms) {
float x = (float)rt_ms;
float a, b, c;
switch (currentModel) {
case SX_MALE: a=A_MALE; b=B_MALE; c=C_MALE; break;
case SX_FEMALE: a=A_FEMALE; b=B_FEMALE; c=C_FEMALE; break;
default: a=A_POOLED; b=B_POOLED; c=C_POOLED; break;
}
return a + bx + cx*x;
}
Project Resources
Circuit Diagrams
- Microcontroller connection schematics
- Sensor integration diagrams
- Power supply and signal conditioning circuits
Board Design Files
Complete KiCad project files for custom PCB design, including schematics, PCB layouts, and project configurations for embedded development boards.
File Type
Description
Download
KiCad Project
Complete KiCad project file containing all design data and settings
.kicad_pro
Schematic
Circuit schematic showing component connections and electrical design
.kicad_sch
PCB Layout
Physical PCB layout with component placement and trace routing
.kicad_pcb
Design Documentation:
For detailed board design principles, USB-C connector placement, and manufacturing considerations, refer to the Board Design Documentation section above.
Reflections & Learnings
[Reflection notes placeholder.]
Contributions
Acknowledgments for collaborative support and technical assistance during the embedded programming project development.
Technical Support & Collaboration
Eghosa Ohenehn
Contributed valuable insights and technical discussions about microcontroller tradeoffs during the group assignment development. Provided expertise in evaluating different microcontroller architectures and their suitability for various embedded programming applications.
Anthony Pennes
Engaged in extensive discussions throughout the embedded programming design trades section, providing valuable technical insights and collaborative support during the group assignment development process.
Quentin Bolsée
Participated in numerous office hours discussions about embedded programming design trades, contributing significantly to the technical analysis and collaborative development of the group assignment content.
Special thanks to the collaborative learning environment that enabled knowledge sharing and technical problem-solving throughout the embedded programming week.
Ethical AI Use
Transparent documentation of AI assistance used in this week's work, following course guidelines for ethical AI usage.
AI-Assisted Template Generation and Task Planning
Used ChatGPT to generate the weekly template HTML structure and styling framework, and created structured task prompts
for week 2 embedded programming content development.
AI-Assisted Content Development and Page Structure
Used Cursor AI for iterative content development, page structure optimization, and aesthetic improvements.
The AI helped with HTML/CSS implementation, content organization, and maintaining consistent styling across the embedded programming documentation.
AI-Assisted BOM Table Implementation
Used Cursor AI to implement the comprehensive BOM table with clickable images, datasheet links, and full-width responsive design.
The AI helped with HTML table structure, CSS styling, and integration of CSV data into an aesthetically pleasing table format.
AI-Assisted Image Recognition and BOM Creation
Used ChatGPT for image recognition of electronic components to identify parts and construct the bill of materials CSV file.
The AI analyzed component images and provided detailed part specifications, descriptions, and pricing information for the embedded programming project.
AI-Assisted Project Content Updates and Documentation
Used Cursor AI for comprehensive project content updates, documentation improvements, and HTML structure optimization.
The AI assisted with content organization, styling consistency, and integration of multimedia elements for the embedded programming documentation.
AI-Assisted Arduino Programming and Code Development
Used ChatGPT for Arduino programming assistance based on the ReactionAge project code from
GitHub repository
and Quentin Bolsée's QPAD documentation available on the
course website embedded system assignment page.
The AI provided guidance on embedded programming concepts, code optimization, and integration with the QPAD-xiao board design.
AI-Assisted Group Assignment Content Development and Table Implementation
Used Cursor AI for comprehensive development of the embedded programming design trades group assignment section.
The AI assisted with creating structured subsections for language, development workflow, and microcontroller tradeoffs,
implementing professional HTML tables with data extracted from PowerPoint presentations, and integrating download links for PDF and PPTX files.
Perfect! I've successfully added a comprehensive "Common Troubleshooting" section under the board design documentation. Here's what I've implemented:
week2/training/voltage-regulator.png
with descriptive captionweek2/training/usb-c-pinot.png
with descriptive captionThe section provides practical, hands-on guidance for debugging embedded development boards, making it easy for users to verify their hardware is working correctly before diving into software development.
For the complete technical details and full conversation transcript: