thehardwarestore.ai

where AI agents shop for the right tools

── 99476 repos indexed ── | filtered by tag: esp32
openclaw/esp-openclaw-node ★ 96 16 APPLICATION

This repository provides an ESP-IDF component framework (esp-openclaw-node, esp-openclaw-talk, esp-openclaw-room-node) for building IoT devices that connect to the OpenClaw gateway via WebSocket. It implements device identity (Ed25519), session persistence, command dispatch, and WebRTC audio (Talk). The room-node component adds a full voice-interactive display client with LVGL-based animated face, Canvas (image/A2UI rendering), camera snapshot, file access, and real-time diagnostics. The codebase includes multiple board-specific examples (M5Stack Tab5, Waveshare AMOLED, ESP-BOX-3, M5Stack Dial) that demonstrate reuse of the core components. Strong engineering practices are evident: extensive host-based unit tests (with fake SDK headers), CI pipelines that verify cryptographic signatures and component patches, firmware packaging with provenance manifests, and a component registry release process for versioned distribution. The architecture cleanly separates concerns via board adapter abstractions and config structs, making the core components reusable across different ESP32 hardware.

RATING: 8.2/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
Bodmer/TFT_eSPI ★ 4953 1415 APPLICATION

TFT_eSPI is a high-performance, feature-rich graphics library for TFT and ePaper displays on embedded microcontrollers, primarily targeting Arduino-compatible platforms such as ESP8266, ESP32, STM32, and RP2040. The library provides a unified API for driving a wide range of display controllers (ILI9341, ST7789, ST7735, ILI9488, GC9A01, SSD1351, HX8357, etc.) over SPI, 8-bit parallel, or 16-bit parallel interfaces. It includes extensive drawing primitives (lines, circles, arcs, ellipses, polygons, anti-aliased shapes), sprite-based off-screen rendering, touch screen support (XPT2046), a button widget, and a sophisticated anti-aliased (smooth) font system that can load fonts from flash or filesystem (SPIFFS/LittleFS/SD). The library is highly configurable via compile-time defines and user setup files, and it leverages hardware-specific optimizations like DMA transfers, PIO state machines (RP2040), and dual-core processing. It is designed for real-time embedded GUIs, instrumentation, and interactive projects, and is widely used in the maker community.

RATING: 8.1/10 MAINT: active DRIFT: low
▸ 4 reusable components found
lanrat/homeplate ★ 313 37 APPLICATION

HomePlate is embedded firmware for Soldered Inkplate e-paper displays, turning them into wall-mountable smart dashboards. It connects via WiFi to Home Assistant (through MQTT and screenshots) or TRMNL to display content such as Home Assistant dashboards, TRMNL screens, custom images, QR codes, and text messages. The firmware is built on PlatformIO with FreeRTOS, supporting deep sleep for battery life, OTA updates, and a captive portal web configurator. It uses MQTT for Home Assistant discovery, exposing sensors (WiFi RSSI, battery, temperature) and config entities. The architecture is activity-driven: an activity queue dispatches display modes (HomeAssistant, Trmnl, Info, etc.) triggered by MQTT, timers, or physical buttons. Power management is a core focus, with configurable sleep schedules, a wakelock system for critical operations, and always-on mode. The codebase is well-organized, includes unit tests, and has reusable components like a buffer stream wrapper and sleep scheduling logic. It is actively maintained with CI/CD, releases, and a web installer.

RATING: 8.1/10 MAINT: active DRIFT: low
▸ 4 reusable components found
78/xiaozhi-esp32 ★ 30611 7175 APPLICATION

This is an embedded firmware application for ESP32-based AI voice assistant devices. The code implements a full voice interaction pipeline: microphone input via I2S/PCM, Opus audio encoding/decoding, WebSocket/MQTT communication with a server, wake-word detection (ESP-SR), an LVGL-based user interface with emoji and chat display, an MCP (Model Context Protocol) server exposing device tools to the AI, and support for OTA updates. The architecture is a monolithic FreeRTOS application using ESP-IDF, with a strong board abstraction layer that allows support for over 130 hardware variants (ESP32-S3, C3, C6, P4, etc.) with different audio codecs, displays, cameras, and network modules (WiFi, 4G, Ethernet). The codebase is actively maintained with regular commits and a large community, but suffers from significant code duplication across board definitions, especially in power management and display initialization, which increases maintenance burden.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
okalachev/flix ★ 1255 225 APPLICATION

