Skip to content

Video surveillance system using RP2040, W5100S and OV2640

This example aims to demonstrate how to implement simple security surveillance system. The camera can be controlled via Telegram Bot.

viktor

Published September 07, 2023

Video surveillance system using RP2040, W5100S and OV2640

Components

Hardware components

Software Apps and online services

Project description

Project summary

The "Ethernet" example from AsyncTelegram library was used as a basis for this project. "Capture" button was added to the keyboard to make a single shot. "Automode ON/OFF" buttons were added to enable/disable the ultrasound sensor.

When sensor is enabled, if there is any object within 1 meter (short distance was selected for test purposes), then camera automatically captures and sends image to the Telegram bot.

Video surveillance system using RP2040, W5100S and OV2640, Project summary

Libraries used in the project

  1. Arducam library: please pay attention to important note in main readme file.
  2. WebServer by Khoi Hoang
  3. AsyncTelegram2 by Tolentino Cotesta

Code explanation

Ethernet and Telegram bot related code:

For test purposes the board is assigned with static IP.

Telegram bot setup is done main setup() function:

Setup Function:

- The `setup()` function is the initialization routine.
- It initializes serial communication, I2C, SPI, camera, and Ethernet.
- It sets up the Telegram bot, reply keyboard, and inline keyboard.
- A welcome message is sent to the Telegram bot.
- `alarmStatusEE` is set to `false` initially.

Camera related functions

test_capture() Function:

- This function clears the FIFO (First In, First Out) flag of the camera and initiates a capture.

camCapture() Function:

- This function captures an image from the camera and sends it as an HTTP response with the appropriate content type and length.
- It reads the image data from the camera's FIFO buffer and sends it to the client.

i2c_init(), spi_init(), and camera_init() Functions:

- These functions initialize the I2C and SPI communication interfaces and set up the camera module.
- They perform various checks to ensure that the communication with the camera module is established correctly.

Main Loop

- The `loop()` function runs repeatedly.
- It handles incoming Telegram messages and manages the reply keyboard.
- It checks if the ultrasonic distance sensor detects an intruder and sends a capture requesto the Telegram bot.

Ultrasonic Distance Sensor:

- The code monitors the ultrasonic distance sensor to detect intruders.
- It calculates the distance and, if an intruder is detected, sends a message to the Telegram bot and captures an image.
- The ultrasonic sensor is controlled by the `triggerPort` and `echoPort` pins.

Demonstration

For full project demo, please refer to the video below:

Documents

Comments

Comments