Provides comprehensive reference for using the Grove Vision AI Module V2 with Seeed Studio XIAO microcontrollers. Covers WiseEye2 HX6538 processor (dual Cortex-M55 + Ethos-U55 NPU), I2C communication via Grove cable, CSI camera interface, SenseCraft AI platform, YOLOv5/v8 and MobileNet model deployment, and Seeed_Arduino_SSCMA library usage. Includes Arduino and TinyGo setup, wiring, pin usage, and code examples. Use when integrating AI vision capabilities such as object detection, image classification, or person detection on any XIAO board. Keywords: XIAO, Grove, Vision AI, V2, AI, ML, machine learning, object detection, YOLO, YOLOv5, YOLOv8, MobileNet, camera, NPU, Ethos-U55, Cortex-M55, WiseEye2, SenseCraft, SSCMA, I2C, inference, image classification, person detection.
Provides comprehensive reference for using the Grove Vision AI Module V2 with Seeed Studio XIAO microcontrollers.
| Parameter | Value |
|---|---|
| Type | Standalone AI vision module (MCU-based) |
| Processor | WiseEye2 HX6538 |
| CPU | Dual-core Arm Cortex-M55 |
| NPU | Arm Ethos-U55 |
| Camera Interface | CSI (22-pin FPC) |
| Supported Cameras | OV5647 series (62°, 67°, 160° FOV) |
| Microphone | PDM digital microphone (onboard) |
| Storage | SD card slot |
| USB | Type-C (for flashing/SenseCraft) |
| Grove Interface | I2C (4-pin) |
| USB-Serial Chip | CH343 |
| AI Frameworks | TensorFlow, PyTorch |
| Supported Models | MobileNet V1/V2, EfficientNet-lite, YOLOv5, YOLOv8 |
| Board | Status | Notes |
|---|---|---|
| All XIAO boards | ✅ | Via Grove I2C connector |
| XIAO ESP32 series | ✅ | Best for wireless features |
Also compatible with Arduino boards, Raspberry Pi, and ESP dev boards via I2C.
XIAO Pin | Accessory Function | Protocol
------------|--------------------------|----------
SDA (D4) | I2C Data | I2C (Grove 4-pin cable)
SCL (D5) | I2C Clock | I2C (Grove 4-pin cable)
3V3 | Power | Power
GND | Ground | Power
Note: The Grove Vision AI V2 connects via a Grove 4-pin cable — it does NOT plug directly onto the XIAO. It is a standalone module with its own MCU.
Note: I2C is a shared bus. The Vision AI V2 can coexist with other I2C devices as long as there are no address conflicts.
| Parameter | Value |
|---|---|
| Power Source (via XIAO) | 3.3V via Grove connector |
| Power Source (standalone) | 5V via USB-C |
# Seeed_Arduino_SSCMA library:
# https://github.com/Seeed-Studio/Seeed_Arduino_SSCMA
#
# Install via Arduino Library Manager: search "Seeed_Arduino_SSCMA"
# Or download ZIP from GitHub and install manually
# CH343 USB Driver (for direct USB connection to Vision AI V2):
# Windows: https://files.seeedstudio.com/wiki/grove-vision-ai-v2/res/CH343SER.EXE
# macOS: https://files.seeedstudio.com/wiki/grove-vision-ai-v2/res/CH341SER_MAC.ZIP
#include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>
SSCMA AI;
void setup() {
Serial.begin(115200);
Wire.begin();
// Initialize the AI module via I2C
AI.begin();
Serial.println("Grove Vision AI V2 initialized");
}
#include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>
SSCMA AI;
void setup() {
Serial.begin(115200);
while (!Serial) delay(100);
Wire.begin();
AI.begin();
Serial.println("Grove Vision AI V2 — Object Detection");
Serial.println("Waiting for inference results...");
}
void loop() {
// Request inference from the AI module
if (!AI.invoke()) {
// Process detected objects
Serial.print("Detections: ");
Serial.println(AI.boxes().size());
for (int i = 0; i < AI.boxes().size(); i++) {
Serial.print(" Object ");
Serial.print(i);
Serial.print(": score=");
Serial.print(AI.boxes()[i].score);
Serial.print(" target=");
Serial.print(AI.boxes()[i].target);
Serial.print(" x=");
Serial.print(AI.boxes()[i].x);
Serial.print(" y=");
Serial.print(AI.boxes()[i].y);
Serial.print(" w=");
Serial.print(AI.boxes()[i].w);
Serial.print(" h=");
Serial.println(AI.boxes()[i].h);
}
}
delay(100);
}
#include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>
SSCMA AI;
void setup() {
Serial.begin(115200);
while (!Serial) delay(100);
Wire.begin();
AI.begin();
Serial.println("Grove Vision AI V2 — Classification");
}
void loop() {
if (!AI.invoke()) {
for (int i = 0; i < AI.classes().size(); i++) {
Serial.print("Class ");
Serial.print(AI.classes()[i].target);
Serial.print(": score=");
Serial.println(AI.classes()[i].score);
}
}
delay(500);
}
If the module becomes unresponsive:
we2_iic_bootloader_recoverThe Seeed_Arduino_SSCMA library is Arduino-only. For TinyGo, communicate with the Vision AI V2 directly via I2C:
package main
import (
"machine"
"time"
"fmt"
)
const visionAIAddr = 0x62 // Default I2C address (verify from SSCMA docs)
func main() {
i2c := machine.I2C0
i2c.Configure(machine.I2CConfig{
SDA: machine.SDA_PIN,
SCL: machine.SCL_PIN,
Frequency: 400000,
})
println("Grove Vision AI V2 — TinyGo I2C")
buf := make([]byte, 64)
for {
// Read inference results from the AI module
// The exact I2C protocol depends on the SSCMA firmware version
err := i2c.Tx(uint16(visionAIAddr), []byte{0x00}, buf)
if err != nil {
fmt.Printf("I2C error: %s\n", err.Error())
} else {
// Parse response according to SSCMA protocol
// See: https://github.com/Seeed-Studio/Seeed_Arduino_SSCMA
fmt.Printf("Raw data: %v\n", buf[:16])
}
time.Sleep(500 * time.Millisecond)
}
}
Note: TinyGo support is limited. The SSCMA I2C protocol is complex — refer to the Seeed_Arduino_SSCMA source code for the I2C command/response format. Arduino is the recommended platform for this module.
| Parameter | Value |
|---|---|
| SDA Pin | D4 (XIAO SDA) |
| SCL Pin | D5 (XIAO SCL) |
| Speed | Up to 400kHz |
| Connection | Grove 4-pin cable |
| Protocol | SSCMA I2C protocol |
| Interface | Purpose |
|---|---|
| CSI (22-pin FPC) | Camera connection |
| USB-C | Firmware flashing, SenseCraft AI |
| SD card slot | Model storage |
| PDM microphone | Audio input |
| Grove I2C | Communication with host MCU |
1. Train model (TensorFlow/PyTorch) or use pre-trained
2. Convert to TFLite/ONNX format
3. Deploy via SenseCraft AI (USB-C) or custom firmware
4. Vision AI V2 runs inference on-device
5. Results sent to XIAO via I2C (SSCMA protocol)