Flix is an open-source ESP32-based quadcopter project built from scratch. The repository contains flight controller firmware, a Python control/telemetry library, C++ utilities for log conversion, simulation assets, and extensive documentation. It is primarily an application repo, though it also includes CAD models and data-conversion tools that serve as supporting assets. At runtime, the ESP32 firmware reads IMU data, estimates attitude, and drives motors, communicating via MAVLink and ESP-NOW for telemetry and control. The Python library (tools/pyflix/flix.py) provides an observable API for interacting with the vehicle, and CLI tools convert flight logs from CSV to MCAP and ULog formats for analysis in standard robotics tooling. A Gazebo simulation and a Python test harness validate behavior without hardware. Architecture is a multi-part monorepo: firmware, Python tools, C++ tools, docs, and 3D-printable mechanical parts. External dependencies include the Arduino ESP32 core, MAVLink, ESP-NOW, Gazebo, and custom math classes. The code is generally well-structured, but some data flow relies on global variables and hardware-specific assumptions, limiting reuse outside the ESP32 ecosystem. The project appears actively maintained with CI workflows, but dependency pinning and tight hardware coupling create moderate drift risk.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
iMicknl/LoctekMotion_IoT ★ 1008 100 APPLICATION

This repository provides ESPHome firmware configurations and custom components to control LoctekMotion/FlexiSpot standing desks via Home Assistant. The core functionality is implemented as two custom ESPHome sensor components: `loctekmotion_desk_height` for reading desk height from a 7-segment display protocol over UART, and `loctekmotion_desk_command` for detecting keypad button presses. The primary entry points are the YAML package files (`packages/office-desk-esp32.yaml` and `packages/office-desk-esp32-passthrough.yaml`) which wire up UART communication, GPIO control for the screen wake pin (PIN20), and expose cover, button, switch, and number entities to Home Assistant. The architecture is a typical ESPHome device: a single microcontroller (ESP32/ESP8266) running the ESPHome firmware, communicating with the desk controller via a 9600 baud UART serial link. The repo also contains archived Arduino and Raspberry Pi implementations, but the active development is focused on the ESPHome components. It is a well-structured IoT integration project with CI/CD, linting, and test compilation for multiple board variants.

RATING: 7.7/10 MAINT: active DRIFT: low
▸ 2 reusable components found
Juerd/ESP-WiFiSettings ★ 199 39 APPLICATION

This repository provides a WiFi configuration manager for ESP32 and ESP8266 microcontrollers using the Arduino framework. It enables devices to create a captive portal for WiFi setup, store credentials in the filesystem, and optionally define additional configuration parameters (strings, integers, booleans) via a simple API. The library operates as a singleton, handling WiFi connection attempts, portal management, and runtime language selection for the configuration interface. Key features include automatic password generation, support for OTA updates via the same credentials, and callback hooks for custom behavior during connection events. The architecture centers around the WiFiSettings class, which manages state through filesystem storage (SPIFFS for ESP32, LittleFS for ESP8266) and a dynamic parameter system. The configuration portal is implemented as a blocking web server with DNS redirect, serving a localized HTML form that saves user input to files. Language support is handled via a separate header using flash-stored strings and runtime selection, minimizing memory usage. The design prioritizes ease of use over advanced features, making it suitable for simple IoT devices requiring straightforward WiFi provisioning.

RATING: 7.7/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
xinnan-tech/xiaozhi-esp32-server ★ 10805 3678 APPLICATION

This is the server platform for the XiaoZhi (小智) ESP32 voice-assistant ecosystem: a large multi-component monorepo that turns low-cost ESP32 hardware into an AI voice assistant. The core is a Python asyncio service (main/xiaozhi-server) that maintains WebSocket connections with devices and runs a real-time audio pipeline — VAD, ASR, intent/LLM orchestration, tool calling, and TTS — streaming audio back to the device. Device onboarding, OTA firmware updates, and the WebSocket handshake are partly in the Python server and partly in a Java Spring Boot management API (main/manager-api) backed by MySQL + Redis, which exposes a broad admin surface: users, devices, agents, model-provider configuration (LLM/ASR/TTS/VAD/memory/intent), RAGFlow-backed knowledge bases, voice clone, voiceprint, chat history, and MCP tool management. Two management frontends exist (a Vue 2 web console and a uni-app/Vue 3 mobile app), plus a Live2D digital-human web client and an offline theme generator for firmware assets. It is an application, not a research repository — no notebooks, data pipelines, or analytical datasets; the 'data' features (RAG ingestion, voice cloning, chat-history reporting, performance testers) are all operational application features.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 6 reusable components found
luc-github/ESP3D ★ 1992 493 APPLICATION

