ESP32-CAM Video Surveillance Robot

Build your own video surveillance robot and control it through the Internet with iPhone.

Feb 5, 2020

52666 views

18 respects

Components and supplies

1

iRobbie-A App

1

Mini Pan/Tilt Camera Platform Anti-Vibration Camera Mount w/ 2 Servos

1

Dual Channel DC Motor Driver L298N

1

FT232RL FTDI Mini USB

1

MB102 Breadboard Power Supply Module

1

18650 Battery Holder

1

Adafruit (PID 3244) Mini 3-Layer Round Robot Chassis Kit - 2WD with DC Motors

1

ESP32-CAM

Apps and platforms

1

Arduino IDE

1

iRobbie-A

Project description

Code

esp32cam_car

arduino

esp32cam_car

arduino

Downloadable files

Video Surveillance Robot Connection Diagram

Video Surveillance Robot Connection Diagram

Comments

Only logged in users can leave comments

Anonymous user

2 years ago

Controlling the robot through internet can it be done without a router..?

KDPA

2 years ago

Actually, the code supports both modes: with and without router. To switch between these modes you can comment lines in the code or just press the reset button on ESP32-CAM

Anonymous user

2 years ago

Hi! The code is made in such a way that ist opens an WiFi Access-point (AP). So yes: no router required! You just connect your mobile device to the robot WiFi AP.

deathdaygamers

2 years ago

hey i found an app that will help you all if using an android or anydevice wanted to be free ,this is free version of app https://play.google.com/store/apps/details?id=com.p4f.esp32camai and also if you want to make it more easy just edit in code write their as WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Camerafeed = WiFi.localIP().toString(); Serial.println("' to connect"); } this will make your device wifi station means connected to router and hence go to serial monitor and find ip and ok go to serial monitor find ip address and now open a webrowser type your ip adress and wait now see boom you can see connected to your esp32 but wait a minute add this library in your code to use http ,#include "esp_http_server.h". also like my comment and follow me

Anonymous user

2 years ago

Can u share your modified android app code.

Anonymous user

2 years ago

can you send it to me?

Anonymous user

2 years ago

Can u upload modified android app code.in my case app can't connect to esp 32 board.so plz send me your code or upload here.

Anonymous user

2 years ago

Really cool project! Thanks for sharing! The app is not cheap, but it is also possible to edit the code and add a few buttons to control the robot. I used a Zumo chassis and a small L298N motor driver. Now its a very compact design, i love it! In the beginning i had lots of trouble with broken connections, but after adding an external antenna its works great.

Anonymous user

2 years ago

can you give me

Anonymous user

2 years ago

Hi! very nice! I was looking for a project with esp32-cam like this I upload the sketch on the board but i can't see the control joystick on the web page. I see the stream, the servo's control and the other, but not the joistick. any suggestion? thanks

KDPA

2 years ago

In order to see the joystick and control the robot you have to download and install iRobbie-A app on your iPhone/iPad https://apps.apple.com/us/app/irobbie-a/id1478706096?ls=1

Anonymous user

2 years ago

So this is not open source, this is advertising your $6 expensive app? Hmm... too bad.

Anonymous user

2 years ago

Sir When I uploaded the above code...I am getting an error as mentioned below. I couldn't able to understand that ,So please help me. abhiman:271:34: error: 'httpd_req_t' was not declared in this scope static esp_err_t capture_handler(httpd_req_t *req){ ^ abhiman:271:47: error: 'req' was not declared in this scope static esp_err_t capture_handler(httpd_req_t *req){ ^ abhiman:340:33: error: 'httpd_req_t' was not declared in this scope static esp_err_t stream_handler(httpd_req_t *req){ ^ abhiman:340:46: error: 'req' was not declared in this scope static esp_err_t stream_handler(httpd_req_t *req){ ^ abhiman:417:30: error: 'httpd_req_t' was not declared in this scope static esp_err_t cmd_handler(httpd_req_t *req) ^ abhiman:417:43: error: 'req' was not declared in this scope static esp_err_t cmd_handler(httpd_req_t *req) ^ abhiman:598:33: error: 'httpd_req_t' was not declared in this scope static esp_err_t status_handler(httpd_req_t *req){ ^ abhiman:598:46: error: 'req' was not declared in this scope static esp_err_t status_handler(httpd_req_t *req){ ^ abhiman:657:32: error: 'httpd_req_t' was not declared in this scope static esp_err_t index_handler(httpd_req_t *req){ ^ abhiman:657:45: error: 'req' was not declared in this scope static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t capture_handler(httpd_req_t*)': abhiman:271:50: error: 'esp_err_t capture_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t capture_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:271:18: note: previous declaration 'esp_err_t capture_handler' static esp_err_t capture_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t stream_handler(httpd_req_t*)': abhiman:340:49: error: 'esp_err_t stream_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t stream_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:340:18: note: previous declaration 'esp_err_t stream_handler' static esp_err_t stream_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t cmd_handler(httpd_req_t*)': abhiman:417:46: error: 'esp_err_t cmd_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t cmd_handler(httpd_req_t *req) ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:417:18: note: previous declaration 'esp_err_t cmd_handler' static esp_err_t cmd_handler(httpd_req_t *req) ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t status_handler(httpd_req_t*)': abhiman:598:49: error: 'esp_err_t status_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t status_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:598:18: note: previous declaration 'esp_err_t status_handler' static esp_err_t status_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t index_handler(httpd_req_t*)': abhiman:657:48: error: 'esp_err_t index_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:657:18: note: previous declaration 'esp_err_t index_handler' static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'void startCameraServer()': abhiman:671:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:678:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:685:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:692:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:699:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ Multiple libraries were found for "WiFi.h" Used: C:\\Users\\abhim\\OneDrive\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\libraries\\WiFi Not used: C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\libraries\\WiFi exit status 1 'httpd_req_t' was not declared in this scope This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

