This project is created for the Principles of Computer Organization course. The main idea is inspired by the war in Ukraine. Since the full-scale invasion, the kamikaze drones gained high popularity among both sides. Due to this, there is plenty of electronic warfare that disables the drones. Electronic warfare blocks signals from the operator, and the drone is lost without any information.
To prevent this, we had an idea to install an embedded board with a camera on a drone and develop a SoC that can detect movements, and direct the drone towards a specific goal. Currently, we use ESP32-CAM as a cheap development board. It has pretty low productivity but still can handle low-resolution video. In the future, with minor changes, more powerful boards can be used.
This project is dedicated to identifying moving targets with the help of ESP32-Cam. Full report you can find here.
Mentors:
- Danylo Sahaidak
- Bohdan Yavorivskiy
Members:
- Dmytro Shumskyi
- Yurii Sahaidak
- Marta Samoilenko
- Victor Muryn
- Board: ESP32-CAM
You can use any other ESP32 and Camera Module which is supported with esp32-camera library. Also ESP32 should have a PSRAM. To use other module change pins in components/Camera.config.h. Some of modules are already supported in this file (ESP32-CAM, ESP-EYE).
Project uses esp32-camera library, so use this command to install library.
git clone --recursive [email protected]:hellcastter/esp32-move-detect.git
Also you need to install esp-idf of version 4.4. You can find instructions here.
Open components/Camera.config.h and change settings to your own. You could change wifi credentials in file components/WifiCredits.c. Also, you might find useful to change settings in components/Camera.h. More about camera settings you can find here.
Also, do not forget to turn on PSRAM in idf.py menuconfig. Go to Component config -> ESP32-specific -> Support for external, SPI-connected RAM and turn it on.
After that you are ready to go. Build and flash code to your board using interface of Esp-IDF in VS Code or use command line interface of idf.py in your terminal.
idf.py build
idf.py -p PORT flash
idf.py monitor
In you terminal you will find IP address of your board. Open it in your browser. If you see only black screen, try to change settings in components/Camera.config.h.
There are 7 urls you can go:
-
/ - just video from the camera.
-
/simple - simple detection of movements
-
/simpleBox - simple detection of movements. Also draws a box around the detected object.
-
/average - average detection of movements (takes n frames and calculates average)
-
/averageBox - average detection of movements (takes n frames and calculates average). Also draws a box around the detected object.
-
/median - median detection of movements (takes n frames and calculates median)
-
/medianBox - median detection of movements (takes n frames and calculates median). Also draws a box around the detected object.