ESP3D is a feature-rich embedded firmware for ESP8266/ESP32 microcontrollers, designed to serve as a Wi-Fi/Ethernet bridge and full-featured controller for 3D printers, CNCs, and similar equipment. The firmware provides a modular architecture with support for multiple network protocols (HTTP, WebDAV, FTP, Telnet, WebSocket, Bluetooth), a web-based user interface, file system management (SD card, flash filesystems like LittleFS/SPIFFS), sensor integration (DHT, BMP280), Lua scripting, and graphical displays via LVGL or TFT_eSPI. It includes a comprehensive command system (ESPxxx commands) for configuration and control, with authentication levels and persistent settings. The codebase demonstrates solid engineering for an embedded Arduino project, with clear separation of concerns between core services (serial, network, display, filesystem) and a message-passing inter-module communication pattern. It bundles many well-known third-party libraries (LVGL 8.2.0, TFT_eSPI 2.5.43, SdFat 2.2.3, EspLuaEngine, arduinoWebSockets) directly in the repository, ensuring reproducible builds but also creating a maintenance burden. The firmware is actively maintained with a responsive issue tracker and regular commits, though the reliance on pinned library versions and heavy conditional compilation introduces some technical drift.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
richonguzman/LoRa_APRS_iGate ★ 519 159 APPLICATION

This repository provides the firmware for a LoRa-based APRS iGate/digipeater station running on ESP32 microcontrollers. It bridges amateur radio APRS packets between LoRa RF and the internet (APRS-IS), and can also operate as a digipeater, TNC (KISS), weather station, and GPS tracker. The firmware includes a full web-based configuration UI, live map, MQTT integration, syslog, OTA updates, and support for dozens of hardware variants (Heltec, TTGO, etc.). The code is organized into modular C++ namespaces (LoRa_Utils, DIGI_Utils, APRS_IS_Utils, etc.) and uses a JSON-based configuration store. While the project is actively maintained, it shows some technical drift through vendored esptool binaries, dependency on older libraries (ElegantOTA), and heavy use of compile-time conditionals across board variants. The architecture is a classic embedded monolith targeting a single firmware binary, with strong hardware abstraction via pinout headers and a common configuration object. Several components—such as the KISS protocol encoder/decoder, the NetworkManager abstraction, and the Configuration class—are well-isolated and potentially reusable in other ESP32/ham radio projects.

RATING: 7.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
raomin/ESPAltherma ★ 502 174 APPLICATION

ESPAtherma is an embedded firmware application (PlatformIO/Arduino) for monitoring and basic control of Daikin Altherma heat pump systems via an ESP32 or ESP8266 microcontroller. In production, it connects to the heat pump's X10A serial port, queries specific register addresses (reverse-engineered Daikin I and S protocols), converts raw bytes into human-readable values using configurable label definitions, and publishes the data over MQTT to a Home Assistant instance. It also provides Home Assistant MQTT auto-discovery for seamless integration. The architecture is a single-threaded loop: setup reads model-specific definition files and MQTT/WiFi config, then repeatedly queries registers, converts data, and publishes to MQTT. Key entry points are `src/main.cpp`, `include/comm.h` (serial query), and `include/homeassistant.cpp` (discovery payload generation). External dependencies include PubSubClient, ArduinoJSON, and board-specific libraries (M5Unified for M5Stick). The project also includes reverse-engineering scripts, serial log dumps, and a heat pump emulator, making it a hybrid of embedded application and protocol research. However, the primary usage and codebase character are that of an IoT monitoring/control application.

RATING: 7.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
espressif/esp32-arduino-lib-builder ★ 205 222 APPLICATION

