Check back soon for more detailed insight on this project’s inspiration, process, and lessons! For now, here’s information from the GitHub repo
GitHubGitHub - evoth/esp-intervalometer: A ESP8266-based web app and server that uses the...A ESP8266-based web app and server that uses the Canon CCAPI to trigger a series of exposures over Wi-Fi. -...
:
Features
- Simple design for easy operation on mobile devices, made with Svelte
- Dark and light modes for use in both nighttime and harsh daylight
- Ability to specify ESP8266 and camera IP addresses (not hard-coded)
- Realtime status updates across multiple devices using WebSockets
- Support for custom bulb exposures of any length
- Detailed error messages for easy diagnosis of issues
Screenshots
Installation
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.
Canon camera compatibility
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 developers.canon-europe.comdevelopers for more details. Some cameras require firmware updates to use all features.
CCAPI activation
(Based on this article developercommunity.usa.canon.comCanon Developer Community)
- Register for an account on the Canon Developer Community developercommunity.usa.canon.comCanon Developer Community website.
- Click on the
SDK | API | DOWNLOADS
button at the top left. - Click
EOS & POWERSHOT CAMERAS
. - Navigate to the
CCAPI ACTIVATION TOOL
tab. It may be hidden beneath theMORE
tab on the right. - Fill out the access request form. Below you can see my answers for the form, but I don’t think the accuracy of the information matters too much.
My answers for the CCAPI access request form
- You may need to wait for the form to process and refresh the page.
- Navigate back to the
CCAPI ACTIVATION TOOL
tab. - Download the right version for your operating system (unfortunately there doesn’t seem to be a Linux version).
- Download the
CCAPI Getting Started/Operations
PDF for detailed instructions on using the tool.- In short: extract the ZIP, plug in your camera, power it on, launch the tool, hit the button, and confirm the following dialogs.
Building and uploading to ESP8266
This project uses PlatformIO
PlatformIOPlatformIO: Your Gateway to Embedded Software Development ExcellenceUnlock the true potential of embedded software development with PlatformIO's collaborative ecosystem, embracing declarative principles, test-driven methodologies, and modern toolchains...
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.
Usage
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
.
Connect phone or computer
- Connect to the Wi-Fi network (SSID is
ESP8266_AP
and password isdefgecd7
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. - In the address bar of a browser, type
192.168.4.1
. You should see the ESP8266 Intervalometer interface.
Connect camera
Note: These instructions are written for the Canon EOS M200, but other camera models may be different.
- Navigate to the Wi-Fi settings screen. You should see an option called
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
- If you don’t see the
Canon Control API
option, make sure your camera is compatible developers.canon-europe.comdevelopers and you have followed the CCAPI activation instructions above.
- If you don’t see the
- Select
Camera Control API
, selectAdd connection
, then selectAdd with wizard
. - If the ESP is powered, its network SSID (
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
- On the next screen, choose either automatic or manual IP. Setting a manual IP address is recommended so that it always stays the same. Specifically,
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
- If all goes well, you should see a screen that says
Waiting to connect
, with the URL of the CCAPI endpoint. - Locate the
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 showshttp://192.168.4.7:8080/ccapi
, only enter192.168.4.7
. Then, press theConnect
button. - The camera should briefly show a screen that says
Settings complete
, then give the option to disconnect, which means the connection has been saved. - In the future, you can connect to the network by selecting
Connect
in the mainCamera Control API
screen and selecting the network name.
Using the intervalometer
Once the camera has been connected for the first time, the intervalometer setup is as follows:
- Make sure the ESP is powered. Then, connect your phone/computer and camera to the network.
- Connect the ESP to the camera using the
Connect camera
section of the interface. If successful, theIntervalometer
section should appear. - Use the intervalometer section to start and stop sequences. You can check on the status of the current sequence using the
Status
section at the top.- The interval must be long enough so that the camera has time to save each image before taking the next. If using the bulb exposure mode (which allows for custom long exposures of over 30 seconds), the interval should be around 10 seconds longer than the bulb time, although this may vary from camera to camera.
To-do
- Better error handling (count number, notify user, etc.)
- Ability to set duration (either time or number of shots)
- Ability to add delay (time or amount of time)
- Ability to connect multiple cameras?
- Fix bug where intervalSec is overridden when disabling/enabling bulb mode
- Other features like LCD off, more status info, etc.
- Figure out how to enable async mode in the WebSockets library without having to fork a separate version just to move 3 characters