Example for ESP32 TimerCam rebuilt using ESPP to stream video over the network
It uses RTSP + RTP (over UDP) to perform real-time streaming of the camera data over the network to multiple clients.
rtsp_client_server_compressed.mp4
To facilitate easy connection to the camera, it also runs a mDNS server to advertise the camera's IP address / port that the RTSP server is running on.
Table of Contents
You must first program your hardware. Afterwards, you can configure it via a USB connection using its built-in CLI.
The ESP32-TimerCam will require one-time programming to function.
Download the release programmer
executable from the latest releases
page for windows
,
macos
, or linux
- depending on which computer you want to use to perform the
one-time programming.
- Download the programmer
- Unzip it
- Double click the
exe
(if windows), or open a terminal and execute it from the command line./camera-streamer_programmer_v2.0.0_macos.bin
.
To configure it, simply connect it to your computer via USB and open the serial
port in a terminal (e.g. screen
, PuTTY
, etc.) at 115200 baud. Once there,
you can use it as you would any other CLI - and the help
command will provide
info about the commands available.
Any SSID/Password you set will be securely saved in the ESP32-TimerCam's NVS, which is managed by the ESP-IDF WiFi subsystem.
sta> help
Commands available:
- help
This help message
- exit
Quit the session
- log <verbosity>
Set the log verbosity for the wifi sta.
- connect
Connect to a WiFi network with the given SSID and password.
- connect <ssid> <password>
Connect to a WiFi network with the given SSID and password.
- disconnect
Disconnect from the current WiFi network.
- ssid
Get the current SSID (Service Set Identifier) of the WiFi connection.
- rssi
Get the current RSSI (Received Signal Strength Indicator) of the WiFi connection.
- ip
Get the current IP address of the WiFi connection.
- connected
Check if the WiFi is connected.
- mac
Get the current MAC address of the WiFi connection.
- bssid
Get the current BSSID (MAC addressof the access point) of the WiFi connection.
- channel
Get the current WiFi channel of the connection.
- config
Get the current WiFi configuration.
- scan <int>
Scan for available WiFi networks.
- memory
Display minimum free memory.
- battery
Display the current battery voltage.
If you wish to modify / recompile the code, you will need to set up your development environment to be able to build and flash your target hardware.
This project is an ESP-IDF project, currently ESP-IDF v.5.4.
For information about setting up ESP-IDF v5.4
, please see the official
ESP-IDF getting started
documentation.
Build the project and flash it to the board, then run monitor tool to view serial output:
idf.py -p PORT flash monitor
(Replace PORT with the name of the serial port to use.)
(To exit the serial monitor, type Ctrl-]
.)
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
This sample is designed to run on the ESP32 TimerCam (Amazon Link).
The ESP32 TimerCam has the following specs:
- 8MB PSRAM
- 4MB flash
- OV3660 image sensor (3MP, 66.5 DFOV), (8-/10-Bit RAW, RGB, and YCbCr output, compression), XCLK frequency: 10 MHz
- SH1.0-2P Battery Interface
- I/O: LED, Button
- RTC (BM8563)
- Battery
Camera Pin | ESP32 GPIO Number |
---|---|
RESET | IO15 |
XCLK | IO27 |
VSYNC | IO22 |
PCLK | IO21 |
HREF | IO26 |
SIOC | IO23 |
SIOD | IO25 |
D0 | IO32 |
D1 | IO35 |
D2 | IO34 |
D3 | IO5 |
D4 | IO39 |
D5 | IO18 |
D6 | IO36 |
D7 | IO19 |
From their documentation...
RTC Pin | ESP32 GPIO Number |
---|---|
SCL | IO13 |
SDA | IO4 |
From their actual code...
RTC Pin | ESP32 GPIO Number |
---|---|
SCL | IO14 |
SDA | IO12 |
Battery Pin | ESP32 GPIO Number |
---|---|
ADC | IO38 |
Output Hold | IO33 |
I/O Function | ESP32 GPIO Number |
---|---|
LED | IO2 |
Button | IO37 |