Skip to content
View a5021's full-sized avatar
🙂
🙂
  • 🌍 Earth

Block or report a5021

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
a5021/README.md

Hi there! I'm an Embedded Software Engineer

I specialize in low-level, register-level development (Bare Metal) and firmware optimization for ARM Cortex-M, AVR, and STM8 microcontrollers. I focus on writing highly efficient, non-blocking peripheral drivers, wireless telemetry systems, and creating custom automation tools to streamline the development workflow.


Technical Stack

Microcontrollers (MCUs)

  • STMicroelectronics: STM32 and STM8
  • Nordic Semiconductor: nRF52832
  • Microchip: ATmega8 (AVR)

Peripherals & Protocols

  • Wireless/Radio: Proprietary 2.4GHz (nRF24L01), BLE (nRF52)
  • Sensors: BME280 (Bosch), DS18B20 (Dallas/Maxim)
  • Interfaces: Register-level control of UART, SPI, I2C, 1-Wire, DMA, and Timers

Languages & Automation Tools

  • Firmware: C (Primary for MCU), C++
  • Automation & Scripting: Python (code generation, parsing), Bash / Shell scripting
  • Methodology: Pure CMSIS & Register-level development (No heavy HAL abstractions), CPU overhead optimization, and Low Power management

Featured Projects

Here are the key repositories that reflect my engineering approach and code quality:

  • Overview: A universal, register-level 1-Wire master layer for STM32 with a full-featured DS18B20 temperature driver built on top of it. The MCU-independent core rides a small port interface; header-only backends ship today for STM32F103 and STM32F030.
  • Key Feature: Every bus slot is generated and captured by TIM1 + DMA hardware automation — zero interrupts, zero busy-waits. Multi-sensor Search ROM, alarm search, per-device addressing and non-blocking command transactions, verified on real hardware with an 8-device bus.
  • Stack: C, CMSIS / Register-Level Programming, TIM + DMA, dual-backend (Cortex-M3 / Cortex-M0).
  • Overview: A complete three-link wireless telemetry system spanning three MCU architectures. An STM32F030F4P6 multisensor node (BMP180, Si7021, BH1750) transmits environmental data over nRF24L01+ to an ATmega8 repeater, which controls a load relay and retransmits the datagram across multiple channels. An STM8S003F3 receiver decodes the relayed data and sends it over UART to an OpenWrt-based router, which forwards the telemetry to the internet via a set of scripts.
  • Key Feature: Demonstrates cross-architecture interoperability (ARM Cortex-M0, AVR, STM8) with a shared radio protocol, bare-metal drivers, and relay-based automation, with end-to-end telemetry delivery to an internet-connected endpoint.
  • Stack: C, STM32F030F4P6, ATmega8, STM8S003F3, nRF24L01+.
  • Overview: Firmware for a wireless environmental sensor node measuring pressure, humidity, and temperature.
  • Key Feature: Implements direct radio communication on Nordic chips with a strong focus on low-power optimization and standalone efficiency.
  • Stack: C, nRF52832, BME280.
  • Overview: A shell script for instantaneous scaffolding of a clean, CMSIS-ready project structure for BluePill boards, bypassing bulky IDE project wizards.
  • Stack: Bash / Shell.
  • Overview: A Python-based CLI tool designed to automatically generate CMSIS-compliant peripheral initialization templates for STM32 MCUs.
  • Key Feature: Serving as a lightweight alternative to heavy IDE tools (like STM32CubeMX) for developers who prefer clean, bloat-free bare-metal code.
  • Stack: Python, CMSIS, Bare-metal workflow.

Profile Analytics

This dynamic card updates automatically and analyzes the codebase across all my public repositories:

a5021's GitHub stats

Pinned Loading

  1. NRF52832-BME280-RADIONRF52832-BME280-RADIOPublic

    nRF52832 + BME280 wireless sensor with nRF24L01(+)-compatible radio

    C 6

  2. stm32-async-1wirestm32-async-1wirePublic

    Non-blocking (async) DS18B20 and generic 1-Wire drivers for STM32 — register-level, TIM+DMA driven, interrupt-free.

    C 9 1

  3. BluePill_Project_GeneratorBluePill_Project_GeneratorPublic

    STM32F103 DevBoard Project Generator

    Shell 5 1

  4. ARDUINO-NRF52832-EXAMPLESARDUINO-NRF52832-EXAMPLESPublic

    Code snippets and examples for NRF52832 based Arduino board

    C++ 8 3

  5. stm32codegenstm32codegenPublic

    CMSIS-based bare-metal initialization code generator for STM32

    Shell 3 1

  6. STM32F030F4P6-WIRELESS-MULTISENSORSTM32F030F4P6-WIRELESS-MULTISENSORPublic

    STM32F030F4P6 based wireless NRF24L01 multisensor

    C 4 1