Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
110 lines (70 sloc) 4.9 KB


ESP32-CAM remote image access via FTP. Take pictures with ESP32 and upload it via FTP making it accessible for the outisde network.

GitHub version Build Status License: MIT

GitHub last commit



  1. PlatformIO
  2. Flashing
  3. Hardware
  4. Free Website Hosting
  5. Blynk
  6. Node-RED
  7. Credits


  • More information can be found on their comprehensive Docs. But Basically:

    1. Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it
    2. Open VSCode Package Manager
    3. Search for official platformio-ide extension
    4. Install PlatformIO IDE.

PlatformIO installation


  • ESP32-CAM does not have a built-in UART/USB converter, therefore you will need one.

    1. TX goes to RX;
    2. RX goes to TX;
    3. Power the board while keeping GIPO0 low;
    4. You can now release it and upload your code;



Board Pinout

ESP32-CAM Pinout


  • This board has an AMS1117 voltage regulator which "sleep" current is around 6mA, this is quite a lot if you plan to have your board running on batteries.
  • TODO! find an alternative with the same package.

Free Website Hosting

  • There're plenty of tutorials and examples on how to run the video streming or pictures on your local network while the ESP32 acts as a webserver.

  • The idea behind this project is to upload the picture via FTP making it available on an URL something like:

  • This way you don't need to overload the ESP32, your network remains secure, not open to the world, no port forwarding.

  • For this example I uploaded the GitHub Octocat to my 000Webhost hosted webiste, the file is avalable under:


  // Create the new file and send the image
  ftp.InitFile("Type I");
  ftp.WriteData( octocat_pic, sizeof(octocat_pic) );


FTP information

  • Your FTP details can be found on the 000webhost control panel once logged on click your site then details.


Blynk App

  • This is a Bonus, as you may want to add it to your altomation project, you can use Blynk Image Gallery Widget and just supply it with the URL used by ESP32 from the hardware.
// Take a picture and add a time tag to it;
take_picture( "my_picture_201906170521" );

// And by changing it on Blynk from the hardware will reflect on the App
Blynk.setProperty(VX, "url", 1, "https://mywebsite/something/my_picture_201906170521.jpg");


  • Another alternative is to send the image via MQTT(???) using cloud brokers as CloudMQTT and have the Node-RED subscribed to that topic and saving it to the database and serving the file locally.

  • This is a topic for another project, but can be seen briefly here


GitHub Shields and Badges created with

GitHub ESP32 camera example

You can’t perform that action at this time.