Compare commits

...

7 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
2 changed files with 46 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 - Bilderkennung mit dem Grove Vision AI-Modul
- Verbindung zu einem Wi-Fi-Netzwerk - Verbindung zu einem Wi-Fi-Netzwerk
- Übertragung der Erkennungsdaten an einen MQTT-Broker - Ü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: - Öffne den Bibliotheksmanager in der Arduino IDE und suche nach:
- `Seeed_Arduino_SSCMA` - `Seeed_Arduino_SSCMA`
- `PubSubClient` - `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 ### 4. Wi-Fi und MQTT konfigurieren
- Ändere folgende Zeilen im Sketch: - Ä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. 1. Lade den Sketch auf das XIAO ESP32-S3 hoch.
2. Öffne den seriellen Monitor in der Arduino IDE, um Debug-Informationen zu sehen. 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. 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 ### Beispiel einer MQTT-Nachricht
```json ```json
@ -87,6 +88,8 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
## Bilder ## 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-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/grove-vision-ai-v2-board.jpg">
@ -94,6 +97,8 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
<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/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"> <img src="https://git.unixweb.net/unixweb/grove-vision-ai-v2-kit/raw/branch/master/images/grove-vision-ai-v2-kit.jpg">
--- ---
## Autor ## Autor

View File

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