This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:tudor.brandibur [2026/05/16 23:27] tudor.brandibur [Bibliografie/Resurse] |
pm:prj2026:bianca.popa1106:tudor.brandibur [2026/05/25 00:22] (current) tudor.brandibur [Software Design] |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| ===== General Description ===== | ===== General Description ===== | ||
| - | + | {{ :pm:prj2026:bianca.popa1106:pm.drawio.png |}} | |
| - | + | ||
| Module Descriptions | Module Descriptions | ||
| Line 42: | Line 40: | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | The project's software architecture adopts a distributed Master-Slave model, where intensive processing tasks (networking, video, storage) are completely separated from real-time physical execution (servo control, display). | ||
| - | <note tip> | + | The system utilizes two development environments interconnected via the UART protocol at a stable speed of 38400 bps. |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| - | </note> | + | |
| - | ===== Rezultate Obţinute ===== | + | === A. ESP32-CAM Module (Master / Web Server) === |
| - | <note tip> | + | This module manages the user interface, video stream, and local storage. It initializes a local Wi-Fi Access Point and runs an asynchronous HTTP server on port 80. |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| - | ===== Concluzii ===== | + | **Camera Management (OV2640)**: To prevent chip overheating, the hardware clock frequency (XCLK) is reduced to 10MHz. The video stream runs natively at a low resolution (QVGA) for a high frame-rate, dynamically switching to UXGA (HD) resolution only when saving to the SD card. |
| - | ===== Download ===== | + | **Video Stream Optimization**: The HTML page sent to clients uses a feedback mechanism based on the image's onload event. Unlike a rigid timer (setInterval), a new frame request (/jpg) is sent to the server only after the previous frame has been fully downloaded. This eliminates HTTP buffer congestion and prevents system freezing. |
| - | <note warning> | + | === B. ATmega328P Module (Slave / Hardware Controller)=== |
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
| - | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | This module runs a finite state machine that asynchronously processes incoming commands on the UART bus and controls the attached peripherals. |
| - | </note> | + | |
| - | ===== Jurnal ===== | + | **Servo Motor Control**: It uses the Servo.h library to generate PWM signals on pins 9 and 10. Movement on the Pan and Tilt axes is implemented discretely, in 5-degree steps, with strict software limitations between the 0° and 90° thresholds to prevent mechanical jamming of the mount. |
| - | <note tip> | + | **Display Management (I2C)**: It uses the LiquidCrystal_I2C library to update the LCD screen. To avoid screen flickering, the updateLCD() function rewrites only the dynamic angle values at fixed coordinates, clearing residual characters by overwriting them with blank spaces. |
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
| - | </note> | + | |
| - | ===== Bibliografie/Resurse ===== | + | Data Flow Diagram (UART Protocol) |
| - | Datasheets: | + | Remotely transmitted commands are mapped directly onto unique characters (1 Byte), minimizing bus latency: |
| - | - ESP32-CAM: [[https://www.handsontec.com/dataspecs/module/ESP32-CAM.pdf]] | + | - U (Up) / D (Down) -> Modifies the angle on the Pan axis. |
| + | |||
| + | - L (Left) / R (Right) -> Modifies the angle on the Tilt axis. | ||
| + | |||
| + | - S (Snapshot) -> Remains internal to the ESP32 for writing to the SD card (it is not sent to the ATmega). | ||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:signal-2026-05-25-001201.jpeg?600 |}} | ||
| + | {{ :pm:prj2026:bianca.popa1106:img_6435.jpg?600 |}} | ||
| + | {{ :pm:prj2026:bianca.popa1106:img_6437.jpg?600 |}} | ||
| + | {{ :pm:prj2026:bianca.popa1106:img_6436.jpg?600 |}} | ||
| + | {{ :pm:prj2026:bianca.popa1106:img_6438.jpg?600 |}} | ||
| + | ===== Concluzii ===== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Bibliografie/Resurse ===== | ||
| - | - ATMega328P-Xmini: [[https://ww1.microchip.com/downloads/en/devicedoc/50002659a.pdf]] | + | Datasheets: |
| - | - OV2680 | + | * 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]] | ||