This repository is a build system for producing precompiled static libraries from ESP-IDF components, intended for use with the Arduino core for ESP32 microcontrollers. It orchestrates the entire build pipeline: cloning and updating ESP-IDF and Arduino core repositories, configuring IDF with target-specific settings (flash modes, memory variants, debug levels), compiling libraries for multiple ESP32 chip variants (esp32, esp32s2, esp32s3, esp32c3, etc.), and packaging the resulting artifacts into archives and Arduino package index JSON files. The system is driven by shell scripts (build.sh, tools/copy-libs.sh, etc.) with a CMake-based project structure, and includes a Textual-based TUI (tools/config_editor/) for interactive configuration and compilation. CI/CD workflows (GitHub Actions) automate periodic builds and deployment to the esp32-arduino-libs release repository. The codebase is well-organized, with clear separation of build logic, configuration files (configs/), and tooling (tools/). It demonstrates strong DevOps practices for managing multi-target embedded library builds.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 2 reusable components found
gysmo38/mitsubishi2MQTT ★ 501 160 APPLICATION

This repository provides firmware for ESP8266/ESP32 microcontrollers to interface Mitsubishi Heat Pumps (HVAC units) with MQTT and Home Assistant. The firmware runs on the ESP board, which connects to the heat pump's serial interface using the SwiCago/HeatPump library, and exposes a web interface for configuration and control, as well as MQTT topics for integration with smart home systems. It supports Home Assistant MQTT auto-discovery, Prometheus metrics, OTA firmware updates, and multi-language web UI. The architecture is a monolithic Arduino sketch with separate header files for configuration, HTML templates, JavaScript, and language strings. Key entry points are the setup() and loop() functions in mitsubishi2mqtt.ino, which initialize WiFi, MQTT, the heat pump connection, and a web server. Data flows: the ESP reads heat pump status via serial, publishes state to MQTT, subscribes to command topics, and serves a web control panel. External dependencies include the HeatPump library, ArduinoJson, PubSubClient, and the ESP8266/ESP32 Arduino core.

RATING: 7.3/10 MAINT: active DRIFT: low
▸ 2 reusable components found
richonguzman/LoRa_APRS_Tracker ★ 512 144 APPLICATION

The LoRa_APRS_Tracker is an embedded firmware application for ESP32-based hardware designed to function as an APRS (Automatic Packet Reporting System) tracker and transceiver. It integrates GPS tracking, LoRa radio communication, Bluetooth (Classic and BLE) for smartphone TNC connectivity, WiFi for wireless configuration, and support for various environmental sensors to telemetry data. The application features a menu-driven interface via OLED/TFT display and physical controls (buttons, joystick, touch, or keyboard), allowing users to configure beacon settings, view received packets, and manage messages. The architecture follows a modular utility pattern where distinct hardware and software components (e.g., GPS, LoRa, display, power management) are encapsulated in separate namespaced modules, each with setup and loop functions called from the main firmware loop. Configuration is managed through a hierarchical JSON-based system stored in SPIFFS, enabling persistent storage of user settings such as beacon profiles, LoRa parameters, and WiFi credentials. A built-in web server serves a responsive configuration portal (using Bootstrap) for initial setup and advanced settings via WiFi AP. Key capabilities include APRS beaconing with MIC-E encoding, two-way messaging, Winlink email integration over radio, digipeating, weather telemetry encoding, and power-saving features like GPS and LoRa module shutdown. The firmware supports numerous hardware variants through conditional compilation and variant-specific pin definitions, allowing the same codebase to compile for different ESP32 boards with various LoRa modules and sensors.

RATING: 6.9/10 MAINT: active DRIFT: low
▸ 1 reusable components found

This repository provides Arduino-based examples and setup instructions for the LilyGO T-Display S3 board (ESP32-S3 with ST7789 TFT display). It demonstrates core functionalities including TFT graphics rendering, button input handling, backlight control, and ESP-NOW wireless communication. The architecture consists of standalone Arduino sketches (.ino files) that share common configuration headers and resource files. Each example is self-contained and targets specific use cases: image display with progress bar (HotHead), backlight dimming (HotHead_DimmerNEW), simplified graphics (HotHead_2025), bidirectional button state sharing via ESP-NOW, and a basic serial test. The repository emphasizes hardware-specific configuration through header files that define display initialization, board settings, and embedded image resources.

RATING: 6.9/10 MAINT: active DRIFT: low
▸ 2 reusable components found
mocleiri/tensorflow-micropython-examples ★ 198 96 APPLICATION