Anonymous user

2 years ago

Can I please get the code only to run the car... Without camera

Anonymous user

2 years ago

Thank you so mucho.excelent job. The App is for android? How can i test the car forward...

KDPA

2 years ago

So far the app is available only for iOS devices.

Anonymous user

2 years ago

Cool solution & good tutorial... Question about remote pilot: What is exactly the role of the Robbie app? only available on iPhone? The html / javascript page is not self sufficient? is it for the video window, for wifi connectivity? What possibility for piloting from Android, or from raspberry? Cordially yours

KDPA

2 years ago

Hello, Thank you for your interest to my project! The iRobbie-A app provides a user friendly interface to work with various controllers, including ESP32-CAM. For example, you can zoom in on the video stream while the joystick is still in its original place and size. We are working on adding other functions in the app. So far the app is available only for iOS devices.

prekshapre

3 years ago

Can I please get the code only to run the car... Without camera

Anonymous user

4 years ago

Sir When I uploaded the above code...I am getting an error as mentioned below. I couldn't able to understand that ,So please help me. abhiman:271:34: error: 'httpd_req_t' was not declared in this scope static esp_err_t capture_handler(httpd_req_t *req){ ^ abhiman:271:47: error: 'req' was not declared in this scope static esp_err_t capture_handler(httpd_req_t *req){ ^ abhiman:340:33: error: 'httpd_req_t' was not declared in this scope static esp_err_t stream_handler(httpd_req_t *req){ ^ abhiman:340:46: error: 'req' was not declared in this scope static esp_err_t stream_handler(httpd_req_t *req){ ^ abhiman:417:30: error: 'httpd_req_t' was not declared in this scope static esp_err_t cmd_handler(httpd_req_t *req) ^ abhiman:417:43: error: 'req' was not declared in this scope static esp_err_t cmd_handler(httpd_req_t *req) ^ abhiman:598:33: error: 'httpd_req_t' was not declared in this scope static esp_err_t status_handler(httpd_req_t *req){ ^ abhiman:598:46: error: 'req' was not declared in this scope static esp_err_t status_handler(httpd_req_t *req){ ^ abhiman:657:32: error: 'httpd_req_t' was not declared in this scope static esp_err_t index_handler(httpd_req_t *req){ ^ abhiman:657:45: error: 'req' was not declared in this scope static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t capture_handler(httpd_req_t*)': abhiman:271:50: error: 'esp_err_t capture_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t capture_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:271:18: note: previous declaration 'esp_err_t capture_handler' static esp_err_t capture_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t stream_handler(httpd_req_t*)': abhiman:340:49: error: 'esp_err_t stream_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t stream_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:340:18: note: previous declaration 'esp_err_t stream_handler' static esp_err_t stream_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t cmd_handler(httpd_req_t*)': abhiman:417:46: error: 'esp_err_t cmd_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t cmd_handler(httpd_req_t *req) ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:417:18: note: previous declaration 'esp_err_t cmd_handler' static esp_err_t cmd_handler(httpd_req_t *req) ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t status_handler(httpd_req_t*)': abhiman:598:49: error: 'esp_err_t status_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t status_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:598:18: note: previous declaration 'esp_err_t status_handler' static esp_err_t status_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'esp_err_t index_handler(httpd_req_t*)': abhiman:657:48: error: 'esp_err_t index_handler(httpd_req_t*)' redeclared as different kind of symbol static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino:657:18: note: previous declaration 'esp_err_t index_handler' static esp_err_t index_handler(httpd_req_t *req){ ^ C:\\Users\\abhim\\OneDrive\\Desktop\\project\\abhiman\\abhiman.ino: In function 'void startCameraServer()': abhiman:671:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:678:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:685:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:692:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ abhiman:699:5: error: invalid conversion from 'esp_err_t {aka int}' to 'esp_err_t (*)(httpd_req_t*) {aka int (*)(httpd_req*)}' [-fpermissive] }; ^ Multiple libraries were found for "WiFi.h" Used: C:\\Users\\abhim\\OneDrive\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\libraries\\WiFi Not used: C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\libraries\\WiFi exit status 1 'httpd_req_t' was not declared in this scope This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

