Trigger Your DSLR Wirelessly With Smartphone and ESP8266 Wi-fi Module




This is my first instructable, and English is not my native language, so be lenient (but I would be grateful to anyone pointing out misspellings, typos... ;) ).

It will only cost you a few bucks (pounds, euros or whatever) and require basic soldering skills to wirelessly trigger your DSLR camera from any smartphone, including Self-timer and Intervalometer modes.

I tested it with a Canon DSLR, but it should work with any camera with built-in shutter switch terminal (cf.

During this instructable, I will mostly focus on steps where I have some added value, and just give pointers when good informations already exists on the Net.

Precisely, here are some interesting links before I get into the main topic:

Actually, it was this last tutorial that made me want to get into this project...

Step 1: Shopping List

  1. ESP8266 Wi-fi module
  2. USB to serial adapter, with Dupont cables
  3. battery AAA x 2
  4. battery holder
  5. switch
  6. optocoupler 4N25 or equivalent
  7. resistor 220 Ohm (actual value depends on optocoupler characteristics)
  8. small scrap of prototyping board
  9. tablets tube (nice enclosure :) )
  10. cable and connector, depending on your camera model

Step 2: About ESP8266...

ESP8266 is a small and very cheap Wi-fi module (with embedded MCU) that comes in many flavors.

For this instructable, I used ESP-01, which is the most common reference.

I got mine directly from China for less than 3€ (Banggood) but if you are not willing to wait two weeks for delivery, google for ESP8266 and you will find many local resellers.

I will not dwell on ESP8266 because many excellent tutorials already exist, describing how to torture this cute little device any possible way.

The only important point concerns NodeMCU firmware, which must be installed in place of the default firmware (aka "AT firmware") coming with ESP8266.

Here are some pointers to useful information about ESP8266:

Step 3: NodeMCU Installation

Step 4: Lua Scripts Installation

Now that NodeMCU is running, you'll have to feed your ESP8266 with appropriate Lua scripts, available at

Download these 5 files:

  • index.html
  • favicon.png
  • filesend.lua
  • init.lua
  • server.lua

and upload them to ESP using ESPlorer tool (you need JAVA installed on your computer).

  1. Connect ESP8266 to your "USB to serial" adapter, and adapter to your computer
  2. Download ESPlorer
  3. Unzip the archive and open ESPlorer folder
  4. Run ESPlorer.bat (Windows users) or ESPlorer.jar
    You should see a window similar to above figure
  5. Select your adapter port, 9600 baud rate and press Open
  6. Wait for Cannot open init.lua message and press Upload... to upload each of the 5 files to ESP
  7. Stay connected but change baud rate to 115200
  8. Press Reset
  9. Wait for Server ready! message

Your ESP module is now ready to get tested (preferably before making the wiring).

You just have to follow instructions from the "Use it" step and check feedback on the terminal screen.

Step 5: Let's Do It...

Wire the parts as on the schematic above.

Because you will sometimes want to modify ESP scripts or firmware, it's preferable to use cables with Dupont connectors rather than directly solder ESP pins.

4N25 optocoupler wiring details:

  • pin 1 to VCC throught resistor
  • pin 2 to ESP GPIO0
  • pin 4 to ground wire of the release cable
  • pin 5 to shutter wire of the release cable

Step 6: ... and Use It

Turn your freshly made ESP remote module on, connect it to you camera, get your favorite smartphone ready, and follow each simple step bellow:

  1. Turn Wi-fi on
  2. Connect to access-point named ESP (password: 12345678)
  3. Point your browser to IP adress
    You should see a web page similar to screen shot above
  4. Press Trigger and enjoy the delicate sound of your camera shutter... :)

You can now play with Self-timer and Intevalometer settings.

The Sound option is intended as an audio feedback for Self-timer, but doesn't seem to work with Android Chrome.
If you feel like needing this nice option, just install Firefox.
Unfortunately, neither Vibration nor Sound seem to work with Safari...

Well... This is this end of my first instructable.
I hope you'll appreciate it and I'm looking forward to your feedback.

Happy remote triggering!

Stay tuned!

My next instructable will introduce my wireless camera trap, based on ESP8266 (what else?) coupled with a PIR sensor.
Oh, and if you don't feel like waiting for it, have a look at



  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest
  • Sew Tough Challenge

    Sew Tough Challenge
  • Stone Concrete and Cement Contest

    Stone Concrete and Cement Contest

