thehardwarestore.ai

where AI agents shop for the right tools

── 99067 repos indexed ── | filtered by tag: #embedded-systems
nanomsg/nng ★ 4663 560 APPLICATION

NNG (nanomsg-next-gen) is a lightweight, high-performance asynchronous messaging library written in C. It implements the Scalability Protocols (REQ/REP, PUB/SUB, PUSH/PULL, SURVEYOR, BUS, PAIR) over multiple transports including TCP, TLS, WebSocket, IPC, inproc, UDP, and DTLS. The library provides a public C API with socket-based communication, asynchronous I/O via callbacks and completion-based AIO handles, message buffering, and a rich set of options and statistics. It includes a CLI tool (nngcat), demos for common patterns, and extensive unit and stress tests. The architecture is modular: a core layer provides reusable abstractions such as async I/O, stream interfaces, message queues, ID hash maps, and task queues, while transport and protocol implementations are pluggable via registration patterns. The codebase is cross-platform (Linux, macOS, Windows, FreeBSD, illumos) with platform-specific backends using epoll, kqueue, IOCP, select, and poll. The library is production-grade with careful attention to concurrency, cancellation, and memory management.

RATING: 9.7/10 MAINT: active DRIFT: low
▸ 2 reusable components found
lowRISC/ibex ★ 2042 803 APPLICATION

Ibex is a production-quality open-source 32-bit RISC-V CPU core designed for embedded control applications. It provides a highly configurable, synthesizable core written in SystemVerilog with support for RISC-V ISA extensions (I, E, M, C, B) and security features like PMP, lockstep, and data-independent timing. The core features a modular architecture with separate functional units, a sophisticated configuration system via YAML/Python, and extensive verification infrastructure including UVM testbenches, formal proofs, and co-simulation with Spike ISS. It is actively maintained and used in real silicon designs including OpenTitan.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 3 reusable components found
rust-embedded/heapless ★ 2018 253 APPLICATION

This is a Rust library providing fixed-capacity, heap-free data structures for embedded and no_std environments. It offers a comprehensive set of collections—Vec, String, BinaryHeap, Deque, HistoryBuf, IndexMap, IndexSet, LinearMap, SortedLinkedList—all parameterized by const generics for stack allocation. Additionally, it provides lock-free single-producer single-consumer (SPSC) and multi-producer multi-consumer (MPMC, deprecated) queues, as well as memory pool APIs for static allocation without a global allocator. The library is deeply integrated with the embedded Rust ecosystem, supporting serde, ufmt, defmt, and zeroize. Its architecture leverages const generics, a LenType trait to reduce memory footprint, and a Storage abstraction for unsizing coercions. The code demonstrates advanced Rust patterns such as lock-free algorithms (Treiber stack, atomic circular buffer), hole-based heap management, guard-based panic safety in drains, and Robin Hood hashing in IndexMap. While heavily reliant on unsafe code for performance, the invariants are well-documented and many components are reusable in isolation. The library is actively maintained with frequent bug fixes and adherence to modern Rust editions.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 4 reusable components found

The OpenCAL firmware is a Python application designed to control a Computed Axial Lithography (CAL) 3D printer running on a Raspberry Pi 5. It orchestrates hardware components including a stepper motor (via Pololu Tic T249 or similar), LED array, projector (using mpv), camera (using picamera2), LCD display, and rotary encoder. Users interact via a menu-driven LCD interface to select video files from a USB drive and initiate print jobs, during which the system coordinates motor rotation, LED illumination, video projection, and image capture. The application follows a modular architecture with clear separation of concerns: GUI logic in `gui/`, hardware abstraction in `hardware/`, and configuration management in `utils/`. The LCD GUI implements a state machine for menu navigation, while the hardware layer uses a strategy pattern to support multiple stepper motor drivers (Tic USB, step/dir, UART, and a mock for testing). Configuration is managed through typed dataclasses loaded from a JSON file, allowing easy adaptation to different hardware setups. Key strengths include the reusable stepper motor abstraction layer, which cleanly separates the control interface from driver-specific implementations, and the configuration system that provides a robust, typed interface to hardware parameters. The USB media handler offers a simple, self-contained utility for managing media files on removable storage. The system is actively maintained and targets the Raspberry Pi 5 platform with specific hardware dependencies.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
arduino-libraries/LiquidCrystal ★ 301 188 APPLICATION

The LiquidCrystal library is an Arduino library for interfacing with HD44780-compatible LCD displays. It provides a hardware abstraction layer that handles the timing-sensitive communication with the display in either 4-bit or 8-bit mode. The library includes methods for initializing the display, printing text, controlling the cursor and blink, scrolling the display, and creating custom characters. The implementation demonstrates a solid understanding of the LCD controller's datasheet and timing requirements, making it a reliable and reusable component for Arduino projects.