Anonymous user

4 years ago

Can u upload modified android app code.in my case app can't connect to esp 32 board.so plz send me your code or upload here.

deathdaygamers

4 years ago

hey i found an app that will help you all if using an android or anydevice wanted to be free ,this is free version of app https://play.google.com/store/apps/details?id=com.p4f.esp32camai and also if you want to make it more easy just edit in code write their as WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Camerafeed = WiFi.localIP().toString(); Serial.println("' to connect"); } this will make your device wifi station means connected to router and hence go to serial monitor and find ip and ok go to serial monitor find ip address and now open a webrowser type your ip adress and wait now see boom you can see connected to your esp32 but wait a minute add this library in your code to use http ,#include "esp_http_server.h". also like my comment and follow me

Anonymous user

2 years ago

can you send it to me?

Anonymous user

2 years ago

Can u share your modified android app code.

ra55

5 years ago

Really cool project! Thanks for sharing! The app is not cheap, but it is also possible to edit the code and add a few buttons to control the robot. I used a Zumo chassis and a small L298N motor driver. Now its a very compact design, i love it! In the beginning i had lots of trouble with broken connections, but after adding an external antenna its works great.

Anonymous user

2 years ago

can you give me

rainman130

5 years ago

Hi! very nice! I was looking for a project with esp32-cam like this I upload the sketch on the board but i can't see the control joystick on the web page. I see the stream, the servo's control and the other, but not the joistick. any suggestion? thanks

KDPA

2 years ago

In order to see the joystick and control the robot you have to download and install iRobbie-A app on your iPhone/iPad https://apps.apple.com/us/app/irobbie-a/id1478706096?ls=1

Anonymous user

2 years ago

So this is not open source, this is advertising your $6 expensive app? Hmm... too bad.

Anonymous user

5 years ago

Thank you so mucho.excelent job. The App is for android? How can i test the car forward...

KDPA

2 years ago

So far the app is available only for iOS devices.

Anonymous user

5 years ago

Controlling the robot through internet can it be done without a router..?

KDPA

2 years ago

Actually, the code supports both modes: with and without router. To switch between these modes you can comment lines in the code or just press the reset button on ESP32-CAM

Anonymous user

2 years ago

Hi! The code is made in such a way that ist opens an WiFi Access-point (AP). So yes: no router required! You just connect your mobile device to the robot WiFi AP.

eco13

5 years ago

Cool solution & good tutorial... Question about remote pilot: What is exactly the role of the Robbie app? only available on iPhone? The html / javascript page is not self sufficient? is it for the video window, for wifi connectivity? What possibility for piloting from Android, or from raspberry? Cordially yours

KDPA

2 years ago

Hello, Thank you for your interest to my project! The iRobbie-A app provides a user friendly interface to work with various controllers, including ESP32-CAM. For example, you can zoom in on the video stream while the joystick is still in its original place and size. We are working on adding other functions in the app. So far the app is available only for iOS devices.

Anonymous user

5 years ago

Hi! Nice project, thanks for sharing it! I uploaded the code, works nicely. But some questions arise: 1. why do you first connect to WiFi and then open a WiFi Access Point? 2. if I connect to the WiFI AP and go to IP 192.168.4.1 I can see your GUI, I can stream the video, use the servo and the flash light. But I do not see the 2D-slider for the motors (the grey circle with the red inner one). I do not find that in your code, either. May you help me with that? Thanks a lot! - fabqu

KDPA

2 years ago

Hello, Thank you for your interest to my project! Actually the robot connects to your WiFi networks and doesn't create a WiFi Access Point. In order to control the robot you have to download and install iRobbie-A app on your iPhone https://apps.apple.com/us/app/irobbie-a/id1478706096?ls=1

Anonymous user

2 years ago

Hi! Thanks for the reply. Can't you just add the joystick to the web-application as well? We want to use that software for kids in our labs: mint-labs-regensburg.de And: yes, it opens up a WiFi Access point! After like 10 seconds being connected to the WiFi Router, it disconnects and opens up the Access point ;) EDIT: I don't have an Apple device, so the App is no solution for me. Alse the MINT-Labs do not have an iPad/iPhone.