# dfrobot/dfrobot_huskylensv2 architecture

> Architecture diagram of the GitHub repository dfrobot/dfrobot_huskylensv2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dfrobot/dfrobot_huskylensv2
- Repository: https://github.com/dfrobot/dfrobot_huskylensv2

## Overview

HuskyLens V2 is a device-control library for Arduino-compatible boards, with parallel Python drivers. The principal workflow is a sketch or Python program issuing API requests, the driver exchanging protocol frames with the vision device, and parsed recognition results becoming available to the caller. The documented API also covers learning and knowledge, display and media operations, algorithm parameters, multi-algorithm execution, and agent features. The map reflects sampled implementation and README claims; unsampled subsystem wiring is not inferred.

Main entry points: [`DFRobot_HuskylensV2.cpp`](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/DFRobot_HuskylensV2.cpp) (Device API), [`ProtocolV2.cpp`](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp) (Protocol operations), [`python/pinpong/dfrobot_huskylensv2.py`](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/pinpong/dfrobot_huskylensv2.py) (PinPong driver), [`python/smbus2/dfrobot_huskylensv2.py`](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/smbus2/dfrobot_huskylensv2.py) (SMBus driver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_arduino["Arduino driver"]
  node_arduino_api["Device API"]
  node_result_cache[("Result cache")]
end

subgraph group_protocol["Protocol and results"]
  node_protocol_core["Protocol operations<br/>[ProtocolV2.cpp]"]
  node_result_models["Recognition results<br/>[Result.cpp]"]
  node_algo_controls["Algorithm controls<br/>[ProtocolV2.cpp]"]
  node_learning_knowledge["Learning and knowledge<br/>[ProtocolV2.cpp]"]
  node_display_media["Display and media<br/>[ProtocolV2.cpp]"]
  node_params_multi["Parameters and multi-algo<br/>[ProtocolV2.cpp]"]
  node_agent_e2e["Agent and E2E<br/>[ProtocolV2.cpp]"]
end

subgraph group_python["Python drivers"]
  node_pinpong_driver["PinPong driver"]
  node_smbus_driver["SMBus driver"]
end

subgraph group_extensions["Text validation"]
  node_xiaozhi_check["Prompt length check"]
end

node_sketch(("Arduino sketch"))
node_vision_device["HuskyLens V2"]
node_python_user(("Python program"))

node_sketch -->|"calls API"| node_arduino_api
node_arduino_api -->|"inherits protocol"| node_protocol_core
node_protocol_core -->|"transfers frames"| node_vision_device
node_protocol_core -->|"parses results"| node_result_models
node_arduino_api -->|"manages results"| node_result_cache
node_arduino_api -->|"exposes controls"| node_algo_controls
node_arduino_api -->|"exposes learning"| node_learning_knowledge
node_arduino_api -->|"exposes actions"| node_display_media
node_arduino_api -->|"exposes settings"| node_params_multi
node_arduino_api -->|"exposes agent features"| node_agent_e2e
node_protocol_core -->|"validates prompts"| node_xiaozhi_check
node_python_user -->|"calls API"| node_pinpong_driver
node_pinpong_driver -->|"writes I2C frames"| node_vision_device
node_python_user -->|"calls API"| node_smbus_driver
node_smbus_driver -->|"writes I2C frames"| node_vision_device

click node_arduino_api "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/DFRobot_HuskylensV2.cpp"
click node_protocol_core "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_result_models "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/Result.cpp"
click node_result_cache "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/DFRobot_HuskylensV2.cpp"
click node_algo_controls "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_learning_knowledge "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_display_media "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_params_multi "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_agent_e2e "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp"
click node_xiaozhi_check "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/XiaozhiTextCheck.cpp"
click node_pinpong_driver "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/pinpong/dfrobot_huskylensv2.py"
click node_smbus_driver "https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/smbus2/dfrobot_huskylensv2.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_arduino_api,node_result_cache toneBlue
class node_protocol_core,node_result_models,node_algo_controls,node_learning_knowledge,node_display_media,node_params_multi,node_agent_e2e toneAmber
class node_pinpong_driver,node_smbus_driver toneMint
class node_xiaozhi_check toneRose
class node_sketch,node_vision_device,node_python_user toneIndigo
```

## Components

### Arduino driver

- [Device API](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/DFRobot_HuskylensV2.cpp): `DFRobot_HuskylensV2.cpp`
- [Result cache](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/DFRobot_HuskylensV2.cpp): `DFRobot_HuskylensV2.cpp`

### Protocol and results

- [Protocol operations](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`
- [Recognition results](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/Result.cpp): `Result.cpp`
- [Algorithm controls](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`
- [Learning and knowledge](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`
- [Display and media](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`
- [Parameters and multi-algo](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`
- [Agent and E2E](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/ProtocolV2.cpp): `ProtocolV2.cpp`

### Python drivers

- [PinPong driver](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/pinpong/dfrobot_huskylensv2.py): `python/pinpong/dfrobot_huskylensv2.py`
- [SMBus driver](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/python/smbus2/dfrobot_huskylensv2.py): `python/smbus2/dfrobot_huskylensv2.py`

### Text validation

- [Prompt length check](https://github.com/dfrobot/dfrobot_huskylensv2/blob/master/XiaozhiTextCheck.cpp): `XiaozhiTextCheck.cpp`

### Other components

- **Arduino sketch**
- **HuskyLens V2**
- **Python program**

## Connections

- Arduino sketch → Device API: calls API (evidence: `README.md`)
- Device API → Protocol operations: inherits protocol
- Protocol operations → HuskyLens V2: transfers frames (evidence: `ProtocolV2.cpp`)
- Protocol operations → Recognition results: parses results (evidence: `ProtocolV2.cpp`)
- Device API → Result cache: manages results (evidence: `DFRobot_HuskylensV2.cpp`)
- Device API → Algorithm controls: exposes controls (evidence: `README.md`)
- Device API → Learning and knowledge: exposes learning (evidence: `README.md`)
- Device API → Display and media: exposes actions (evidence: `README.md`)
- Device API → Parameters and multi-algo: exposes settings (evidence: `README.md`)
- Device API → Agent and E2E: exposes agent features
- Protocol operations → Prompt length check: validates prompts (evidence: `ProtocolV2.cpp`)
- Python program → PinPong driver: calls API (evidence: `python/pinpong/dfrobot_huskylensv2.py`)
- PinPong driver → HuskyLens V2: writes I2C frames (evidence: `python/pinpong/dfrobot_huskylensv2.py`)
- Python program → SMBus driver: calls API (evidence: `python/smbus2/dfrobot_huskylensv2.py`)
- SMBus driver → HuskyLens V2: writes I2C frames (evidence: `python/smbus2/dfrobot_huskylensv2.py`)