20 Discussions


2 years ago

I need to look into this in more detail, but I do see the intervalometer option. Is there a way to control Exposure, Interval, and Delay?


3 years ago

thanks for your tutorial...

i just have a problem... when i connect everything like your chart my esp will not work... just when i turn +3V to CH_PD the ESP start to send a wifi signal. have anyone an idea?

The only difference in components is only my 4n35.

Would be nice if anyone could help me!


3 years ago on Introduction

Awesome. I made it with some tweaks


3 years ago on Introduction

wdt reset
load 0x40100000, len 28740, room 16
tail 4
chksum 0xe7
load 0x3ffe8000, len 2888, room 4
tail 4
chksum 0xd6
load 0x3ffe8b50, len 15536, room 4
tail 12
chksum 0x39
csum 0x39
;?Incoming request: GET /? HTTP/1.1
Connection closed
Incoming request: GET /favicon.ico? HTTP/1.1
Connection closed

Hi, I having this result, do know what why? great stuff anyway, i hope you find out what could be, i have done everything several times.

1 reply

4 years ago on Step 4

Hi RyanG28. Thank you for the kind words.
To upload any file, just use the "Upload" button at the bottom of ESPlorer window.


4 years ago on Introduction

CosmicMac, you are right. Need for focus using remote is rare, (practically none) esp when camera is on tripod and subject is fixed. (the subject has to, in most cases, or else tripod mount is not needed) Therefore, practically shutter trigger should work well for long.

A little off topic question - what are noticeable differences in ceramic and pcb antenna? I successfully tried ESP-12 at a distance of approx 20ft with one concrete wall in between (cell voltage at 2.85 Volts)

1 reply

Reply 4 years ago on Introduction

Unfortunately I did not do any comparison by myself but you will find interesting discussions about antennas on
I choose ESP-07 rather than ESP-12 essentially for the external antenna connector (oh, and also because there was a flash deal on banggood: 2,51 € per unit with a small PCB adapter, for breadboard compatibility :)).


4 years ago on Introduction

Good and useful project. Well written instructable. It would be still better if we can do it with stable nodemcu release. I did have a good past experience in electronics and particularly in recently launched esp8266, which helped me in quickly making this gadget for my EOS. Thanks. I will soon add image of this.

3 replies

Reply 4 years ago on Introduction

Sure... Here you go... I made subtle changes. For optocoupler, I had EL817 lying around so I checked the specs and used that one and accordingly, I changed the resistor value to 120 Ohms, I wanted to use 180 but that was not at hand and I gave 120 Ohms a shot (ensuring from datasheet, that it will remain in safe range). Also I had ESP-12 modules rather than ESP-01 .

Also since we have other GPIOs as well, I'd like to change the program to be able to use focus as well using other GPIOs but that is left for the future as shutter is first priority.


Reply 4 years ago on Introduction

Thanks rtandon for the feedback.
When I started this project, I assumed that I should have no need for the focus, because I usually pre-focus manually when my camera is on tripod.
But as I have a bunch of spare ESP-07 (same as ESP-12 except the ceramic antenna) and some optocouplers in stock, I will probably make a new version with focus function as well. The question is: should I focus manually with a dedicated button or should I systematically focus (how long?) when pushing the trigger button? Actually, I will probably decide to implement both options, and let the user choose... :)
Anyway, it's an easy upgrade, just requiring a second optocoupler/resistor (or a dual-channel optocoupler) and a few additional lines of code.
Nice box by the way. ;)


4 years ago

did someone get it work? i uploaded everything to my lua based esp successfully but i cant find the wifi ap ... how long have i wait? it never compiles the files, it repeats every 3 seconds this part:

" ets Jan 8 2013,rst cause:4, boot mode:(3,0)

wdt reset

load 0x40100000, len 30452, room 16

tail 4

chksum 0xce

load 0x3ffe8000, len 2728, room 4

tail 4

chksum 0xaf

load 0x3ffe8ab0, len 13544, room 4

tail 4

chksum 0xae

csum 0xae






again and again...

3 replies

Reply 4 years ago on Introduction

yes, that was the problem, now it works like a charm, youre the best! thanks!! great you took your time!


4 years ago

It's really great idea!Awesome!