Press "Enter" to skip to content

DIY Camera Slider

Camera slider is a great tool that in the hands of a great video maker allows them to create amazing time-lapse videos, move the camera to follow the subject or move the camera around to highlight a fixed subject. Unfortunately, I am not a great video maker. However I am a maker and making my own camera slider sounds like a ton of fun! That is why I decided to make my own WiFi enabled camera slider. Using the 2020 Aluminium extrusion and few off-the-shelf components allows the camera slider to be as long or as short as we need it, while being very sturdy and also lightweight for carrying around or mounting on a tripod. We can then use built in WiFi connectivity to control and program the camera slider to have a very precise and repeatable camera movements.

Camera slider should allow you to move or slide the camera in one or more axis. The one we built in this video allows you to slide the camera along the sliding rail and also rotate the camera around it’s center or Z axis.

I have tried to use as many of the off-the-shelf components as possible to allow everyone to recreate this project at home. There are few 3D printed parts that you can print yourself, have someone print them for you or make them from another material (ie. on a CNC or a laser cutter).

As always, the entire project is open-source and open-hardware, which means you can either recreate the project or use it as a starting point for your custom-awesome camera slider.

As always, all the source files, build steps and build instructions are available here in the GitHub repository and also there is a video explaining how it works.

Let me know your thoughts and feel free to post pictures of what you have built.


  1. Giuseppe
    Giuseppe 10. July 2022.

    Beautiful project and thanks for sharing it all.
    Not being very experienced, can I use the A4988 drivers instead of the TMC2209?
    From what I understand they are pin to pin compatible, the only difference is that the TMC2209 has StallGuard which allows for sensorless homing capability,
    but I know if you use it in your project.
    Looking at the wiring diagram I saw that you indicated the DRV8825 motor driver, not the TMC2209 motor driver as indicated in the video, did you perhaps modify the circuit?
    One question, what size is the printed circuit board?
    Thanks again

    • Sasa Karanovic
      Sasa Karanovic 11. July 2022.

      Thank you! I’m glad you liked it!
      Good catch! ๐Ÿ™‚
      I ended up building multiple versions, initially wanted to use TMC2209 because they are silent compared to A4988, but later on used DRV8825. They (modules) are all pin-to-pin compatible so you should be able to switch between them. Just modify the source code to reflect correct number of steps per mm/rotation and you should be fine.
      The PCB size is 100x40mm. But it’s an open-source open-hardware design so you should be able to modify it any way you like.
      Let me know how it turns out if you end up building one!

  2. karl
    karl 22. July 2022.

    hi the 280mm closed loop belt is the wrong size its too big.. was that a typo? if so what is correct size? otherwise great project thanks

    • Sasa Karanovic
      Sasa Karanovic 23. July 2022.

      Hi Karl! So sorry about that, 280mm was the correct value for the old camera slider that uses 2040 aluminium extrusion.
      Correct length should be 200mm. Thanks for catching this, I’ll update the BoM!

  3. Giuseppe
    Giuseppe 4. August 2022.

    I uploaded your gerber file on JLCPCB for the realization of the printouts, but they reported me that there are the output pads in short with the ground plane.
    Did I do something wrong in uploading the file?
    Unfortunately, I have no way of verifying, also because I don’t know what software you used to make the circuit.
    Can you please check?
    If you want, I will send you what was reported by JLCPCB


    • Sasa Karanovic
      Sasa Karanovic 9. August 2022.

      Hi Giuseppe,

      You are right! Thanks for bringing this up. Please download the latest gerber release from the GitHub repository.
      Let me know if this helps.


      • Giuseppe
        Giuseppe 10. August 2022.

        caricata la nuova versione, sono in attesa che arrivino i circuiti stampati.

        • Giuseppe
          Giuseppe 10. August 2022.

          Sorry, I answered you in Italian,
          loaded the new version, I am waiting for the printed circuits to arrive.
          Thank you.

          • Sasa Karanovic
            Sasa Karanovic 11. August 2022.

            Great! Let me know how it turns out! ๐Ÿ™‚

      • Malcolm
        Malcolm 1. December 2022.

        Hi Sasa

        Thanks for all your work! I look forward to building this.

        I have just found the Gerbers have a short between the 2 motor outputs (of 4 pins each) and the copper plane in the GBL file. I’m not sure whether this is still the same problem identified above.

        • Sasa Karanovic
          Sasa Karanovic 1. December 2022.

          Hi Malcom,

          Thank you! I’m glad you liked it.
          The gerbers in the repository are updated to fix the short issue. If you have short on your board maybe double check soldering and motor wiring?

          Let me know how it goes or if you need any help.

          Best regards,

          • Malcolm
            Malcolm 2. December 2022.

            Hi Sasa

            No, this was picked up by the PCB house, and I confirmed by viewing the Gerbers.

            But… I now rechecked everything and found out that when I downloaded the GitHub repository zip (via the “Code” button) two days ago, Github had given me everything from your earlier commit on Jul 24. The filename was Very bizarre.

            But now looks good and I will use the correct files!

  4. qidaxia
    qidaxia 17. August 2022.

    how about add a button to control the equipment?

    • Sasa Karanovic
      Sasa Karanovic 18. August 2022.

      Great suggestion!
      I wanted to control the slider entirely over WiFi, so no physical buttons.

  5. Albert
    Albert 30. September 2022.

    Is the esp32 also powered from a dc-dc out? If I’m not mistaken then out should be 12v and esp32 should be 5v. am I missing something here? Thanks!

    • Sasa Karanovic
      Sasa Karanovic 30. September 2022.

      Great question! In the first version I had two DC-DC converters to create +12V and +5V rails. But then I realized that mine ESP32 dev module has a LDO that can safely take 12V VIN and convert it down to 3.3V. It will generate a little bit more heat but otherwise, it works great.
      Also later on I tuned the DC-DC converter to output ~8V instead of 12V. At this point motors still have plenty of torque for my application but compared to 12V, they are silent. Obviously, your mileage may vary.

  6. Trevor
    Trevor 12. November 2022.

    Great work! super clean and easy to use. what about adding a time-lapse feature where it can pause and take a picture every few seconds through out its move? that would make this the ultimate slider.

    • Sasa Karanovic
      Sasa Karanovic 16. November 2022.

      Thank you! I’m glad you like it!
      I thought about it, and even the first revision had infra-red LEDs on the PCB so that it can trigger a camera shutter. But most cameras/phones are fairly rich with features like this, so you can program them to do this on their own.
      Also the camera slider has an API so that it can easily be extended/used via a phone app or some other piece of automation.

      But most importantly, this is open-source open-hardware project, so everyone can see how it works and make changes to fit their use case (and hopefully make a PR so that everyone can benefit from it). ๐Ÿ™‚

  7. Scott Lapin
    Scott Lapin 16. November 2022.

    On your BOM, you do not list a part number or rating for R3 and R5. Could you please update so I can order the correct item?


    • Sasa Karanovic
      Sasa Karanovic 16. November 2022.

      Hi Scott. If you look at the schematic they are listed as “DNP” meaning do-not-populate (or do not procure, do not purchase etc).
      Those are placeholders if for whatever reason you ever want to have a pull-down instead of pull-up.

      • Scott Lapin
        Scott Lapin 23. November 2022.

        Got…. thanks so much for the follow up.

  8. Mason
    Mason 28. December 2022.

    Hey there, I have a semi-newb question about the power supply. I have an 18v Ryobi battery. I built everything on the provided PCB design, but I missed the R2 notation. Do you have a suggested resistor to install there? Seeing as I already soldered everything in place, is there another way to get power to the ESP32? I was tempted to just connect the 12v-46V input to the VIN pin on the board with a jumper wire, but thought 18V would likely be too much for this little board. Since the VIN isn’t getting power currently, will I damage anything if I power the board with a USB plug while everything else connected to the 18V battery?

    Again, I realize this might be a dumb question. But any help you can provide would be appreciated.

    • Sasa Karanovic
      Sasa Karanovic 28. December 2022.

      Hey Mason! Hope you enjoyed building the camera slider.
      If you are using the exactly the same design, your VIN can be anything between 12-40V, so your 18V drill battery should work for this. Keep in mind that the design does not include any battery management, so it will drain your battery completely empty if you let it. Also it will not cut off if your battery get’s too hot or actually provide any other form of protection. Just something to keep in mind.
      Most EPS32 modules have a diode from VUSB to +5V, so if you have the battery already connected and you plug in the USB cable, you should be fine. Purpose of that diode is to allow currently only from your USB (PC) to the ESP32 board and not the other way around.
      Please share your finished project, I would love to see how it turns out!

  9. Levon Dombayan
    Levon Dombayan 19. February 2023.

    Hi Sasa,
    Amazed by your coding skills, the whole project is very professionally made, thank you for sharing it.
    Hey, I only have a problem with the firmware that restarts in 80% of my attempts to connect to ESP32 and then suddenly the web page loads and works fine until I change the page to Settings or back. I had a similar problem with some old ESP8266 in my previous projects, suspected on the power supply it looks like I have a pretty reliable power source, it’s a powerful step-down converter from 12 to 5 volts, which should take enough current and keep the voltage stable.
    The board I’m using is the most common ESP-WROOM-32 Dev board, maybe an updated one with a USB-C connector.

    This is the stack trace when I have a reboot:

    23:17:46.808 -> Ready to go.
    23:17:57.778 -> E (23613) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
    23:17:57.778 -> E (23613) task_wdt: - async_tcp (CPU 0/1)
    23:17:57.778 -> E (23613) task_wdt: Tasks currently running:
    23:17:57.778 -> E (23613) task_wdt: CPU 0: IDLE0
    23:17:57.778 -> E (23613) task_wdt: CPU 1: loopTask
    23:17:57.778 -> E (23613) task_wdt: Aborting.
    23:17:57.827 -> abort() was called at PC 0x40150ccc on core 0
    23:17:57.827 ->
    23:17:57.827 -> ELF file SHA256: 0000000000000000
    23:17:57.827 ->
    23:17:57.827 -> Backtrace: 0x400887ac:0x3ffbfa60 0x40088a29:0x3ffbfa80 0x40150ccc:0x3ffbfaa0 0x40086f3d:0x3ffbfac0 0x40184a87:0x3ffbc220 0x4015262b:0x3ffbc240 0x4008b1e9:0x3ffbc260 0x40089a3a:0x3ffbc280
    23:17:57.827 ->
    23:17:57.827 -> Rebooting...
    23:17:57.827 -> ets Jul 29 2019 12:21:46
    23:17:57.827 ->
    23:17:57.827 -> rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    23:17:57.827 -> configsip: 0, SPIWP:0xee
    23:17:57.827 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    23:17:57.827 -> mode:DIO, clock div:2
    23:17:57.827 -> load:0x3fff0018,len:4
    23:17:57.827 -> load:0x3fff001c,len:1044
    23:17:57.827 -> load:0x40078000,len:10124
    23:17:57.872 -> load:0x40080400,len:5828
    23:17:57.872 -> entry 0x400806a8
    23:17:58.294 -> DIY Camera Slider
    23:17:58.294 -> Reloading camera slider settings.
    23:17:59.279 -> Connecting to SSID: LEON_Bridge
    23:18:04.427 -> Connecting to SSID: LEON_Bridge
    23:18:09.659 -> WiFi IP:
    23:18:09.659 -> mDNS http://slider.local
    23:18:09.659 -> Slider motor
    23:18:09.659 -> -- Steps per mm: 250
    23:18:09.659 -> Ready to go.

    Did you have any resembling problems?
    Thanks for your assistance in advance.

    • Sasa Karanovic
      Sasa Karanovic 21. February 2023.

      Hi Levon! Thank you, I’m glad you like the project and decided to try it out yourself.
      From the stack trace it looks like watchdog is getting triggered from async_tcp, which is a library we use for servicing client requests.
      If you are compiling and flashing the board with Arduino, make sure you have the right libraries and version of libraries installed. Also make sure that you don’t have any modifications that would cause the MCU to take a very long time to respond.
      You could also extend the watchdog or completely disable it and see if that changes anything.

      • Levon Dombayan
        Levon Dombayan 22. February 2023.

        Hi Sasa,

        Thanks for your reply.
        I followed the “Super easy” way using PlatformIO, it was really easy. Though I had some warnings, can’t remember now what exactly was the warning, but it looked like it was a minor one.
        I’ll try to re-compile and be more careful with the warnings to see if it solves my problem.

        Thanks again,

      • Levon Dombayan
        Levon Dombayan 22. February 2023.

        Sasa, just for a test, how do I disable the watchdog, could you give me some brief instructions?


  10. Russell Calbert
    Russell Calbert 19. March 2023.

    Hello Sasa
    First of all thank you for sharing this amazing project.
    I’m having problems with the firmware
    Ive tried both methods the platformIO and the arduino IDE both with differing error messages.
    I’m more used to the arduino IDE and it seems to be a problem with the ESPmDNS library. What version did you use ?
    Many thanks

    • Sasa Karanovic
      Sasa Karanovic 19. March 2023.

      Hi Russell, I’m glad you liked the project.
      I’m pretty sure I used the latest version of the library (at the time of writing the project) but don’t know the exact revision.
      ESPmDNS is used mainly to allow you to access the camera slider as http://cameraslider.local instead of typing it’s IP address.
      If you don’t need this feature or don’t mind typing the IP address, you can remove the ESPmDNS library and everything else should work as expected.
      Alternatively, you can try different versions of ESPmDNS library and see if that resolves your issue.

      • Russell Calbert
        Russell Calbert 19. March 2023.

        Thanks for the prompt reply.
        I’d like to keep this feature
        I still get the following error with different libraries

        C:\Users\ruzzz\OneDrive\Documents\Arduino\libraries\ESPmDNS\src\ESPmDNS.cpp: In member function 'IPAddress MDNSResponder::queryHost(char*, uint32_t)':
        C:\Users\ruzzz\OneDrive\Documents\Arduino\libraries\ESPmDNS\src\ESPmDNS.cpp:176:5: error: 'esp_ip4_addr_t' was not declared in this scope
        esp_ip4_addr_t addr;
        C:\Users\ruzzz\OneDrive\Documents\Arduino\libraries\ESPmDNS\src\ESPmDNS.cpp:177:5: error: 'addr' was not declared in this scope
        addr.addr = 0;

        Any suggestions
        ( and once again thanks for keeping up the good work )

        • Sasa Karanovic
          Sasa Karanovic 19. March 2023.

          Hi Russell,

          It looks like an issue with the library or potentially conflict (ie you could have multiple libraries installed and Arduino is selecting the wrong one).
          According to this GitHub comment, you could try and remove the Arduino one and leave only the ESP32 ESPmDNS library.
          Also trying a different version of the library would be a low hanging fruit in debugging this issue.

  11. steven
    steven 19. March 2023.

    Hi thank for your work Saลกa ๐Ÿ™‚

    I use 700mm rail and TMC2208 for build your slider.

    But i have a problem, when select Home Slider or a moving to length of more than 140mm with web application, sliding platform come knock against end of rail.
    Sliding platform never goes back to its starting position at the start of the rail,
    where is the electronic box.
    I try to change homing and sliding direction but nothing change.
    Could you help me, please ?

    • Sasa Karanovic
      Sasa Karanovic 19. March 2023.

      Hi Steven! That’s awesome! TMC2208 are a bit more expensive but also silent and very smooth. ๐Ÿ™‚

      This sounds like misconfiguration between firmware and hardware. Did you double check your motor step-size (the jumpers for selecting step size M0, M1, M2). Also, I think TMC2208 does not support 1/32 step size, so M2 jumper will be ignored.
      Does homing of the slider platform works? It’s always a good idea to calibrate your slider, so when you ask it to move ie 20mm, you can verify that it has moved 20mm and not 15 or 7 or so. These errors accumulate fast, maybe a bit less for 700mm rail but still…
      If the motors are not moving in the right direction, you can change the direction in the config/firmware, but you could also change the wiring.
      Let me know how it goes.

      • steven
        steven 19. March 2023.

        i think i found good connections now, slidding plateform go to rail begin when i press Home Slider button.

        connexions are now:
        B- black > M1B
        B+ green > M1A
        A- blue > M2A
        A+ red > M2B

        but platform is not stopped by limit switch it forces against…

        • Sasa Karanovic
          Sasa Karanovic 19. March 2023.

          Hi Steven,

          Check if your limit switch is connected properly. You should also have a pull-up/pull-down resistor on the board to set the IDLE level.
          Your limit switch (center pin) should short to GND or VCC when actuated. If you are not sure how you wired it, try one, if it doesn’t work.
          I doubt it but you could also reverse the Z and X end switch in code, in which case you can move the limit switch to a connector next to it to see if it works then.

          Tip: You can manually press the switch at any time and the platform should stop moving (slows down, then you release the switch, it starts moving slowly again and when you press it for the second time it stops completely).

          The board and the firmware support multiple different configuration to offer more flexibility and therefore be more useful, but at the same time if you are not sure how you configured it, it can take some trial and error. ๐Ÿ™‚

  12. steven
    steven 19. March 2023.

    Thank you so much for your reply.

    – TMC2208 don’t have M0, M1 and M2 port but only MS1 and MS2. I don’t understand if i do must wiring MS1 and MS2.

    – what is procedure for calibrate slider ?

    – Connexion to tmc2208 are :

    M1B: red
    M1A: blue
    M2A: green
    M2B: black

    – Connexion to motor (face motor left to right) are :

    green B+
    red A+
    black B-
    blue A-

    motor steeper i use :

    I don’t sure about connection, maybe that cause trouble.

    Thank you

  13. Russell Calbert
    Russell Calbert 19. March 2023.

    Woot Sorted
    You need to go back to 1.0.6 then it compiles fine

      • steven
        steven 20. March 2023.

        – I connected MS1 and MS2 to VIO for get 1/16 steep.
        – Connexions from motor to TMC2208 :
        A + > M2B
        A – > M2A
        B + > M1A
        B – > M1B

        Slider direction is now from the end to start where end switch is but my end switch has no effect.
        Sliding platform continue to touch it and force.
        Also distances traveled by platform are much greater than those requested. I did not notice any difference with 1/6 steep.
        How to calibrate it ?

        Here is a schematic of my pull up resistance with end switch :
        When I press the switch the current flows
        I don’t see what’s wrong.

        1.0.6 ? arduino ide ?

        Thank you for your help.

        • Sasa Karanovic
          Sasa Karanovic 20. March 2023.

          If you have R1 and R4 populated on the PCB, then you don’t need a pull up on the end switch. Just connect end switch middle pin to the middle pin of end switch terminal and the

          Here is an image showing how you should wire your end switch.

          P.S. When you press the end switch, the slider should stop immediately. When debugging, if this does not happen, you can power off the board before it hit’s the end switch to prevent any possible damage.
          Also, I don’t know if you modified the firmware or maybe have a slightly different ESP32 board. With that said, you can always try swapping the Z and X end switch and see if that makes any difference.

          • steven
            steven 21. March 2023.

            Thank for your help.
            I dont use your board but my wiring imself with prototype board.

            I’m a bit lost in the connections.
            Now i connected GPIO 21 and GND directly to end switch X, but it still does nothing.
            I do not make wiring for end switch Y, I thought it was unused.
            Sliding platform only moves in one direction and does not move backwards.
            I will draw a diagram of my wiring maybe you can help me.

  14. Russell Calbert
    Russell Calbert 23. March 2023.

    Me again.
    Next question ( Serves you right for providing such excellent support )
    While the firmware compiles and uploads.
    I cannot get the webpage up.
    I can ping the web address that comes up in the serial monitor, but I cannot get a web page up. I’m using Chrome for a browser.
    Many thanks

    • Sasa Karanovic
      Sasa Karanovic 23. March 2023.

      Hi Russell, I’m glad to hear things are moving along.
      You should find out what is the IP address of the Camera Slider on your router and confirm it’s the same one as the one you see in the serial monitor.
      Then you can explicitly tell Chrome to use `http://` instead of `https://` that could be one issue (ie if Camera Slider IP is, type explicitly `` in your browser)
      Also you have to make sure that the machine that you are using Chrome on is on the same network as the Camera Slider and that there is not firewall or any other restriction that would prevent you from accessing the Camera Slider.

      • Russell Calbert
        Russell Calbert 24. March 2023.

        Hello Again
        Ive set up a private network to test this using a dd-wrt on a tplink703.
        So all there is on it is the laptop and the esp32 and everyway I try it, it keeps coming back with error
        No web page was found for the web address
        which is the web address on both the serial monitor and the router
        I’ve turned off all firewalls
        Suggestions ?

        • Simon
          Simon 27. May 2023.

          Hi Russell
          I had the same issue trying to connect via wifi as well. Had did you resolve it?

  15. Russell Calbert
    Russell Calbert 27. March 2023.

    Me once more
    And found the problem. You cant upload the data using Aduino 2.0 you have to use 1.8
    Now I’m waiting on the boards to be delivered so I can get soldering
    Thanks again

    • Sasa Karanovic
      Sasa Karanovic 27. March 2023.

      That’s great news! I’m glad you managed to get it to work. Happy hacking!

  16. Peter Tatrai
    Peter Tatrai 10. May 2023.

    This is a beautiful and a very Professional project and thanks for sharing it all!!

    I’m not very experienced but used the TMC2208. Had problem with the IO Platform until I have follow your direction exactly then worked like a charm.
    I’m using a 2M rail, and just a slide motor single axis, and it is working just fine with a heavy camera on top. Butter smooth ramp up/down and the videos are great.
    You have here a real professional product.

    It has been brought up earlier in comments about the WIFI connection that would be better not to hardcode in the WIFI network but let it connect to any network on boot up.

    As I’ m taking the slider outside there is no WIFI available so I need to drag a WIFI hotspot around.
    Would it be possible to have the ESP32 itself as hotspot so phone can connect to it directly without any additional gear?

    • Sasa Karanovic
      Sasa Karanovic 10. May 2023.

      Hi Peter,

      Thank you and I’m glad to hear you liked it!
      It would actually be quite easy to modify this project to have the ESP32 act as a WiFi station instead of a client. Then you would join the WiFi that slider is creating and control it from there.
      No promises but as soon as I have some free cycles I’ll try to update the code and verify it’s working properly. (In the meantime you could also try to do it yourself, just for fun.)

      Also I would love to see how your build turned up so if you have some pictures or build log please feel free to share it. ๐Ÿ™‚

  17. Simon
    Simon 21. May 2023.

    Hi Sasa

    I’m not a coder, but I have managed to get a fair way into this project, However, I can’t seem to get past the issue below. I’m using the Arduino IDE method as I’m more familiar with it. Any suggestions?

    BTW I’m trying to adapt this for a Neeewer manual slider rather than building my own.

    C:\Arduino\Camera Slider\DIY_CameraSlider\DIY_CameraSlider.ino: In function 'void setup()':
    C:\Arduino\Camera Slider\DIY_CameraSlider\DIY_CameraSlider.ino:108:2: error: 'setupWebServer' was not declared in this scope
    C:\Arduino\Camera Slider\DIY_CameraSlider\DIY_CameraSlider.ino:108:2: note: suggested alternative: 'AsyncWebServer'
    Multiple libraries were found for "ESPmDNS.h"
    Used: C:\Users\simon\OneDrive\Documents\Arduino\libraries\ESPmDNS
    Not used: C:\Users\simon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\libraries\ESPmDNS
    Multiple libraries were found for "WiFi.h"
    Used: C:\Users\simon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\libraries\WiFi
    Not used: C:\Users\simon\OneDrive\Documents\Arduino\libraries\WiFiNINA
    exit status 1

    Compilation error: 'setupWebServer' was not declared in this scope

    Kind Regards

    • Sasa Karanovic
      Sasa Karanovic 21. May 2023.

      Hi Simon

      The compilation error implies that you have multiple libraries for ESPmDNS and WiFi on your computer and Arduino is not sure which one you want to use.
      You will need to resolve that issue before compiling the code. You can also try using PlatformIO to compile the code if Arduino does not work.

      • Simon
        Simon 27. May 2023.

        Hi Sasa

        I finally had to start afresh on a second laptop and install IDE and all the libraries again. One step closer to getting this great project working. So it’s uploaded now but I’m having the same issue as Russell Calbert where I can’t connect via a Chrome or Firefox browser. I’ve turned all of the firewalls off and still hitting the same issue.
        Any ideas?
        Regards Simon

        • Sasa Karanovic
          Sasa Karanovic 29. May 2023.

          Hi Simon,
          It’s great to hear you are making progress. Have you uploaded the the code AND the sketch data?
          You can always open the Serial Monitor and check what is the output from the ESP32.

          • Simon
            Simon 7. July 2023.

            Hi Sasa
            Sorry I’m working on this sporadically. The code and data has now been successfully uploaded and I can access the web page. I’m just waiting for the PCBs to turn up as I tried to set it up on some breadboards and got hopelessly lost with the wiring. I’ll keep you posted once i’ve built the circuits and connected it to my slider.


          • Sasa Karanovic
            Sasa Karanovic 9. July 2023.

            Hi Simon,
            It’s great to hear things are moving along. Happy hacking!

  18. Manny
    Manny 10. June 2023.

    HI, I was able to load the code, I can load the web page, but the motor won’t move, I upload a sample code to move te motor, and the motor moves great, but when I load the firmware and click on home on the web page the motors don’t move, any advice?

    • Sasa Karanovic
      Sasa Karanovic 12. June 2023.

      Hi Manny. I would first double check if you are using same GPIO pins in both sketches. You can also verify with the multimeter that each pin is in correct state. Also before you can use the slider you need to home the slider (only slider, rotation does not need homing).

  19. Russell
    Russell 19. June 2023.

    Hello Sasa me again
    Im back trying to get this to work ( Had to take a break to help out with my sisters wedding )
    I can connect to the web page but I cant get it to move.
    trying to home it but no response.
    Tried different stepper motor drivers ( both tmc2209 and a4988 )
    I’m using your pcb design and looking at the pin labels on the esp32 board where you have d16 and d 17 I have tx2 and rx2

    • Sasa Karanovic
      Sasa Karanovic 22. June 2023.

      Hi Russell,
      Can you double check that you are using correct pins. Also you can use a multimeter to verify that pins are at the correct voltage.

  20. Simon
    Simon 27. July 2023.

    Hi Sasa

    I’m slowly moving this project forward. However, are the PCBs meant to have the holes plated through? I’m having a nightmare soldering all the ESP and driver connectors to ensure they have continuity.

    • Sasa Karanovic
      Sasa Karanovic 27. July 2023.

      Hi Simon. Just saw that you have commented here as well but I have already replied to your email. ๐Ÿ™‚

  21. Michael Wesp
    Michael Wesp 23. October 2023.

    Hi, great project, thanks!

    I have one question: Do you drive the motors in Full-Step or half step or any other?
    Because my Duration at “Auto Sliding” is always too short, when I start that.

    • Sasa Karanovic
      Sasa Karanovic 23. October 2023.

      Thanks Michael!

      You have jumpers on the PCB that allow you to chose from full step to 1/32 step (depending on which motor driver you are using).

  22. Brian (BallisticTech)
    Brian (BallisticTech) 25. October 2023.

    Hello. Is this the best way to ask for help? Would you it be better to post an issue on Github where I can post pictures?

    I’m temporarily breadboarding my ESP32 with an A4988 stepper driver while I wait for JLCPCB. I’m just trying to drive the X axis at the moment

    I cloned the repository and opened the firmwire folder with VSCode. PlatformIO reconized the project. I changed the SSID/Passphrase in the config header file. Then built and flashed the ESP32. There were some yellow warnings but it seemed to have written to the ESP fine

    I’m powering the ESP with USB at the moment and a 12v wall wart for motor power.

    I get some serial debug noting that the esp has connected to my network. I am able to ping the IP for the ESP32. I click the link to open it in the browser but just get a 404 error.

    • Sasa Karanovic
      Sasa Karanovic 25. October 2023.

      Hi Brian,

      Sounds like you did not upload the web page (SPIFFS data) folder.
      There are many tutorials on how to do it and it depends if you are using Arduino, Platformio or something else.

      • Brian (BallisticTech)
        Brian (BallisticTech) 3. November 2023.

        I’m now trying to get the PCBs made and populated by JLCPCB. For pick and place they require a BoM csv and CPL csv file.

        In the hardware files I only see a .txt file and I don’t see a way to convert it to what JLCPCB wants.

        I also tried opening the Altium files in EasyEDA but it seems to require an ascii formatted version of the Altium files.


        • Sasa Karanovic
          Sasa Karanovic 4. November 2023.

          You can try asking JLCPCB support to help you.
          The manufacturing package that is provided is pretty standard and any PCB manufacturer should be able to use it to manufacture boards.

          • Brian (BallisticTech)
            Brian (BallisticTech) 14. November 2023.

            Thanks for the help. I contacted support.

            This was the reply. He noted that Altium is able to export the files format they need.

            “thanks for your inquiry , but sir , customer must produce bom and cpl files , the files must in excel format ..
            our system can not process the other format”

            I then tried manually converted to the file formats they require based on past projects I’ve had made/assembed.

            Example BOM:

            Example CPL:

            I believe I’ll be able to pick the specific LCSC parts once I upload the file so that column isn’t crucial in the BOM.

            But in the CPL Pick and Place file there’s a column for value (I assume resistance and capacitance) and I don’t see an equivalent column in the txt file I’ve been looking at:

            Which makes me wonder how does a service know what components to pick based off that file?

          • Sasa Karanovic
            Sasa Karanovic 15. November 2023.

            This is a very specific issue with that fab house that you are dealing with and seems like they don’t want to use any other file format.
            Other fab houses should have no issues, you can try that as well.
            Without advertising any specific shop; I did make this board multiple times with the exact same files that are in the GitHub repository.

            CPL is more commonly known as pick-and-place file. It literally tells the manufacturer which component (designator) to place at which coordinates (x,y) and on which layer (top/bottom).
            Anything beyond that is nice to have and not a requirement. If the shop wants to work with you, you can write it on a napkin, fax-it to them and they would still be able to make the board if they wanted to. ๐Ÿ™‚
            Obviously different shops will have different requirements in order to “standardize” things internally and to save their time (while wasting yours in this case). ๐Ÿ™‚

            Feel free to email me if you need more help.

    • Lugui'
      Lugui' 10. November 2023.

      Hey Bryan, can I see your diagram ? I’m trying the same setup, breadboard, A4988 and 12V wall adapter. The web page it’s working fine, but the motors aren’t moving…

      • Brian (BallisticTech)
        Brian (BallisticTech) 14. November 2023.

        Hi. I’ll try and figure out a way to post my bread board pic so you can see it.

        My first guesses are that your drivers aren’t getting the correct power or that the motor pairs aren’t correct.

        Does the motor(s) engage when they get power and you enable the motors?

        You can double check motor pairs by either using a multimeter to check continuity between to wires (those will be a pair). Or simply short two wires together and check if it causes the motor to not turn easily

  23. SV
    SV 24. November 2023.

    Hi Sasa,
    Could you please clarify End Switch Terminal P8
    connections 1,2,3 to what of Switch Common, NO, NC?

    • Sasa Karanovic
      Sasa Karanovic 26. November 2023.

      Hi SV,

      You can consult the schematic, there are multiple options you can chose from.
      For example you can wire the switch common to “end switch X” and NO to GND.

  24. Terry E
    Terry E 25. January 2024.

    I’ve never used JCLPCB or had boards created from Gerber files. Is there a webstore or somewhere I can order the complete board?

    • Sasa Karanovic
      Sasa Karanovic 25. January 2024.

      Hi Terry,

      There is a web shop.
      I’m working on a new version of the Camera Slider which will be more compact, robust and easier to assemble with few additional features.
      It will be available on the web shop soon-ish. If you want I can let you know once it’s available.

      If you can’t wait, I might have few bare (no components populated) PCBs that I can send you. You would just need to solder few headers and add the modules.

  25. Toni
    Toni 30. April 2024.

    Hello Sasa,
    first of all, it’s a great slider
    thanks for the effort you’ve put in.
    I just have one problem, the software just won’t run for me, I only get a blank black page displayed in Explorer.
    I followed your instructions strictly and installed it with
    PlatformIO. but nothing is displayed? Here is the printout from the terminal in VS Studio:
    rst:0x1 (POWERON_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    mode:DIO, clock div:2
    entry 0x400806a8
    DIY Camera Slider
    Reloading camera slider settings.
    mDNS http://sk_camera_slider.local
    Slider motor
    -- Steps per mm: 187
    Ready to go. The Xs are mine

    Can you help me with what’s not working?

    • Sasa Karanovic
      Sasa Karanovic 1. May 2024.

      Hi Toni,

      Thank you! I am actually working on two new versions of the camera slider, so stay tuned for that! ๐Ÿ™‚

      I have not used PlatformIO through VS Studio, but make sure you have uploaded both the firmware AND the website. Otherwise you will get blank website.
      Also try using a different/modern browser like Firefox or Chrome.

      Hope this helps!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.