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.