Skip to content

Commit 64bfbb4

Browse files
committed
Add full architecture documentation and link it into README
- Added complete architecture.md with Mermaid diagram, component descriptions, and main application workflow - Linked architecture.md from README for easier navigation - Updated README layout to reflect polished project structure - Ensured documentation matches the multi-component ESP-IDF C++ architecture - Improves clarity
1 parent d38afdc commit 64bfbb4

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# ccm-esp32-vision-node
22

3+
![ESP-IDF](https://img.shields.io/badge/ESP--IDF-C%2B%2B%20project-orange)
4+
![Platform](https://img.shields.io/badge/Platform-ESP32--S3-blue)
5+
![Language](https://img.shields.io/badge/Language-C%2B%2B17-purple)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
7+
38
Embedded camera node for **ESP32-S3** with a modular C++ architecture for real-time computer vision.
49
This project demonstrates professional embedded CV engineering: camera bring-up, modular pipelines,
510
and efficient processing on low-power microcontrollers.
@@ -33,6 +38,7 @@ and efficient processing on low-power microcontrollers.
3338
---
3439

3540
## 🧱 Project Architecture
41+
For a detailed component diagram and explanation, see [docs/architecture.md](docs/architecture.md).
3642

3743
```
3844
ccm-esp32-vision-node/
@@ -54,6 +60,22 @@ ccm-esp32-vision-node/
5460

5561
---
5662

63+
## 🧪 Tested / Target Environment
64+
65+
This project is being developed and tested with:
66+
67+
- **Chip:** ESP32-S3
68+
- **SDK:** ESP-IDF (Linux / WSL)
69+
- **Host environment:** Windows 10 + WSL Ubuntu
70+
- **Tooling:** VS Code, `idf.py`, CMake
71+
72+
Planned hardware targets include:
73+
74+
- ESP32-S3 dev boards with PSRAM
75+
- Camera modules based on OV2640 / OV5640
76+
77+
---
78+
5779
## 🖥️ Getting Started (ESP-IDF)
5880

5981
### 1. Install ESP-IDF

docs/architecture.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Architecture – ccm-esp32-vision-node
2+
3+
This project is organised as a set of ESP-IDF components to keep camera I/O,
4+
processing, and streaming responsibilities cleanly separated.
5+
6+
```mermaid
7+
flowchart LR
8+
A[CameraNode<br/>components/camera_node] --> B[CvPipeline<br/>components/cv_pipeline]
9+
B --> C[StreamServer<br/>components/stream_server]
10+
B --> D[UART / Logging<br/>components/utils]
11+
```
12+
13+
---
14+
15+
## Components
16+
17+
### **CameraNode**
18+
Owns camera configuration and frame acquisition via the `esp32-camera` managed component.
19+
Responsible for:
20+
- camera pin configuration
21+
- sensor initialization
22+
- frame buffer acquisition & release
23+
- controlling resolution, format, grab mode
24+
25+
---
26+
27+
### **CvPipeline**
28+
Processes frames (grayscale, thresholding, ROI, simple filters).
29+
Designed to be modular so stages can be swapped or reordered.
30+
Later this will include:
31+
- basic preprocessing
32+
- simple blob detection
33+
- region masking
34+
- profiling hooks
35+
36+
---
37+
38+
### **StreamServer** *(planned)*
39+
Exposes frames over Wi-Fi, either as:
40+
- MJPEG HTTP stream
41+
- Raw frame endpoint
42+
- Debug overlay with FPS
43+
44+
Useful for edge monitoring and remote debugging.
45+
46+
---
47+
48+
### **Utils / Drivers**
49+
Provides:
50+
- lightweight logging
51+
- timing & FPS measurement
52+
- board-specific pin setup
53+
- reusable helpers
54+
55+
This keeps noise out of the main components.
56+
57+
---
58+
59+
## Main Application
60+
61+
The `firmware/main` app wires all components together:
62+
63+
1. Initialize the camera
64+
2. Capture frames in a loop
65+
3. Pass frames into `CvPipeline`
66+
4. Forward processed frames or metadata to `StreamServer` *(when implemented)*
67+
5. Output timing/debug info via UART
68+
69+
This layered structure mirrors real-world embedded vision systems and keeps the project modular and maintainable.

0 commit comments

Comments
 (0)