ESP32-CAM remote image access via FTP. Take pictures with ESP32 and upload it via FTP making it accessible for the outisde network.
-
More information can be found on their comprehensive Docs. But Basically:
- Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it
- Open VSCode Package Manager
- Search for official
platformio-ide
extension - Install PlatformIO IDE.
-
ESP32-CAM does not have a built-in UART/USB converter, therefore you will need one.
- TX goes to RX;
- RX goes to TX;
- Power the board while keeping
GIPO0
low; - You can now release it and upload your code;
- 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.
-
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:www.mysite.com/my_picture.jpg
-
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:
https://my_user.000webhostapp.com/gallery_gen/XxXxXxXx.jpg
ftp.OpenConnection();
// Create the new file and send the image
ftp.InitFile("Type I");
ftp.ChangeWorkDir("/public_html/zyro/gallery_gen/");
ftp.NewFile("octocat.jpg");
ftp.WriteData( octocat_pic, sizeof(octocat_pic) );
ftp.CloseFile();
ftp.CloseConnection();
- Your FTP details can be found on the 000webhost control panel once logged on click your site then details.
- 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" );
upload_FTPpicture();
// 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 Shields.io
GitHub ESP32 camera example