# Vision AI V2 Kit mit MQTT und Wi-Fi

## Projektbeschreibung
Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller. Es ermöglicht die Verarbeitung von Bilderkennungsdaten mit dem Grove Vision AI-Modul und die Übertragung der Ergebnisse an einen MQTT-Broker über Wi-Fi.

### Features
- Bilderkennung mit dem Grove Vision AI-Modul
- Verbindung zu einem Wi-Fi-Netzwerk
- Übertragung der Erkennungsdaten an einen MQTT-Broker

---

## Voraussetzungen

### Hardware
- [Grove Vision AI V2 Kit](https://amzn.to/40v3AGM)
- [Seeed XIAO ESP32-S3] (https://www.seeedstudio.com/Grove-Vision-AI-V2-Kit-p-5852.html)

### Software
- Arduino IDE (empfohlen: Version 1.8 oder höher)
- Abhängigkeiten:
  - [Seeed_Arduino_SSCMA](https://github.com/Seeed-Studio/Seeed_Arduino_SSCMA)
  - [PubSubClient](https://github.com/knolleary/pubsubclient)

---

## Einrichtung

### 1. Programmierung des Grove Vision AI V2 Board 
 - [https://sensecraft.seeed.cc/ai/#/model](https://sensecraft.seeed.cc/ai/#/model) 
   Lade eines der Public AI Models auf das Board ohne dem ESP32S3 Board

### 2. Hardware aufbauen
- Stecke das XIAO ESP32-S3 auf das Vision AI V2 Kit.
- Verbinde die Stromversorgung über USB.

### 3. Software vorbereiten
1. Installiere die benötigten Bibliotheken:
   - Öffne den Bibliotheksmanager in der Arduino IDE und suche nach:
     - `Seeed_Arduino_SSCMA`
     - `PubSubClient`
2. Lade den Sketch `inference_wifi_mqtt.ino` in die Arduino IDE.

### 4. Wi-Fi und MQTT konfigurieren
- Ändere folgende Zeilen im Sketch:
  ```cpp
  const char* ssid = "DEIN_WIFI_SSID";
  const char* password = "DEIN_WIFI_PASSWORT";
  const char* mqtt_server = "DEINE_MQTT_BROKER_ADRESSE";
  ```
- Ersetze die Platzhalter durch deine Netzwerk- und MQTT-Zugangsdaten.

---

## Verwendung
1. Lade den Sketch auf das XIAO ESP32-S3 hoch.
2. Öffne den seriellen Monitor in der Arduino IDE, um Debug-Informationen zu sehen.
3. Prüfe, ob das Gerät erfolgreich mit Wi-Fi und dem MQTT-Broker verbunden ist.
4. Erkennungsdaten werden bei erfolgreicher Bilderkennung an das MQTT-Topic `vision_ai/data` gesendet.

### Beispiel einer MQTT-Nachricht
```json
{
  "perf": {
    "prepocess": 1,
    "inference": 21,
    "postprocess": 0
  },
  "boxes": [
    {
      "target": "0",
      "score": 66,
      "x": 104,
      "y": 76,
      "w": 97,
      "h": 138
    }
  ]
}
```

---

## Fehlerbehebung
- **Keine Verbindung zu Wi-Fi:** Stelle sicher, dass SSID und Passwort korrekt sind.
- **MQTT-Daten werden nicht gesendet:** Prüfe die Broker-Adresse und die Verbindung mit einem MQTT-Client wie MQTT Explorer.

## Bilder 

<img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/Vision-AI-V2-Kit-NodeRed-Flow.png">

<img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/grove-vision-ai-camera.jpg">

<img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/grove-vision-ai-v2-board.jpg">

<img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/seeed-studio-esp32s3.jpg">

<img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/grove-vision-ai-v2-kit.jpg">


---

## Autor
**Joachim Hummel**

### Datum
22.01.2025

