Week 04

Embedded Programing

Learning outcomes

  • Implement programming protocols
Week 3 cover

Assignment requirements

Group assignment

  • Demonstrate and compare the toolchains and development workflows for available embedded architectures
  • Document your work to the group work page and reflect on your individual page what you learned

Individual assignment

  • Browse through the datasheet for a microcontroller
  • Write and test a program for an embedded system using a microcontroller to interact (with local input &/or output devices) and communicate (with remote wired or wireless connections)

Progress status

Group work Done

Demonstrate and compare the toolchains

Develop workflows

Individual work Done

Write and test a program for an embedded system using a microcontroller

Documentation Done

Upload source files.

1) Introduction

New topic

  • Learn about Xiao Seed ESP32-C3
  • Review projects with Xiao Seed ESP32-C3
  • Discuss the group project
  • Interact and collaborate

2) Group assignment - Demonstrate, compare and development embedded architectures

For more details visit Fab Lab Peru - Group Assignment: https://fabacademy.org/2026/labs/lima/#page-top


Project - Custom PCB with Seeed Studio XIAO RP2040
Xiao RP2040, Xiao ECP 32 C3, Xiao ECP 32 S3, ATSAMD11
Group Assignment - Embedded Programming
Compare performance
  • RP2040 is well balanced: it has dual-core processing, good speed (up to 133 MHz), and enough memory (264 KB SRAM + 2 MB Flash) for medium projects. It’s ideal for local control (LEDs, buttons, sensors, PWM, ADC) and quick development with Arduino or MicroPython
  • ESP32-C3 is a good option when wireless connectivity is required, since it includes Wi-Fi and Bluetooth (BLE). It is strong enough for basic IoT applications, and its main advantage is the ability to connect to a network or a phone. The workflow usually includes network setup (Wi-Fi credentials or BLE services).
  • ESP32-S3 is the most powerful option: it offers higher speed and significantly more memory available on the board (large Flash + PSRAM). This is helpful for heavier tasks, larger libraries, or advanced features, while still maintaining Wi-Fi/BLE connectivity.r
  • ATSAMD11 is the most basic and limited in terms of resources (lower speed and memory). However, it is very useful for learning because it encourages writing efficient firmware and often involves a more “technical” workflow using ARM tools and SWD debugging. It is a good option to demonstrate a workflow different from simply uploading via USB
// define led according to pin diagram in article
                  const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.

                  void setup() {
                    // initialize digital pin led as an output
                    pinMode(led, OUTPUT);
                  }

                  void loop() {
                    digitalWrite(led, HIGH);   // turn the LED on 
                    delay(1000);               // wait for a second
                    digitalWrite(led, LOW);    // turn the LED off
                    delay(1000);               // wait for a second
                  }
      
Video demonstration

3) Individual assigment

Problems

Unknow basic concepts

Unknow microcontroller Xiao ESP 32 C3 architecture

Failed leds

Poor connections

Solutions

Review Xiao ESP 32 C3 documents

Review connections using a voltimetimeter

This Wiki was useful https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/

Running 1
Reviewing components and technical specitications
Running 2
Exploring Xiao ESP 32 C 3 - documents
Running 3
Viewing clear with a magnifying glass
Running 4
Connecting without experiences - Error, error and error
Swimming 2
Installing Arduino Ide
Swimming 2
Load program and reset
// define led according to pin diagram in article
                  const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.

                  void setup() {
                    // initialize digital pin led as an output
                    pinMode(led, OUTPUT);
                  }

                  void loop() {
                    digitalWrite(led, HIGH);   // turn the LED on 
                    delay(1000);               // wait for a second
                    digitalWrite(led, LOW);    // turn the LED off
                    delay(1000);               // wait for a second
                  }
            
Camera 1
Connections at Xiao ESP 32 C3 using the protoboard
Camera 2
Testing leds
Camera 1
Connecting more leds
Camera 1
Connecting three leds
Camera 1
Connecting three leds
Camera 1
Connecting a fan
void setup() {
                    Serial.begin(115200);     // start serial communication
                  }

                  void loop() {
                    Serial.println("Hello, Hello Fab Academy!");
                    delay(2000);   // repeat every 2 seconds
                  }
            

4) Final results

5 References files

We learn how to test a program for an embedded system using a microcontroller

Sections