A ESP8266-based web app and server that uses the Canon CCAPI to trigger a series of exposures over Wi-Fi.
This project uses Canon's Camera Control API (CCAPI), which enables Wi-Fi control of the camera. However, only certain cameras are supported and the CCAPI needs to be "activated" on a per-camera basis. It would be nice if cameras included CCAPI functionality by default, but unfortunately we have to jump through some hoops just to enable it.
Supported cameras as of 2024-01-15: PowerShot V10, EOS R100, EOS R8, EOS R50, EOS R6 Mark II, EOS R7, EOS R10, EOS R3, EOS M50 Mark II, EOS R5, EOS R6, EOS 850D, EOS-1D X Mark III, EOS M200, EOS 90D, EOS M6 Mark II, PowerShot G5 X Mark II, PowerShot G7 X Mark III, EOS 250D, EOS RP, PowerShot SX70 HS
See this article for more details. Some cameras require firmware updates to use all features.
(Based on this article)
SDK | API | DOWNLOADS button at the top left.EOS & POWERSHOT CAMERAS.CCAPI ACTIVATION TOOL tab. It may be hidden beneath the MORE tab on the right.My answers for the CCAPI access request form
CCAPI ACTIVATION TOOL tab.CCAPI Getting Started/Operations PDF for detailed instructions on using the tool.This project uses PlatformIO for dependency management, building, and uploading. To build this project, install PlatformIO in your IDE of choice, then open the intervalometer folder (which is a PlatformIO project folder) in a clone of this repo. Assuming you have a compatible board and it's connected properly, all you should have to do is run the upload command in PlatformIO.
The project was developed and tested using a generic WeMos D1 mini clone, but any ESP8266 dev board that supports the Arduino core should work fine.
By default, the ESP will create a Wi-Fi network with the SSID ESP8266_AP and the password defgecd7 while powered. These are configurable in intervalometer/src/server.cpp. The board's IP address is 192.168.4.1.
ESP8266_AP and password is defgecd7 by default). You device may warn you that there's no internet connection and ask if it should stay connected; if so just affirm the connection.192.168.4.1. You should see the ESP8266 Intervalometer interface.Note: These instructions are written for the Canon EOS M200, but other camera models may be different.
Canon Control API (click below to see what it looks like on my camera).Pictures showing navigation to Wi-Fi settings menu on Canon M200
![]()
Canon Control API option, make sure your camera is compatible and you have followed the CCAPI activation instructions above.Camera Control API, select Add connection, then select Add with wizard.ESP8266_AP by default) should show up on the list. Select it, and then enter and confirm the password (defgecd7 by default).Pictures showing network selection and password screens
![]()
192.168.4.7 is the most convenient, since that value is the default value that is pre-populated on the website.Pictures showing manual IP address setting
![]()
Waiting to connect, with the URL of the CCAPI endpoint.Connect camera section of the ESP8266 Intervalometer interface on your other connected device (see above). Enter the IP address shown on the camera. For example, if the camera shows http://192.168.4.7:8080/ccapi, only enter 192.168.4.7. Then, press the Connect button.Settings complete, then give the option to disconnect, which means the connection has been saved.Connect in the main Camera Control API screen and selecting the network name.Once the camera has been connected for the first time, the intervalometer setup is as follows:
Connect camera section of the interface. If successful, the Intervalometer section should appear.Status section at the top.