Recent Videos

Embedded Project Series

#1 Intro and Overview

#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

#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

#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

#4 Install and IDE and Blink an LED

Setup of the vendor's integrated development environment (IDE).

#5 Mcu programming without 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

#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++

#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

#8 Version control with Git

Git workflow and how to write good commit messages.

#9 Static Analysis for C/C++ with cppcheck

#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

#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

#11 Documentation and Clang format

Documentation (README.md), coding guidelines, and code formatting of the project.

#12 How I program GPIOs in C

#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

#13 Handling multiple Hardware Versions

Handling multiple hardware targets with the same software at compile time and runtime.

#14 Asserts on a Microcontroller

#14 Asserts on a Microcontroller

An assert implementation for a microcontroller that stops everything, logs, and blink an LED.

#15 Test functions

#15 Test functions

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

#16 How Microcontroller Memory Works

#16 How Microcontroller Memory Works

Microcontroller memory shown with a code example and the IDE's memory browser.

#17 Microcontroller Interrupts

#17 Microcontroller Interrupts

How microcontroller interrupts work by mixing theory with a code example.

#18 Write a UART driver

#18 Write a UART driver

Printing text over UART from a microcontroller to a desktop computer.

#19 Printf on a Microcontroller

#19 Printf on a Microcontroller

A printf implementation for microcontrollers to print formatted strings to the terminal.

#20 NEC Protocol Driver

#20 NEC Protocol Driver

A simple driver to decode the NEC protocol signal from an IR remote

#21 Motor Control with PWM

#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

#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)

#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

#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++

#25 Robot 2D Simulator with C++

I made a 2D simulator for robotics from scratch in C++.

#26 How to Code a State Machine

#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

#27 Simulation to Real-world Demo

I finish up the state machine and demonstrate that it works.

#28 The End

#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.