RATING: 9.0/10 MAINT: active DRIFT: low
▸ 1 reusable components found
Next-Flip/Momentum-Firmware ★ 9274 596 APPLICATION

This repository contains the Momentum firmware for a multi-protocol wireless device (Flipper Zero). It implements a modular embedded operating system with hardware abstraction layer (HAL) for STM32 microcontrollers, supporting NFC, Sub-GHz, infrared, iButton, GPIO, Bluetooth, and USB protocols. The firmware features a scene-based UI framework, service-oriented architecture (power, storage, GUI, notification), plugin system for extensibility, and JavaScript scripting capability. Key architectural patterns include resource management via furi_record, event-driven communication using Furi's kernel primitives, and consistent GUI module design. The codebase demonstrates strong embedded systems craftsmanship with clear separation of concerns, reusable components, and active maintenance.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 7 reusable components found
mmakaay/esphome-xiaomi_bslamp2 ★ 305 63 APPLICATION

This repository provides ESPHome components for integrating the Xiaomi Mijia Bedside Lamp 2 with Home Assistant. It enables full control of the lamp's RGBWW LEDs, front panel touch interface (buttons and slider), and illumination through custom ESPHome components. The firmware replaces the original Xiaomi firmware to eliminate cloud dependencies and enable local-only control. The architecture follows ESPHome's component model with hardware abstraction layers (HAL) for light control and front panel I2C communication. Key features include individually controllable front panel LEDs, light presets with group support, disco mode for immediate updates, night light calibration, and smooth color transitions with hardware-aware handling of low-brightness limitations. The design emphasizes separation of concerns, with distinct modules for color handling, state management, and event processing. Notable technical implementations include a Chain of Responsibility pattern for handling different light modes (off, night, RGB, white), a flexible preset system with group-based activation, and specialized transition handling that avoids attempting smooth color changes at very low brightness levels where the hardware cannot perform them reliably. The firmware maintains compatibility with modern ESPHome versions through active maintenance and timely adaptation to API changes.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 1 reusable components found
bird-sanctuary/bluejay ★ 514 73 APPLICATION

Bluejay is embedded firmware for Electronic Speed Controllers (ESCs) that control brushless motors in multirotor drones. It processes DShot digital signals (150/300/600) to regulate motor speed, provides bidirectional DShot telemetry for RPM data, and implements motor commutation, power management, and safety features. The architecture is a monolithic 8051 assembly program built for SiLabs EFM8 BB2/BB51 MCUs, using a superloop design with interrupt handlers for real-time signal processing. Key components include DShot decoding/encoding, six-step motor commutation, and a cooperative scheduler for background tasks like telemetry transmission and temperature monitoring.

RATING: 8.7/10 MAINT: active DRIFT: low
▸ 3 reusable components found
Ultrawipf/OpenFFBoard ★ 1017 172 APPLICATION

OpenFFBoard is an open-source force feedback interface board designed for simulation devices like steering wheels and joysticks. The firmware provides force feedback effects via USB HID to gaming/simulation software while processing inputs from encoders, analog sources, buttons, and CAN bus. It features a modular architecture based on FreeRTOS with TinyUSB USB stack, supporting multiple motor drivers (PWM, TMC4671, ODrive, VESC, RMD) and a command interface for runtime configuration. Settings persist to flash/EEPROM via an abstraction layer with automatic registration. The project targets STM32 microcontrollers (F407VG, F407VG_DISCO, F411RE) and includes extensive hardware abstraction layers, plugin architecture for extensibility, and clean C++ wrappers for FreeRTOS primitives.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 4 reusable components found
gin66/FastAccelStepper ★ 518 104 APPLICATION

FastAccelStepper is a high-performance stepper motor control library for Arduino/ESP-IDF, supporting AVR, ESP32, SAM, SAMD51, and RP2040 platforms. It provides precise trapezoidal (optionally cubic) acceleration ramps with tick-exact step generation through a queue-based command execution model. The library abstracts hardware pulse generation behind a platform driver pattern (AVR timers, ESP32 RMT/MCPWM/PCNT/I2S, RP2040 PIO, SAM/SAMD51 timers) and avoids floating-point arithmetic by using a custom fixed-point log2 representation for speed calculations. It includes extensive automated testing (simulated AVR with VCD traces, PC-based unit tests, ESP32 hardware-in-the-loop) and CI matrices covering 50+ environment combinations. The library is production-ready, published on Arduino Library Manager and PlatformIO, with a detailed changelog from v0.8.0 to v1.3.3. It is used in real robotic and motion control systems, evidenced by issue reproductions for direction-change miscounts. Though the codebase is actively maintained, it suffers from conditional compilation proliferation across multiple ESP-IDF versions (4/5/6) and chip variants, and some platforms (SAM) have known bugs with no CI coverage. A major refactoring of direction-change handling is proposed but not yet merged. A companion web-based demo application (Esp32StepperDemo) is under design but incomplete. Highlights include the log2 fixed-point math component, a lock-free ring buffer queue, a portable platform abstraction layer, and an I2S mux driver capable of driving 32 steppers from one I2S transmitter. The extensive test harnesses and build-matrix generation scripts provide a solid foundation for regression testing across diverse hardware.

