A powerful desktop application for capturing, managing, and cloning infrared remote control signals. Built with Python and Arduino, this tool allows you to digitize your physical remote controls and recreate them with ease.
- 📥 IR Signal Capture: Record infrared signals from any remote control using Arduino
- 💾 Database Management: Store and organize your remote controls in a local SQLite database
- 🔄 Format Conversion: Convert between multiple IR formats (RAW, NEC, RC5, Pronto Hex, LIRC)
- 📤 Export Options: Export signals in JSON, LIRC, and Pronto Hex formats
- 🌐 LIRC Integration: Download remote configurations from the LIRC database
- 🔨 Batch Operations: Process multiple remotes and signals efficiently
- 🖥️ User-Friendly GUI: Intuitive PyQt6-based interface
- Arduino Board (Uno, Nano, Mega, or compatible)
- IR Receiver Module (e.g., TSOP38238, VS1838B)
- IR LED (for signal transmission)
- Resistors and basic components (see hardware setup guide)
- Python 3.8 or higher
- Arduino IDE (for uploading firmware)
- USB cable for Arduino connection
- Upload the Arduino sketch from
arduino/ir_universal_cloner/to your Arduino board - Connect the IR receiver and LED according to the wiring diagram in docs/SETUP.md
- Connect Arduino to your computer via USB
# Clone the repository
git clone https://github.com/yourusername/ir-remote-cloner.git
cd ir-remote-cloner
# Install Python dependencies
cd python_app
pip install -r requirements.txt
# Run the application
python main.pyFor detailed setup instructions, see QUICKSTART.md
- Quick Start Guide - Get up and running in minutes
- Setup Guide - Detailed hardware and software setup
- User Guide - Complete feature walkthrough
- Protocols - Supported IR protocols and formats
- Troubleshooting - Common issues and solutions
ir-remote-cloner/
├── arduino/ # Arduino firmware
│ └── ir_universal_cloner/ # Main Arduino sketch
├── python_app/ # Python application
│ ├── core/ # Core functionality
│ ├── gui/ # PyQt6 GUI
│ ├── models/ # Data models
│ ├── utils/ # Utilities
│ └── main.py # Application entry point
├── data/ # Runtime data
│ ├── database/ # SQLite database
│ ├── exports/ # Exported files
│ ├── lirc_cache/ # LIRC download cache
│ └── logs/ # Application logs
├── docs/ # Documentation
└── tests/ # Unit tests
- Launch the application
- Select your Arduino port from the dropdown
- Click "Connect to Arduino"
- Click "Capture Signal" and press a button on your remote
- Name and save the signal to your database
- Select a remote from your database
- Choose export format (JSON, LIRC, or Pronto)
- Click "Export" and select destination
- Go to "LIRC Download" tab
- Search for your device manufacturer/model
- Download and import to your database
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
- LIRC Project - For the comprehensive IR remote database
- IRremote Library - Arduino IR library inspiration
- All contributors and users of this project
Found a bug? Please open an issue on GitHub with:
- Description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Your hardware/software setup
For questions and support, please open an issue on GitHub.
Made with ❤️ for the maker community