EMBEDDED SYSTEMS

Skill Tree: Color in the boxes and level up your skills

Use for individuals or as a group by picking a colour each and coloring in a part of the box. Everyone’s journey is different and you can interpret the goals flexibly. The aim is to inspire you to learn and try new things. Not everything needs to be completed.

Start Here

Get an Arduino
Blink an LED
Use circuit python for the first time
Convert a signal from analog to digital(ADC)
Use UART serial communication
Use SPI to send/recieve data
Use I2C communication
Debounce a button
Use Pulse Width Modulation (PWM)
Solder in your own header pins
Commit to a version control system (such as Github)
Use a Hardware Simulator eg. WokWi
Use continuity check on a Multimeter (Beepy mode!)
Implement a state machine
Configure a timer
Send data to the cloud
Use a step- through debugger to troubleshoot a problem
Use Bluetooth Low Energy (BLE)
Understand how to use a circular buffer
Analyse a signal with Fast Fourier Transform (FFT)
Create a circular buffer that uses more than 2 pointers
Move a motor
Buy someone else a dev board
Use pulse width modulation (PWM) to control RGB LEDs
Update firmware remotely (OTA, DFU, FWUP)
Display text on a screen in a different font
Use a Real Time Operating System(RTOS)
Implement an interrupt service routine (ISR)
Use closed loop control(PID) to regulate a project
Set up a cross compiler
Use USB, Wifi,Ethernet or CAN
Implement MCU sleep in a low power project
Update firmware remotely using secure encryption
Bring up a custom board for the first time
Debug a hard fault on a microcontroller
Use a camera in a project
Use an IMU sensor to track motion in multiple axes
Use Direct Memory Access (DMA)
Write manufacturing test software
Use a mutex to safeguard a resource
Debug a project with an oscilloscope
Check a .lst or .map file to troubleshoot a problem
Run unit tests in an algorithm sandbox
Reverse engineer a communication protocol
Blow fuses to test security in a project
Adapt RTOS to a new board
Write custom BLE GATT to communicate between devices
Make a dashboard for monitoring remote units
Create a software release process
Use multiple architectures in a software image
Use a .map file to debug a crash
Bit bang a communication driver
Teach a class on embedded systems
Use trace debugging to troubleshoot a problem
Write a datasheet
Debug a project with a logic analyzer
Identify a burden voltage issue
Modify a Linker File
Optimize assembly code
Create your own custom PCB
Write software for programming and testing many boards manufacturing
Use a multi core processor
Edit binary / / hex to fix a problem after release
Write a Real Time Operating System (RTOS)
Create a CI/CD System
Explore a Wide Range of Microcontrollers
Write a bootloader
Add Machine Learning(ML) to a device