Compare commits

...

15 Commits

Author SHA1 Message Date
365d4afdfa New Code for Arduino 2025-01-24 13:41:42 +00:00
f987ab6638 Edit Readme 2025-01-23 12:13:32 +00:00
9782c7787c Edit Readme 2025-01-23 12:11:47 +00:00
23550d8a7f Edit Readme 2025-01-23 12:11:06 +00:00
c28328cfc3 Edit Readme 2025-01-23 11:48:24 +00:00
e77bdbba98 Merge branch 'master' of https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit 2025-01-23 11:47:26 +00:00
3e419a4c10 Edit Readme 2025-01-23 11:47:19 +00:00
8b309520f6 Dateien nach "images" hochladen 2025-01-23 11:46:32 +00:00
994b46127f Edit Readme 2025-01-23 11:44:58 +00:00
2292a65059 Edit Readme 2025-01-23 11:42:37 +00:00
d200e53e11 Edit Readme 2025-01-23 11:40:54 +00:00
fac9755caf Edit Readme 2025-01-23 11:39:10 +00:00
e3f20a33cc Merge branch 'master' of https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit 2025-01-23 11:34:11 +00:00
a3066003f2 Added new images 2025-01-23 11:33:58 +00:00
9fa25b41ba Added new images 2025-01-23 11:33:31 +00:00
3 changed files with 55 additions and 17 deletions

View File

@ -7,6 +7,7 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
- Bilderkennung mit dem Grove Vision AI-Modul
- Verbindung zu einem Wi-Fi-Netzwerk
- Übertragung der Erkennungsdaten an einen MQTT-Broker
- Notification an Telegram Bot bei Gesichtserkennung
---
@ -39,7 +40,7 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
- Ö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.
2. Lade den Sketch `vision-ai.ino` in die Arduino IDE.
### 4. Wi-Fi und MQTT konfigurieren
- Ändere folgende Zeilen im Sketch:
@ -56,7 +57,7 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
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.
4. Erkennungsdaten werden bei erfolgreicher Bilderkennung an das MQTT-Topic `/vision_ai/data` gesendet.
### Beispiel einer MQTT-Nachricht
```json
@ -85,6 +86,19 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
- **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

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -2,7 +2,6 @@
// Erstellungsdatum: 22.01.2025
// Hardware: Vision AI V2 Kit
#include <Seeed_Arduino_SSCMA.h>
#include <WiFi.h>
#include <PubSubClient.h>
@ -14,7 +13,6 @@ const char* password = "DEIN_WIFI_PASSWORT";
// MQTT-Broker-Zugangsdaten
const char* mqtt_server = "DEINE_MQTT_BROKER_ADRESSE";
const char* mqtt_topic = "/vision_ai/data";
WiFiClient espClient;
PubSubClient client(espClient);
SSCMA AI;
@ -77,27 +75,53 @@ void loop() {
mqttMessage += ",\"postprocess\":" + String(AI.perf().postprocess) + "},";
mqttMessage += "\"boxes\": [";
bool validBoxFound = false; // Prüfen, ob mindestens ein gültiger Box-Eintrag existiert
for (int i = 0; i < AI.boxes().size(); i++) {
mqttMessage += "{\"target\":\"" + String(AI.boxes()[i].target) + "\",";
mqttMessage += "\"score\":" + String(AI.boxes()[i].score) + ",";
mqttMessage += "\"x\":" + String(AI.boxes()[i].x) + ",";
mqttMessage += "\"y\":" + String(AI.boxes()[i].y) + ",";
mqttMessage += "\"w\":" + String(AI.boxes()[i].w) + ",";
mqttMessage += "\"h\":" + String(AI.boxes()[i].h) + "},";
if (AI.boxes()[i].score > 50) { // Bedingung: Nur bei Score > 50 verarbeiten
validBoxFound = true;
Serial.print("Box[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.boxes()[i].target);
Serial.print(", score=");
Serial.print(AI.boxes()[i].score);
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);
// Box-Daten zur MQTT-Nachricht hinzufügen
mqttMessage += "{\"target\":\"" + String(AI.boxes()[i].target) + "\",";
mqttMessage += "\"score\":" + String(AI.boxes()[i].score) + ",";
mqttMessage += "\"x\":" + String(AI.boxes()[i].x) + ",";
mqttMessage += "\"y\":" + String(AI.boxes()[i].y) + ",";
mqttMessage += "\"w\":" + String(AI.boxes()[i].w) + ",";
mqttMessage += "\"h\":" + String(AI.boxes()[i].h) + "},";
}
}
if (AI.boxes().size() > 0) {
if (validBoxFound) {
mqttMessage.remove(mqttMessage.length() - 1); // Letztes Komma entfernen
}
mqttMessage += "]}";
Serial.println("MQTT-Nachricht: " + mqttMessage);
// Nur senden, wenn mindestens eine Box mit Score > 50 gefunden wurde
if (validBoxFound) {
Serial.println("MQTT-Nachricht: " + mqttMessage);
// MQTT-Nachricht senden
if (client.publish(mqtt_topic, mqttMessage.c_str())) {
Serial.println("Daten erfolgreich an MQTT gesendet!");
// MQTT-Nachricht senden
if (client.publish(mqtt_topic, mqttMessage.c_str())) {
Serial.println("Daten erfolgreich an MQTT gesendet!");
} else {
Serial.println("Fehler beim Senden der MQTT-Daten.");
}
} else {
Serial.println("Fehler beim Senden der MQTT-Daten.");
Serial.println("Keine Boxen mit Score > 50 gefunden. Keine Daten gesendet.");
}
}
}