- Introduction
- Features
- How to Build Your Own OpenPhoneCameraTrigger
- Version History
- Future improvement
- License
OpenPhoneCameraTrigger is a project designed to enable wireless control of camera trigger using an ESP32 based board. With this project, you can send volume control signals to trigger your phone camera's shutter remotely.

- Wireless phone camera trigger via Bluetooth.
- Compact and portable design.
- Easy to customize and extend functionality.
- Open-source code and 3D-printable enclosure.
Here is a list of components you'll need to build this project:
- ESP32-C3 Super Mini – Link
- Push button – Link
- 3.7V 300mAh 602030 LiPo Battery – Link
- TP4057 Battery Charger Board – Link
- Dupont cable or jumper wire
Other
- USB type-C cable to connect esp32 with pc
- PC or Laptop etc.. for coding and debugging
To build enclosure
- 3D-printed enclosure (stl files in stl)
- M2.5 OD4mm 5mm long Threaded insert * 2 Link
- M2.5 6mm long bolt Link
Follow these steps to set up your development environment:
- Install Arduino IDE (Tested on version 2.3.3)
- Add the ESP32 board package to the IDE (Tested on version 3.1.0-RC3)
- Go to Tools > Board > Boards Manager or Ctrl+Shift+B
- Serch 'esp32'
- Install 'esp32 by Espressif Systems'
- Connect ESP32 to PC and select proper COM port
- Connect ESP32 Super Mini board to PC using USB Type-C cable (make sure that the USB cable supports data transmission)
- Go to Tools > Port and select proper COM port that ESP32 is connected at
- Select ESP32 SuperMini board
- Go to Tools > Board > esp32
- Select 'Nologo ESP32C3 Super Mini' (Selecting 'ESP32C3 Dev Module wont work!)
- Clone this repository or download the project files.
- Open the
OpenPhoneCameraTrigger.inofile in your IDE. - Compile and upload the code.
- Monitor the Serial Output to verify functionality.
Tip
Print the enclosure first and then measure the required length for each wire. Otherwise, the enclosure might not fit
Below is the connection diagram for the project:
Caution
While handling batteries, always solder in a well-ventilated area, wear protective gear, and handle components with care to avoid burns or shorts. Use the correct temperature and soldering techniques, and never leave the iron unattended. When handling batteries, avoid short circuits, punctures, or heat exposure. Store and dispose of batteries properly, and always use the correct charger for safe operation
-
Print the provided
.stlfiles using a 3D printer. -
Assemble top and bottom parts. Be careful not to get any wire stuck between two parts.
| Version | Release Date | Change Log |
|---|---|---|
| 1.0.0 | 2024-12-02 | Initial release. |
| Version | Release Date | Change Log |
|---|---|---|
| 1.0.0 | 2024-12-02 | Initial release. |
| 1.0.1 | 2024-12-20 | Design improvement considering part step difference |
- 일정 시간 이상 input 이 없을 경우 idle 상태(deep sleep mode) 전환으로 배터리 사용시간 개선 -> ESP32C3는 Deep-sleep mode 미지원 -> ESP32S3로 시도, Android폰에서 deep sleep이후 인식장애 발생(deep-sleep 으로 인한 BTLE연결정보 손실로 원인 추정) -> RTC메모리 사용하여 연결정보 보존
- 전원 인가시 무조건 BLE advertizing가 아닌 버튼이 꾹 눌리면 페어링모드 (advertizing mode)로 진입하는 것으로 개선 (BLE advertizing은 배터리 소모 높음 → 배터리시간 개선, 전원 인가시 무조건 advertizing mode로 진입하는 것이 아닌 사용자 조작을 통해 사용자의 통제 범위 증가)
- 더 비싼 배터리 충전 / 방전 보드로 idle 상태에서 발생하는 battery drain 양 최소화 혹은 배터리와 배터리 충전 / 방전 보드 사이에 스위치 추가하여 수동으로 키고 끌 수 있게 개선
- 버튼이 눌린 시간 측정하여 버튼 꾹 누르면 영상촬영(각 휴대폰의 음량버튼 꾹 누름 설정) 기능 추가
- 적절한 저항과 납땜장비가 없어 충전보드의 충전전류가 배터리 용량에 비해 과도하게 높은 점 개선
- 충전 LED 정보 외부로 나타나게 개선
The code for this project is licensed under the GNU AGPL v3.0.
The 3D enclosure files are licensed under CC BY-NC-SA 4.0.
For more details, see the LICENSE file under each directory or visit GNU AGPL v3.0 License, CC BY-NC-SA 4.0.