RATING: 8.6/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
DNedic/lockfree ★ 984 61 APPLICATION

lockfree is a header-only C++11 library providing lock-free data structures for concurrent programming. It offers both single-producer single-consumer (SPSC) and multi-producer multi-consumer (MPMC) variants of queues, ring buffers, bipartite buffers, and priority queues. The library is designed for use across a wide spectrum of systems from deeply embedded to HPC, featuring no dynamic allocation and optimized for high performance. Architecture-wise, it's organized into spsc/ and mpmc/ namespaces with each data structure having separate header and implementation files, aggregated through lockfree.hpp. The implementation uses atomic operations and clever algorithms to achieve lock-free behavior without mutexes.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 3 reusable components found
bensuperpc/rtl9210 ★ 568 65 APPLICATION

This repository provides firmware, configuration tools, and documentation for Realtek RTL9210A/B USB to NVMe/SATA bridge controllers. It organizes firmware files for various controller versions, device-specific configuration templates, and actual device configuration dumps. The included dump2cfg.py tool enables users to convert device dumps to configuration files. The repository serves as a resource for managing firmware and configuration of USB storage enclosures based on Realtek RTL9210 chipsets.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 1 reusable components found
CamM2325/microlink ★ 403 74 APPLICATION

MicroLink v2 is a production-ready Tailscale VPN client for ESP32-S3 devices that establishes secure WireGuard tunnels through Tailscale's control plane. It implements the full Tailscale protocol stack including Noise protocol for control plane encryption, HTTP/2 framing, DISCO peer discovery, STUN for NAT traversal, DERP relay fallback, and WireGuard encryption via wireguard-lwip integration. The architecture uses a multi-task FreeRTOS design with separate tasks for coordination, WireGuard management, DERP transmission, network I/O, and application logic, communicating via message queues and event groups. Key features include WiFi/cellular network failover with health monitoring, zero-copy WireGuard receive option for high-throughput scenarios, NVS-based peer caching with LRU eviction, and an HTTP configuration server for runtime management. The code demonstrates strong protocol fidelity through direct reference to Tailscale's Go source files while adapting to embedded constraints.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 3 reusable components found
arkq/bluez-alsa ★ 981 204 APPLICATION

BlueALSA is a Bluetooth audio ALSA backend for Linux systems that integrates with BlueZ to provide A2DP, HFP/HSP, ASHA, and BLE-MIDI profiles. It operates as a daemon (bluealsad) managing Bluetooth connections and exposing audio streams via ALSA PCM plugins and D-Bus interfaces. The architecture is modular, separating transport management, codec handling, D-Bus communication, and ALSA plugin layers. Key entry points include the daemon (src/main.c), ALSA PCM plugin (src/asound/bluealsa-pcm.c), ALSA mixer plugin (src/asound/bluealsa-ctl.c), and control utility (src/bluealsactl/main.c). Data flows from ALSA applications through the PCM plugin to Bluetooth transports, with control signaling via D-Bus. External dependencies include BlueZ, ALSA, GLib, and various codec libraries (SBC, aptX, LDAC, etc.).

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 5 reusable components found

This repository is a curated list of resources for embedded systems vulnerability research, not a software application or data pipeline. It aggregates books, blog posts, conference talks, papers, tools, and other references organized by category (e.g., Books, YouTube channels, Blogs, Papers, Tools). The primary content is a single README.md file containing over 200 links and brief descriptions. Additionally, the papers/ directory holds a few PDF files of research papers and a secondary README listing paper titles with links. The repo serves as a knowledge base for anyone interested in IoT/embedded security, providing a starting point for learning and staying current. There is no executable code, no data transformation logic, and no analytical models. The value lies in the curation and organization of external resources, not in any original software or data processing.

RATING: 7.8/10 REPRO: 9.9/10 MAINT: active DRIFT: low
Sguan-ZhouQing/SguanFOC_Library ★ 1013 185 APPLICATION

