This project transforms your regular projector into a smart home device, enabling voice control and automation through Apple's HomeKit ecosystem.
An ESP32-based device that can control projectors via infrared signals and integrates with Apple HomeKit. It allows you to control your projector using Siri voice commands, the Home app, or enable your projector to be added to scenes like "Movie time" or "Bed Time".
- Custom PCB: Professional-grade circuit board with built-in IR LED
- IR Remote Control: Sends NEC protocol IR commands to your projector
- 3D Printed Case: Custom enclosure with laser-cut acrylic top
- Power Management: Handles projector power on/off with automatic warm-up delays
- HomeKit Integration: Control your projector with Siri voice commands
- Smart Home Scenes: Integrate with other HomeKit devices for automated experiences
Breadboard prototype showing initial testing setup
3D rendering of the PCB design
Empty from top view (left), empty from bottom view (middle), partly assembled with external IR LED for testing (right)
3D rendering of the case design
Fully assembled device in its custom case
smart-projector-remote/
├── board/ # PCB design files
│ ├── bom/ # Bill of Materials
│ ├── fab/ # Manufacturing files
│ ├── libs/ # Custom component libraries
│ └── src/ # KiCad source files
├── case/ # 3D case design files
├── firmware/ # ESP32 firmware
│ ├── src/ # Source code
│ └── platformio.ini # PlatformIO configuration
├── images/ # Project photos
└── README.md # This file
- ESP32-WROOM-32E - Main microcontroller
- SFH 4045N - IR LED for sending commands
- BD33IC0MEFJ-CE2 - 3.3V voltage regulator
- CP2102N-A01-GQFN24 - USB-to-UART bridge for programming and communication
- USB-C connector - Power and programming interface
- Custom PCB - Designed in KiCad
Note: A complete list of all components can be found in
board/bom/smart-projector-remote-bom.csv
- Manufacturing files can be found in
board/fab/1.0.0/ - Use the stencil for accurate component placement
- Follow the BOM in
board/bom/smart-projector-remote-bom.csv - Solder components using reflow oven, hot air station, or hand soldering with fine tip iron
- Bottom: 3D printed with threaded inserts and rubber feet
- Top: Laser-cut acrylic
- Assembly: 4 screws hold everything together
- Design: Created in OnShape
- 3D print the bottom case from
case/case-bottom.step - Install threaded inserts in the bottom case
- Add rubber feet to the bottom case
- Laser cut the acrylic top from
case/case-top.dxf - Drill countersink holes in the acrylic top as shown in the drawing
case/case-top-drawing.pdf - Assemble: bottom case, PCB upside down, acrylic top, then secure with 4 screws
- Platform: PlatformIO with Arduino framework
- HomeKit Integration: HomeSpan library
- IR Communication: IRremote library
- Target Board: ESP32 Feather
- VSCode with PlatformIO extension
- KiCad (for PCB modifications)
- OnShape or any other 3D CAD software (for case modifications)
- 3D printer and laser cutter (for case fabrication)
- Clone this repository
- Open the
firmware/folder in PlatformIO - Build and upload to your ESP32:
pio run --target upload
The firmware includes pre-configured NEC IR codes for a TOPTRO X1 projector:
- Power on/off
- Navigation (up, down, left, right, OK, back)
- Source switching
Note: Current firmware only uses power on/off, source switching, and OK commands. Other commands are included for future functionality.
- After uploading the firmware, power cycle the device
- Open the serial monitor:
pio run -t monitor
- The device will start and show
*** WIFI CREDENTIALS DATA NOT FOUND. YOU MAY CONFIGURE BY TYPING 'W <RETURN>'. - Type
Wand press Enter to enter WiFi configuration mode - The device will scan for available networks and display a numbered list
- Type the number corresponding to your WiFi network and press Enter
- Enter your WiFi password when prompted
- The device will connect to your network and show
WiFi Connected!with IP address - The device will start the HAP server and show
DEVICE NOT YET PAIRED -- PLEASE PAIR WITH HOMEKIT APP
- Open the Home app on your iPhone/iPad
- Tap the "+" button to add a new accessory
- Select "Add Accessory" → "More options..."
- Look for "HomeSpan Television" in the list
- Enter the pairing code:
4663-7726(standard HomeSpan code) - The projector will appear as a "Television" device
Note: Currently only power on (with auto switching to HDMI 1) and power off functionality is supported.
Note: The project is configured for a TOPTRO X1 projector.
The firmware can be easily adapted for other projectors by updating the IR command codes:
- Measure IR commands from your projector's remote
- Update the command constants in
firmware/src/main.cpp - Adjust warm-up timing if needed
- "Hey Siri, turn on the Projector"
- "Hey Siri, turn off the Projector"
Create scenes like "Movie Time":
- Turn on Projector
- Adjust lighting in living room:
- Turn off Lamp 1
- Set Lamp 2 to warm white at 10% brightness
Or "Bed Time":
- Turn off Projector
- Turn off Lamp 1 and Lamp 2
This project is licensed under the MIT License - see the LICENSE file for details.
- KiCad - PCB design software
- OnShape - 3D CAD design software
- HomeSpan - HomeKit integration library
- IRremote - IR communication library
- PlatformIO - Embedded development platform
Bence Háromi - 2025