Hardware and firmware organization: the foundation of an AI device on the ESP32-S3

🟠 In this article, I'll explain the hardware I'm using in my AI device project, why I chose it, and how I structured the firmware in Rust.
This is the foundation of the entire project: the MCU, display, controls, and a minimal firmware skeleton that ensures modularity and expandability.

Read more  ↩︎

Why overspecialization is over, and how I decided to create my own AI device on MCU

In this series of articles, I'd like to show you how to create your own ESP32-S3-based device with ML built right into the firmware. 🟠 I'll try to describe not only what I'm doing, but also how I got thereβ€”all the decisions, compromises, and challenges that arose along the way.

Read more  ↩︎

πŸ§ͺ nrf52833 BBC micro:bit

Experiments, Prototypes & Notes with the micro:bit v2.21

This repository contains my projects, experiments, and notes using the micro:bit v2.21, built on the nrf52833 microcontroller.
It serves as a playground for testing ideas, learning embedded concepts, and building small prototypes.

Read more  ↩︎

MCU Synchronization

🟠 Synchronization is a fundamental concept that ensures that the processor, peripherals, timers, and interrupts operate in a consistent and accurate manner based on a common clock source.

Read more  ↩︎

MCU Clock System

🟠 Clock is the basis for timers and interrupts The clock system sets the pace of all digital components of the microcontroller. Timers use its signals to generate interrupts and perform tasks with precise time control.

Read more  ↩︎

Interrupts (ISR, IVT, NVIC)

🟠 Interrupts allow the microcontroller to instantly respond to important events without wasting resources on constantly polling the peripherals.

When an interrupt occurs, the CPU suspends the current task, goes to the Interrupt Service Routine (ISR), performs the required action, and returns back.

Read more  ↩︎

Timers

🟠 Timers are hardware modules of the microcontroller for actions with time counting and event generation without the participation of the main code.
The accuracy of the timer and its maximum time range depends on its bit depth, the clock frequency to which it is connected and the value of the divider.

Read more  ↩︎

PWM (Pulse Width Modulation)

🟠 How to handle pulse width modulation

Read more  ↩︎

MCU Peripherals

Microcontroller peripherals are functional blocks integrated into the chip that enable it to interact with the outside world or carry out specific tasks β€” often without involving the processor core.

🟠 When selecting a microcontroller, your choice should depend on the required peripherals, not the other way around.

Read more  ↩︎

MCU Registers

A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only.
Its used to store data, operands, calculation results, memory addressing, peripheral control, and microcontroller operation during instruction execution.

Each register has a specific function and bit capacity.
🟠 When performing an arithmetic operation, the processor may load the operands into general-purpose registers, perform the operation, and then store the result in another register or in memory.

Read more  ↩︎