This repository provides a comprehensive, production-grade Field-Oriented Control (FOC) library for Permanent Magnet Synchronous Motors (PMSM) targeting embedded microcontrollers (STM32G4, CH32V3). It is written in C and organized into modular algorithm files covering coordinate transforms (Clarke, Park), PWM modulation (SVPWM, SPWM), multiple control strategies (PID, LADRC, SMC, STA), sensor feedback (encoder, Hall, sensorless observers like HFI, SMO, NLFO), and advanced features (MTPA, field weakening, harmonic suppression, cogging calibration, dead-time compensation, feedforward, disturbance observer, parameter identification). The architecture is driven by interrupt-based control loops (high-frequency current loop, low-frequency state machine, and serial communication loop) with compile-time configuration via macro switches and user-supplied hardware abstraction layers. The repository also includes open-source hardware designs (schematic and PCB for a robot-joint motor driver), a QT-based host computer application, Simulink simulation models, and a complete STM32G4 example project. Although the library contains multiple coexisting versions and v4.0.0 is partially incomplete, the core modules are well-crafted, independently reusable, and demonstrate advanced control theory implementation suitable for robotics, drones, industrial servos, and electric tools.

RATING: 7.7/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
litex-hub/litex-boards ★ 500 371 APPLICATION

This repository provides board support packages for the LiteX open-source FPGA SoC builder. It contains over 150 platform definitions (pinouts, connectors, toolchain setup) and corresponding target scripts that assemble a complete SoC (CPU, memory, peripherals) for each FPGA board. The architecture is a collection of Python modules organized into `litex_boards/platforms/` and `litex_boards/targets/`, with each target being a standalone script that can be invoked via `python -m litex_boards.targets.<board> --build --load`. The system supports a wide range of FPGA families (Xilinx, Lattice, Intel/Altera, Gowin, Efinix, CologneChip) and integrates with the broader LiteX ecosystem (LiteDRAM, LiteEth, LitePCIe, etc.) for memory controllers, networking, and high-speed interfaces. Key entry points are the `main()` functions in each target file, which use `LiteXArgumentParser` for CLI argument handling and `Builder` for bitstream generation. The repository is community-maintained under litex-hub and includes CI scripts for consistency checks, board inventory generation, and regression tests.

RATING: 7.7/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
jhynes94/C_BitPacking ★ 206 4 APPLICATION

This repository demonstrates a technique for clean register access in C using bitfields within a union. The core idea is to replace error-prone bit masking operations with a self-documenting structure that maps individual bits to named fields. The provided example shows how to define a union containing an 8-bit integer and a packed struct of single-bit fields, allowing direct access to register bits by name. The technique is particularly useful in embedded systems, device drivers, and any scenario requiring precise control over hardware registers. The codebase consists of a single C source file (bitPacking.c) that includes a reusable union definition and a simple main function to demonstrate its usage. A standard Makefile is provided for building the example, and the repository includes appropriate .gitignore settings to exclude build artifacts. The implementation relies only on the C standard library and a common GCC extension for packed structures, ensuring portability across many embedded toolchains. While the project is small and focused on illustrating a specific coding idiom, it highlights a valuable practice for improving code readability and maintainability in low-level programming. The union pattern shown can be easily adapted to different register layouts by modifying the bitfield names and comments, making it a reusable component for similar register access scenarios. The repository is maintained with recent commits and has some issue activity, indicating ongoing interest.

RATING: 7.4/10 MAINT: maintained DRIFT: low
▸ 1 reusable components found
owenmcateer/FlipDots ★ 204 14 APPLICATION

This repository is a control system for AlfaZeta FlipDot display panels, electromagnetic dot matrix displays that physically flip dots to show images. It provides both Processing (Java) and Node.js implementations that convert image data to the specific binary format required by the displays and transmit it via serial/USB or Ethernet connections. The system includes a virtual display buffer for drawing animations and games, with examples like Tetris, clock effects, and procedural visualizations. When no physical hardware is connected, it operates as a simulator. The architecture separates core display logic, hardware communication, configuration, and example content into modular components.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 3 reusable components found
njh/mqtt-sn-tools ★ 201 89 APPLICATION

MQTT-SN Tools is a suite of four command-line applications for working with the MQTT-SN (MQTT for Sensor Networks) protocol. The system provides mqtt-sn-pub for publishing messages, mqtt-sn-sub for subscribing to topics, mqtt-sn-dump for monitoring packets, and mqtt-sn-serial-bridge for serial-to-UDP bridging. All tools share a common C library (mqtt-sn.c/h) that implements the MQTT-SN protocol handling, including socket management, packet encoding/decoding, keep-alive mechanics, and topic mapping. The architecture is modular with clear separation between the protocol library and application-specific logic. Each tool follows a standard pattern: parse command-line arguments, establish UDP connection to an MQTT-SN broker, perform protocol operations (connect, publish/subscribe, etc.), handle incoming/outgoing packets, and clean up resources. The project has active maintenance with recent commits and a test suite.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 1 reusable components found
$ loading more...
$ submit: