This project features a low-power, compact keypad module based on the STM32L010K4T6 MCU, designed to function as a mini keyboard for embedded systems. The board includes twelve tactile buttons, with the STM32 MCU handling debouncing and key scanning, then transmitting keypress data to a host MCU via I2C or UART.
This design optimizes processing efficiency on the host system by offloading keypad management to the STM32L010K4T6, making it ideal for applications requiring reliable user input with minimal power consumption.
✅ STM32L010K4T6 MCU – Ultra-low-power ARM Cortex-M0+ processor
✅ 12-Button Keypad – Efficient, responsive user input
✅ I2C & UART Communication – Flexible interfacing with host MCUs
✅ Debouncing & Key Scanning – Handled in firmware for accurate input detection
✅ Low Power Mode – Automatic sleep mode when idle to conserve energy
- Embedded Systems – User interface for microcontroller-based projects
- IoT Devices – Low-power control panel for smart devices
- Industrial Automation – Secure keypad entry for control units
- STM32L010K4T6 Keypad Board
- Host MCU (STM32, ESP32, Raspberry Pi, etc.)
- Power Supply (3.3V)
- USB-to-Serial Debugging Tools
- STM32CubeIDE – Firmware development
- I2C/UART Libraries – Communication with the host MCU
- ST-Link or J-Link – Debugging and flashing tools
- Power the Board – Provide 3.3V supply to the MCU.
- Connect to Host MCU – Use I2C or UART for communication.
- Flash Firmware – Load key scanning and communication code.
- Receive Key Data – Host MCU processes key events for input handling.
/Firmware - STM32 firmware source code /Core - Main application files /Drivers - HAL and LL peripheral drivers /Keypad - Debouncing and key scanning logic /Utils - Utility functions and helper libraries
/Hardware - PCB schematics and design files /Schematic - Circuit diagrams (PDF, KiCad, Altium, etc.) /PCB - Board layout files (Gerber, BOM, assembly files)
/Docs - Technical documentation and references /Getting_Started - Setup guides, connection diagrams /Datasheets - Component datasheets /Application_Notes - Project use cases and performance analysis
/Examples - Sample projects demonstrating board usage /I2C_Host - Example of interfacing via I2C /UART_Host - Example of interfacing via UART
/Tools - Development tools and scripts /Flashing_Scripts - Python scripts for automated flashing /Debug_Scripts - Debugging utilities for logging
- 🔹 Configurable Key Mapping – Customize key assignments via firmware
- 🔹 Multi-Press Support – Enable simultaneous key detection
- 🔹 Low-Power Optimization – Further reduce power consumption for battery-based applications
This project is open-source under the MIT License.