{"id":21482375,"url":"https://github.com/scottgibb/led-strip-controller-firmware","last_synced_at":"2026-05-04T12:32:17.907Z","repository":{"id":143481216,"uuid":"538596443","full_name":"ScottGibb/LED-Strip-Controller-Firmware","owner":"ScottGibb","description":"An Arduino based LED Controller using Node-Red and Alexa","archived":false,"fork":false,"pushed_at":"2025-04-18T22:02:09.000Z","size":37291,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T08:35:54.004Z","etag":null,"topics":["alexa","arduino","c","diy","firmware","hardware","internet-of-things","iot","node-red","stm32","stm32duino","stm32f103"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ScottGibb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-19T16:33:32.000Z","updated_at":"2024-01-12T18:38:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"dbc4b55d-fae7-4275-bb5e-b1f996976cce","html_url":"https://github.com/ScottGibb/LED-Strip-Controller-Firmware","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ScottGibb/LED-Strip-Controller-Firmware","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottGibb%2FLED-Strip-Controller-Firmware","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottGibb%2FLED-Strip-Controller-Firmware/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottGibb%2FLED-Strip-Controller-Firmware/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottGibb%2FLED-Strip-Controller-Firmware/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ScottGibb","download_url":"https://codeload.github.com/ScottGibb/LED-Strip-Controller-Firmware/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottGibb%2FLED-Strip-Controller-Firmware/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261601514,"owners_count":23183095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alexa","arduino","c","diy","firmware","hardware","internet-of-things","iot","node-red","stm32","stm32duino","stm32f103"],"created_at":"2024-11-23T12:32:51.443Z","updated_at":"2026-05-04T12:32:17.874Z","avatar_url":"https://github.com/ScottGibb.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LED Strip Controller Firmware\r\n\r\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Static Analysis](https://github.com/ScottGibb/LED-Strip-Controller-Firmware/actions/workflows/Static%20Analysis.yaml/badge.svg)](https://github.com/ScottGibb/LED-Strip-Controller-Firmware/actions/workflows/Static%20Analysis.yaml) [![PlatformIO Build](https://github.com/ScottGibb/LED-Strip-Controller-Firmware/actions/workflows/Build.yaml/badge.svg?branch=main)](https://github.com/ScottGibb/LED-Strip-Controller-Firmware/actions/workflows/Build.yaml)\r\n\r\n\u003ccenter\u003e\r\n\u003cimg src=\"docs/Languages-And-Tools.png\"\u003e\r\n\u003c/center\u003e\r\n\r\n## Summary\r\n\r\nThis repository contains all the firmware to control the LED Strip Controller Hardware variations. The firmware is written in C++ using the Arduino framework, originally I wanted to use the STM32 HAL Drivers, however, the STM32 Microcontrollers were cloned and this resulted in the Arduino framework being used. The firmware is designed to be as flexible as possible, whilst maintaining an easy-to-use interface. The firmware is designed to be used with the LED Strip Controller Software Applications that are described below. The firmware is designed to be used with different microcontrollers.\r\n\r\n## System Architecture\r\n\r\nAs for the system architecture it's designed to be interacted with via a byte stream sent over an interface. At present there is a UART interface over USB. However, there are plans to utilize an IP interface over WiFi. The byte stream is then parsed by the firmware and the appropriate action is taken. The firmware is designed to be as flexible as possible, whilst maintaining an easy-to-use interface. The firmware is designed to be used with the LED Strip Controller Software Applications. The architecture of the full system is shown below:\r\n\r\n## Project Structure\r\n\r\nThis Project uses the PlatformIO Build system and as such adheres to their build structure and folder structure, the project is split into multiple folders outlined as follows:\r\n\r\n```shell\r\n├───docs\r\n├───include\r\n├───lib\r\n│   ├───Board Configurations\r\n│   ├───Buttons\r\n│   ├───Communications\r\n│   ├───Communicators\r\n│   ├───Light Drivers\r\n│   ├───Light Handlers\r\n│   ├───Memory Management\r\n│   ├───Misc Peripherals\r\n│   ├───System Configuration\r\n│   ├───System State Management\r\n│   └───User Mode Handlers\r\n├───src\r\n└───test\r\n```\r\n\r\n- docs: holds all diagrams and pictures related to the project\r\n- include: Holds the main header file responsible for the high-level aspects of the project\r\n- lib: contains all private libraries for the project.\r\n- src: contains the main application source code\r\n- test: contains all of the unit tests for the project.\r\n\r\n\u003ccenter\u003e\r\n\r\n![System Architecture](docs/High_Level_System_Diagram.png)\r\n\r\n\u003c/center\u003e\r\n\r\n## Firmware Design\r\n\r\nThe firmware is designed to utilize modern C++ principles and be fully object orientated. This was done to allow me to utilize the full power of the C++ language and also allow me to learn new features regarding the language. The class diagram for the firmware is shown below:\r\n\r\n\u003ccenter\u003e\r\n\u003cimg src = \"docs/Diagrams-Firmware Class Diagram.png\"\u003e\r\n\u003c/center\u003e\r\n\r\nThe firmware is split into multiple layers which follow this layer convention:\r\n\r\n\u003ccenter\u003e\r\n\u003cimg src = \"docs/Diagrams-Firmware Abstraction Layers.png\"\u003e\r\n\u003c/center\u003e\r\n\r\nThe idea behind this is that the Arduino layer is abstracted away from the rest of the firmware. This allows the firmware logic to be used across multiple platforms and prevents it from being tied into the Arduino framework.\r\n\r\n## Memory Map\r\n\r\nThe system does require some onboard memory to utilize the User Mode system. This allows the user to create custom colour waveforms and thus create custom effects. The memory map for the STM32F103C8T6 microcontroller is shown below:\r\n\r\n\u003ccenter\u003e\r\n\u003cimg src = \"docs/Memory Map.png\"\u003e\r\n\u003c/center\u003e\r\n\r\n## Building the Project\r\n\r\nThis project uses the PlatformIO Build system and as such can be built using the PlatformIO IDE or the PlatformIO CLI. For this simply clone this repository and open the folder using the PlatformIO plugin in VSCode. The IDE should then flag and install all the dependencies based on the platform.ini file.\r\n\r\n- [PlatformIO](https://platformio.org/)\r\n- [Visual Studio Code](https://code.visualstudio.com/)\r\n- [PlatformIO Plugin for VSCode](https://marketplace.visualstudio.com/items?itemName=platformio.platformio-ide)\r\n\r\n## LED Strip Controller Repository Links\r\n\r\n- [Manifest](https://github.com/ScottGibb/LED-Strip-Controller-Manifest) This repository contains the manifest file for the LED Strip Controller project. Which allows the cloning of all the repositories in one go.\r\n- [Hardware](https://github.com/ScottGibb/LED-Strip-Controller-Hardware) This repository contains the hardware design files for the LED Strip Controller project.\r\n- [Firmware](https://github.com/ScottGibb/LED-Strip-Controller-Firmware) This repository contains the firmware for the LED Strip Controller project.\r\n- [Software](https://github.com/ScottGibb/LED-Strip-Controller-Software) This repository contains the software for the LED Strip Controller project.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottgibb%2Fled-strip-controller-firmware","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscottgibb%2Fled-strip-controller-firmware","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottgibb%2Fled-strip-controller-firmware/lists"}