This is an old revision of the document!
Project Overview: This project consists of an internet-enabled camera system mounted on a dual-axis (Pan-Tilt) mechanical platform. It allows users to remotely control the camera's orientation through a web interface and capture high-resolution images stored locally on an SD card.
Purpose and Goal: The primary goal is to create a versatile monitoring tool that combines real-time low-latency video streaming with on-demand high-definition photography. By offloading mechanical control to a dedicated microcontroller, the system ensures smooth movement without interrupting the visual processing.
Module Descriptions
ESP32-CAM : Acts as the central processing unit. It hosts the Web Server, handles Wi-Fi connectivity, captures video frames via the OV2640 sensor, and manages the SD interface for file storage.
ATmega328P : Dedicated to hardware execution. It listens for commands via UART from the ESP32 and generates PWM signals to drive the servomotors. It also manages the 16×2 LCD for real-time telemetry.
Pan-Tilt Mechanism: Driven by two SG90 servomotors, providing vertical and horizontal movement.
I2C LCD Display: Provides immediate feedback on system status, such as the current IP address and coordinates.
The hardware implementation will use the following components:
- ESP32-CAM
- ATMega328P-Xmini
- OV2640: high resolution camera for esp32
- SG90 servo x 2
- QAPASS 1602A: 16 x 2 LCD
Arhitectura software a proiectului adoptă un model distributiv de tip Master-Slave, în care sarcinile de procesare intensivă (rețea, video, stocare) sunt complet separate de execuția fizică în timp real (control servo, afișaj).
Sistemul utilizează două medii de dezvoltare interconectate prin protocolul UART la o viteză stabilă de 38400 bps.
Acest modul gestionează interfața cu utilizatorul, fluxul video și stocarea locală. Inițializează un punct de acces Wi-Fi (Access Point) local și rulează un server HTTP asincron pe portul 80.
Gestionarea camerei (OV2640): Pentru a preveni supraîncălzirea cipurilor, frecvența ceasului hardware (XCLK) este redusă la 10MHz. Stream-ul video rulează nativ la rezoluție mică (QVGA) pentru frame-rate ridicat, trecând dinamic la rezoluție UXGA (HD) doar în momentul salvării pe cardul SD.
Optimizarea fluxului video: Pagina HTML transmisă clienților folosește un mecanism de feedback bazat pe evenimentul onload al imaginii. Spre deosebire de un timer rigid (setInterval), o nouă cerere de cadru (/jpg) este trimisă către server doar după ce cadrul anterior a fost complet descărcat. Acest lucru elimină aglomerarea buffer-ului HTTP și previne înghețarea sistemului.
Acest modul rulează o mașină de stări finite ce procesează asincron comenzile venite pe magistrala UART și controlează perifericele atașate.
Controlul Servomotoarelor: Folosește biblioteca Servo.h pentru a genera semnale PWM pe pinii 9 și 10. Mișcarea pe axele Pan și Tilt este implementată discret, în pași de 5 grade, cu limitare software strictă între pragurile 0° și 90° pentru a preveni blocarea mecanică a suportului.
Managementul Afișajului (I2C): Folosește biblioteca LiquidCrystal_I2C pentru a actualiza ecranul LCD. Pentru a evita pâlpâirea (flicker) ecranului, funcția updateLCD() rescrie doar valorile dinamice ale unghiurilor la coordonate fixe, curățând caracterele reziduale prin suprascrierea cu spații goale.
Schema fluxului de date (UART Protocol)
Comenzile transmise de la distanță sunt mapate direct pe caractere unice (1 Byte), reducând la minimum latența pe magistrală:
- U (Up) / D (Down) → Modifică unghiul pe axa Pan.
- L (Left) / R (Right) → Modifică unghiul pe axa Tilt.
- S (Snapshot) → Rămâne intern pe ESP32 pentru scrierea pe cardul SD (nu se trimite către ATmega).
Datasheets:
* ESP32-CAM: https://www.handsontec.com/dataspecs/module/ESP32-CAM.pdf
* ATMega328P-Xmini: https://ww1.microchip.com/downloads/en/devicedoc/50002659a.pdf
* OV2640 camera: https://www.uctronics.com/download/cam_module/OV2640DS.pdf?srsltid=AfmBOoo3vdFbGk7ETYZYiuJ8k7jHcNlunSU3DsBpVrOuNQln2gw7Lgb2
* SG90 servo: https://www.friendlywire.com/projects/ne555-servo-safe/SG90-datasheet.pdf
* QAPASS LCD: https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/5773/CN0295D%20other%20related%20document.pdf