This project implements a Smart Wi-Fi Camera Node using the ESP32-CAM module. The system captures real-time images/video and hosts a web server so users can monitor the live feed remotely through a browser or mobile device.
The project demonstrates:
- IoT-based surveillance
- Embedded systems programming
- Wi-Fi communication
- Real-time video streaming
- Camera interfacing using ESP32-CAM
- Real-time video streaming using ESP32-CAM
- Wi-Fi enabled remote monitoring
- Web server hosted on ESP32
- OLED display for system status
- Low-cost and compact IoT surveillance system
- UART programming using FT232R USB-to-Serial module
- MJPEG streaming over HTTP
| Component | Quantity | Purpose |
|---|---|---|
| ESP32-CAM | 1 | Main controller and camera module |
| OV2640 Camera | 1 | Image/video capture |
| FT232R USB-to-Serial Converter | 1 | Uploading code to ESP32-CAM |
| OLED Display SSD1306 (0.96") | 1 | Display system status |
| Breadboard | 1 | Prototyping |
| Jumper Wires | As needed | Connections |
-
Arduino IDE
-
ESP32 Board Package
-
FTDI Drivers
-
Required Arduino Libraries:
WiFi.hesp_camera.hWire.hAdafruit_GFXAdafruit_SSD1306
Download and install Arduino IDE: https://www.arduino.cc/en/software
Open:
File > Preferences
Add this URL inside Additional Boards Manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.jsonNow open:
Tools > Board > Boards Manager
Search:
ESP32Install:
esp32 by Espressif SystemsGo to:
Tools > Board > AI Thinker ESP32-CAMSet:
Upload Speed: 115200
Flash Frequency: 40MHz
Partition Scheme: Huge APP| FT232R Pin | ESP32-CAM Pin |
|---|---|
| VCC (3.3V) | 3.3V |
| GND | GND |
| TX | U0R (GPIO3 / RX) |
| RX | U0T (GPIO1 / TX) |
| GND | IO0 |
IMPORTANT:
- Set FT232R to 3.3V
- Connect IO0 to GND while uploading code
- Remove IO0 from GND after upload and reset board
| OLED Pin | ESP32-CAM Pin |
|---|---|
| SDA | GPIO13 |
| SCL | GPIO14 |
| VCC | 3.3V |
| GND | GND |
The firmware performs the following operations:
- Initializes OLED display
- Initializes OV2640 camera
- Connects ESP32 to Wi-Fi
- Starts HTTP web server
- Captures image frames
- Streams MJPEG video to browser
- Displays IP address on OLED
After uploading the code:
- Open Serial Monitor
- Wait for Wi-Fi connection
- Note the IP address shown on OLED/Serial Monitor
- Open browser and visit:
http://<ESP32_IP_ADDRESS>Example:
http://192.168.1.100You can now:
- View live stream
- Capture images
- Monitor remotely
Camera → Frame Buffer → HTTP Server → Wi-Fi → Browser| Specification | Details |
|---|---|
| Processor | Dual-core Xtensa LX6 |
| Clock Speed | 80MHz – 240MHz |
| Wi-Fi | 802.11 b/g/n |
| Bluetooth | BLE 4.2 |
| Camera | OV2640 2MP |
| Resolution | Up to 2048×1564 |
| Output Format | JPEG |
| RAM | 520KB + PSRAM |
| Operating Voltage | 5V |
- Smart surveillance
- Home security
- Visitor monitoring
- Industrial monitoring
- IoT remote monitoring
- Smart agriculture
- Embedded vision systems
- Limited GPIO pins
- Requires stable power supply
- Limited RAM for heavy AI workloads
- Heating during continuous streaming
- Motion detection
- Face recognition
- Cloud integration
- Telegram/Email alerts
- Mobile app integration
- AI-based object detection
Use stable 5V power supply with sufficient current.
- Check camera ribbon cable
- Ensure correct board selected
- IO0 must be connected to GND during upload
- Press RESET button after connecting IO0
- Verify SSID and password
- Ensure 2.4GHz Wi-Fi network
#include "esp_camera.h"
#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>- ESP32 Official Documentation
- Arduino ESP32 Core
- Adafruit SSD1306 Library
- ESP32 CameraWebServer Example
This project is open-source and available under the MIT License.