Recent Videos
Embedded Project Series

#1 Intro and Overview
Introducing a video series about programming a sumobot (embedded system) form scratch in C.

#2 Picking the Parts for a Small Robot
I go over the hardware parts of the robot and explain why I picked them.

#3 PCB Design Walkthrough Sumo Robot
An overview of the robot's 2-layer PCB designed in KiCad.

#4 Install and IDE and Blink an LED
Setup of the vendor's integrated development environment (IDE).

#5 Mcu programming without IDE
As an alternative to the IDE, I show how to use the toolchain directly from the command-line.

#6 How to Create a Software Architecture
A block diagram of the software architecture and the importance of abstraction.

#7 The BEST Project Structure for C/C++
The project file structure of the project and why it's the best one (or not).

#8 Version control with Git
Git workflow and how to write good commit messages.

#9 Static Analysis for C/C++ with cppcheck
How to use cppcheck, a static analyser for C/C++ to find errors in programs before execution.

#10 CI/CD with GitHub Actions and Docker
A simple continuous integration (CI) / continuous delivery (CD) pipeline using GitHub actions.

#11 Documentation and Clang format
Documentation (README.md), coding guidelines, and code formatting of the project.

#12 How I program GPIOs in C
A code abstraction for GPIOs in C that lets you configure and initialize all pins in a single place.

#13 Handling multiple Hardware Versions
Handling multiple hardware targets with the same software at compile time and runtime.

#14 Asserts on a Microcontroller
An assert implementation for a microcontroller that stops everything, logs, and blink an LED.

#15 Test functions
Some scratch functions I use to test particular parts of the code.

#16 How Microcontroller Memory Works
Microcontroller memory shown with a code example and the IDE's memory browser.

#17 Microcontroller Interrupts
How microcontroller interrupts work by mixing theory with a code example.

#18 Write a UART driver
Printing text over UART from a microcontroller to a desktop computer.

#19 Printf on a Microcontroller
A printf implementation for microcontrollers to print formatted strings to the terminal.

#20 NEC Protocol Driver
A simple driver to decode the NEC protocol signal from an IR remote

#21 Motor Control with PWM
Driver code to control four brushed DC motors from two motor drivers (TB6612FNG).

#22 ADC driver with DMA in C
A DMA-based ADC driver to sample the values from the four line sensors.

#23 I2C Driver in C (VL53L0X)
An I2C driver to talk to to five range sensors (VL53L0X) verified a logic analyzer.

#24 How to Board Bring-up
Board bring-up of the PCB using the code developed on the development board.

#25 Robot 2D Simulator with C++
I made a 2D simulator for robotics from scratch in C++.

#26 How to Code a State Machine
Sketching out the state diagram with PlantUML and prepare the corresponding skeleton code in C.

#27 Simulation to Real-world Demo
I finish up the state machine and demonstrate that it works.

#28 The End
In this final video of the series, I summarize my thoughts on the project.
About Me
I make content about embedded systems, mostly on YouTube, sometimes in writing.
I studied computer engineering and now work as an embedded systems engineer, doing both software and hardware. I’ve contributed to products like cameras, smart locks, control panels, and automation equipment, covering everything from early prototypes to compliance and production. These days, I'm building connected devices with a small, experienced team at EUB (check them out if you're looking to bring a product to life).
With Artful Bytes, I want to make embedded systems more approachable and help you go from basic tinkering to building real devices.
Contact
Contact me below or send an email to niklas@artfulbytes.com.