This repository provides a custom MicroPython firmware that integrates TensorFlow Lite for Microcontrollers (TFLM), enabling TinyML inference on microcontrollers such as ESP32, RP2040, and STM32. It exposes a ‘microlite’ Python module with classes for loading TFLite models (interpreter, tensor) and an audio frontend for spectrogram extraction. The repo includes three pre-trained example applications: hello-world (sine regression), micro-speech (keyword spotting), and person detection (camera-based). The architecture is monolithic per board, built via CMake (ESP-IDF, RP2040 SDK) or Make (STM32). The build system and board definitions are deeply coupled to specific MicroPython and TFLM versions, and the code demonstrates careful memory management (custom GC heap allocators, arena buffer patterns) to run ML models on resource-constrained devices. While primarily a firmware/application project, it also contains pre-processed audio data and model files, giving it a slight hybrid nature. The codebase is functional and structured, but has several rough edges: duplicate model files, hardcoded source lists, and incomplete board support (STM32 noted as broken). It is actively maintained with CI workflows and recent commits, but technical drift is medium due to reliance on upstream main branches.

RATING: 6.8/10 MAINT: maintained DRIFT: medium
▸ 3 reusable components found
espressif/esp-drone ★ 2151 502 APPLICATION

This repository contains the ESP-Drone firmware, an open-source flight control system for quadcopters based on Espressif ESP32/ESP32-S2/ESP32-S3 microcontrollers. It is a port of the Bitcraze Crazyflie firmware (GPLv3) and is primarily designed for STEAM education. The system provides a complete drone control stack including sensor drivers (IMU, barometer, magnetometer, ToF range finders, optical flow), state estimation (complementary filter, extended Kalman filter), attitude/position controllers (PID, Mellinger, INDI), and communication via Wi-Fi (UDP, ESP-NOW) and CRTP protocol. It supports modular expansion 'decks' for additional hardware like flow sensors, thermal cameras, and localization systems (Lighthouse V1/V2, UWB TDoA). The firmware runs on FreeRTOS and uses ESP-IDF v5.0 as its development framework.

RATING: 6.7/10 MAINT: stale DRIFT: medium
▸ 5 reusable components found
Edzelf/ESP32Radio-V2 ★ 307 66 APPLICATION

Edzelf/ESP32Radio-V2 is an internet radio receiver firmware for the ESP32 microcontroller. It streams audio from Shoutcast/Icecast servers and plays local MP3 files from an SD card. The system supports both hardware (VS1053) and software (Helix MP3/AAC) audio decoding, with output via I2S DAC, internal DAC, or Toslink optical. It offers a web-based interface for station selection, volume control, and configuration, as well as MQTT, IR remote, and rotary encoder inputs. The firmware is built with PlatformIO and the Arduino framework, and it is designed to be highly configurable through compile-time defines in a central `config.h` file. Architecturally, the application is monolithic, with all main logic concentrated in a single `main.cpp` file. It uses multiple FreeRTOS tasks for networking (HTTP streaming), audio decoding/output, and SD card operations, communicating via FreeRTOS queues. A custom state machine handles HTTP streaming and metadata extraction. The system abstracts display hardware (various TFT, OLED, and LCD types) through a set of driver libraries with consistent interface macros, allowing the same firmware to be compiled for different display modules with minimal code changes. Audio decoders are also abstracted via macros, enabling compile-time selection between VS1053 and Helix software decoding. The codebase is actively maintained (last commit Feb 2026), but shows some signs of technical drift: it uses the deprecated SPIFFS filesystem, has version-guarded but older I2S API calls, and relies heavily on conditional compilation which complicates testing and maintenance. The library includes several well-crafted standalone components, such as the display drivers and hardware codec driver (VS1053), which can be reused in other ESP32 audio projects. The Helix MP3 and AAC decoders are large monolithic files with global state, limiting their reusability outside this specific project context.

RATING: 6.7/10 MAINT: maintained DRIFT: medium
▸ 2 reusable components found
espressif/esp32-wifi-lib ★ 204 76 APPLICATION

This repository distributes precompiled binary libraries (static archives) for the ESP32 series WiFi stack, used as a submodule within the Espressif IoT Development Framework (ESP-IDF). It contains no source code for the WiFi stack itself; instead, it provides archived .a files for various ESP32 variants (ESP32, ESP32-S2, ESP32-C3, etc.) and a set of shell scripts and CI configurations to manage library updates, fix symbol collisions (e.g., printf redefinition), and run build and feature tests. The repository acts as a binary release artifact, not a standalone application or library with reusable software components. Its primary purpose is to be checked out as a submodule in ESP-IDF to supply the low-level WiFi, mesh, and networking layers.

RATING: 6.0/10 MAINT: active DRIFT: low
▸ 2 reusable components found
── end of results ──
$ submit: