
Relatively Universal ROM Programmer
AndersBNielsen/Relatively-Universal-ROM-Programmer
Hardware to program W27C512 EEPROM or any 24/28/32 pin ROM requiring from 5V to 27V programming voltage.

Ikea Desk Automation
Schmatics desk automation is an open-source printed circuit board by aperico, from the aperico/deskautomation repository on GitHub. It is a 2-layer board of 122.5 × 110 mm with 15 parts on 46 nets.
It is built around the ARDUINO UNO R3. Its parts include 4 switches, 3 diodes, 1 connector and 1 inductor. It belongs with the AVR (ATmega, ATtiny) boards of this library.
The fastest way to build and test the project:
# Complete pipeline: build + dual motor validation + static analysis
python toolchain/run-pipeline.py all
# Build only
python toolchain/run-pipeline.py clean-build
# Run tests (validates both MT_BASIC and MT_ROBUST motor types)
python toolchain/run-pipeline.py test
# Quick unit test during development
python toolchain/run-pipeline.py unit
# Get help
python toolchain/run-pipeline.py help📖 Detailed Instructions:
The Automated Mechanical Desk Lift System is a motorized solution for height-adjustable desks, enabling users to easily switch between sitting and standing positions. The system features responsive controls, safety mechanisms to prevent accidents, and reliable operation over the product lifetime. Key features include:
The system supports two motor driver configurations, selectable at compile-time:
| Driver | Model | Cost | Capacity | Use Case |
|---|---|---|---|---|
| MT_BASIC | L298N Dual H-Bridge | Low (~$2-5) | Standard (~50kg) | Cost-optimized office desks |
| MT_ROBUST | IBT_2 Intelligent Driver | Moderate (~$10-15) | High (~100kg+) | Heavy-duty commercial desks |
Both drivers share the same software (unified HAL interface) and provide equivalent safety and functionality. See Motor Driver Configuration Guide for build and switching instructions.
The system implements a robust motor configuration encapsulation pattern to support multiple motor driver types:
src/motor_config.cpp with validationMotorConfig_getMotorType() function provides the sole accessor for motor configuration| File | Role | Details |
|---|---|---|
src/motor_config.h | Public interface | Type definitions, feature documentation, function declaration |
src/motor_config.cpp | Private implementation | MOTOR_TYPE macro, validation, getter function, NVM migration comments |
# Default: MT_BASIC (L298N)
cmake -S . -B build && cmake --build build
# To use MT_ROBUST (IBT_2): Edit src/motor_config.cpp line 44
# #define MOTOR_TYPE MT_BASIC <- Change to MT_ROBUST
# Then rebuild:
cmake --build buildAll 37 unit and integration tests validate both motor configurations:
Tests can be run against either driver by changing the MOTOR_TYPE definition. See 05_SoftwareArchitecture.md (AD-009: Motor Configuration Encapsulation) and 06_00_DetailedDesign.md (Motor Configuration Module) for detailed technical documentation.
| Document | Description |
|---|---|
| toolchain/coding_guides_and_checks.md | ⚠️ Coding standards for safety-critical code (NASA Power of Ten, MISRA C:2012, ISO 25119) |
| toolchain/README.md | Development pipeline and automated testing guide |
| toolchain/ARCHITECTURE.md | Pipeline architecture and design details |
| Document | Description |
|---|---|
| 01_MissionStatement.md | Project mission and overall purpose |
| 01_SystemObjectives.md | High-level system objectives and goals |
| 02_ConceptOfOperations.md | Operational concept and use cases |
| 02_01_HARA-prep.md | HARA preparation (draft) |
| 02_02_HARA-complete.md | Hazard analysis and risk assessment (HARA) |
| 02_03_SafetyGoals.md | Safety goals derived from HARA |
| 03_00_SystemRequirements.md | System-level requirements specification |
| 03_01_SystemArchitecture.md | System architecture and interfaces |
| 03_01_01_TechnicalSafetyConcept.md | Technical safety concept |
| 03_02_RequirementsTraceabilityMatrix.md | Requirements traceability matrix |
| 04_SoftwareRequirements.md | Software requirements and functional specifications |
| 04_01_SoftwareVerificationSpecification.md | Software test specifications and verification methods |
| 05_SoftwareArchitecture.md | Software architecture design and component structure |
| 06_00_DetailedDesign.md | Detailed software design and implementation details |
| 06_01_DetailedDesign_InteractionDiagrams.md | Sequence diagrams and data flow visualizations |
| 07_MotorDriverConfiguration.md | Motor driver configuration guide (L298N vs IBT_2) |
| 10_SystemTestSpecification.md | System test plan and test specifications |
| 10_01_SystemTestReport.md | System test report and results |
| 11_HardwareDocumentation.md | Hardware components and wiring documentation |
| 02_ConceptOfOperations_Reviews.md | ConOps review protocol and records |
| 03_00_SystemRequirements_Reviews.md | System requirements review protocol and records |
| 03_01_01_TechnicalSafetyConcept_Reviews.md | Technical safety concept review protocol and records |
| 03_01_SystemArchitecture_Reviews.md | System architecture review protocol and records |
| 04_SoftwareRequirements_Reviews.md | Software requirements review protocol and records |
| 05_SoftwareArchitecture_Reviews.md | Software architecture review protocol and records |
| 06_DetailedDesign_Reviews.md | Detailed design review protocol and records |
| 10_SystemTestSpecification_Reviews.md | System test specification review protocol and records |
| feature-pdrs/ | System feature concept reviews |
| File/Directory | Description |
|---|---|
CMakeLists.txt | CMake build configuration file |
CMakePresets.json | CMake preset configurations |
README.md | Project overview and instructions (this file) |
.github/ | GitHub workflows and CI/CD configuration |
src/)| File | Description |
|---|---|
desk_app.cpp/h | Main application logic and state machine |
desk_types.h | Type definitions and data structures |
hal.cpp/h | Hardware Abstraction Layer (HAL) interface |
motor_config.h | Motor driver type configuration (MT_BASIC or MT_ROBUST) |
motor_controller.cpp/h | Motor control logic and algorithms |
pin_config.h | Arduino pin assignments (configurable per motor type) |
src.ino | Arduino firmware entry point |
tests/)| File | Description |
|---|---|
UnitTests.cpp | Unit tests for individual functions and classes |
ComponentTests.cpp | Component-level integration tests |
IntegrationTests.cpp | Full system integration tests |
hal_mock/ | Mock implementations of HAL for testing on host |
└── HALMock.cpp/h | Mock HAL implementation |
└── SerialMock.cpp/h | Mock Serial communication for testing |
00_training_context/)| File | Description |
|---|---|
00_agenda.md | Training overview and agenda |
01_hello-world.md | Getting started guide |
02_aisetup.md | AI/Copilot setup instructions |
03_prompting-techniques.md | AI prompting best practices |
04_00_deskautomation-syseng.md | Systems engineering overview |
04_01_00_system-definition.md | System definition guide |
04_01_01_system-definition-architecture.md | Architecture definition guide |
04_02_software-construction.md | Software construction practices |
04_03_00_component-verification.md | Component testing guide |
04_03_01_software_integration-verification.md | Integration testing guide |
04_03_03_system-testing.md | System testing guide |
05_traceability-matrix.md | Requirements traceability |
06_workflow-pipelines.md | CI/CD pipeline documentation |
07_process-assessment.md | Process quality assessment |
schematics/)| Directory | Description |
|---|---|
schmatics_desk_automation/ | KiCad project files for desk automation |
└── DeskAutomation_MotorControl/ | Motor control circuit schematics |
└── DeskAutomation.pretty/ | Custom KiCad footprints |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 330 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_Vertical | R_LED_DOWN1, R_LED_ERROR_1, R_LED_UP1, R4, R5 |
| 1 | Arduino_UNO_R3 | Module:Arduino_UNO_R3 | A1 |
| 1 | BT_DOWN | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW3 |
| 1 | BT_UP | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW1 |
| 1 | Conn_01x15_MountingPin | Connector_PinHeader_1.27mm:PinHeader_2x08_P1.27mm_Vertical | J2 |
| 1 | ERROR_LED | LED_THT:LED_D5.0mm | D3 |
| 1 | L298N_Interface | DeskAutomation:L298N Interface | L298N-Breakout1 |
| 1 | LED UP | LED_THT:LED_D5.0mm | D2 |
| 1 | LED_DOWN | LED_THT:LED_D5.0mm | D1 |
| 1 | Lower Limit | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW2 |
| 1 | Uppr Limit | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW4 |
It measures 122.5 × 110 mm and has 2 copper layers, 1.6 mm thick.
15 parts, built around the ARDUINO UNO R3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the aperico/deskautomation repository on GitHub, at the commit this page was made from: the board is schematics/schmatics_desk_automation/schmatics_desk_automation.kicad_pcb and its schematic schematics/schmatics_desk_automation/DeskAutomation_MotorControl/motor_controls.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask aperico before reusing the design.

AndersBNielsen/Relatively-Universal-ROM-Programmer
Hardware to program W27C512 EEPROM or any 24/28/32 pin ROM requiring from 5V to 27V programming voltage.

AlanFord/self-balancing-stick
Dual Axis Reaction Wheel Inverted Pendulum

Edging-Machines/Edging-Machines
This repository is intended to contain as much information as possible about building, designing, prototyping, and using automated edging machines.

PedroCNeves/AC_ChargingStation
A learning project to create an EV AC Charging station based on an Arduino Uno

jonsag/arduTester
An arduino component tester based on https://create.arduino.cc/projecthub/plouc68000/ardutester-v1-13-the-arduino-uno-transistor-tester-dbafb4


ICRS/101
The all-new open source Robotics 101 course from ICRS. It's specifically designed to be run in hackspaces, after school clubs and university societies.
