I'm an electronics engineer and embedded systems developer. For more than 20 years I've been writing C for STM32 microcontrollers, and most of that time has gone into one goal: making libraries that are actually easy to use.
I got tired of fighting messy drivers and overcomplicated code, so I started writing my own, cleaning them up, and sharing them with anyone who needs them.
Lightweight, non-blocking, easy to drop in C libraries for STM32 (HAL and LL), covering storage, communication, sensors and general drivers. The idea is always the same: add the library to your project and have it working in minutes, not days.
That is what lib-installer below is for: one command puts a library into an STM32, Zephyr, ESP-IDF, Arduino or PlatformIO project. It works with anyone's library, not only mine, once it has an installer.yml. It takes a library and what it needs from GitHub, one release of it with owner/name@v1.2.0, or a zip when there is no internet, and asks before it runs anything a library brings, such as a script that makes a signing key.
And to talk to the board once it runs, terNIMA: a serial, RTT, SWO and TCP terminal, with Zephyr logs, a plotter and a Modbus tester.
Installing one of my libraries takes one command, on every platform. lib-installer is one installer for all five: it copies the files into your project and adds the library to its build, backing up every project file first. Any library it needs comes with it, an update keeps your settings, and --uninstall takes it out again. The library's installer.yml says which platform it is for, so the command is the same everywhere. What it writes into your files, such as prj.conf, sdkconfig.defaults or platformio.ini, carries the library's titles and notes as comments, so you can see why each line is there.
pip install lib-installer
lib-installer nimaltd/ee24Each of the last column is a small library made for trying the installer on, a period that never blocks, which builds on its platform with nothing to set up.
Libraries you can install with it:
The rest are moving to it one by one, and this list grows as they do. stm32-installer, zephyr-installer, esp32-installer, arduino-installer and pio-installer were five installers until 3.0.0, and are lib-installer now: a project one of them installed into moves over by itself.
terNIMA is the terminal I wanted for the boards these libraries run on: serial, RTT, SWO and TCP in one window, the same on Windows, macOS and Linux. RTT and SWO go straight through a CMSIS-DAP, J-Link or ST-Link probe, with no vendor software.
- Zephyr logs you can filter by level and module, and a full VT100 terminal for the Zephyr shell
- A live plotter for the numbers your firmware prints: over time with A and B cursors, RMS and a scope trigger, XY, histogram and FFT
- A Modbus RTU and ASCII tester, as a master or a slave, and every frame on the bus in a table
- Record a session and play it back later, with its timing
Download it for Windows, macOS or Linux from its Releases, and see it feature by feature on nimaltd.github.io.
Every library and tool I publish is free and open source. It's my way of giving something back to the embedded community that taught me so much over the years.
If one of them saves you time, a ⭐ on the repo or a small donation on Ko-fi means a lot to me. It's a small thing for you, but it genuinely keeps me motivated to keep writing, documenting and maintaining these libraries.
- Over 20 years across embedded programming, electronics design and hardware testing
- 🥉 Third place, National Skills Competition of Electronic Engineering, Iran, 2003
- B.Sc. in Electronic Engineering, Chamran University, Rasht
Thanks for stopping by. If any of my work is useful to you, a star on the repo or a small donation helps more than you'd think, and I appreciate every bit of it. ⚙️





