Compare commits
7 Commits
8b309520f6
...
master
Author | SHA1 | Date | |
---|---|---|---|
365d4afdfa | |||
f987ab6638 | |||
9782c7787c | |||
23550d8a7f | |||
c28328cfc3 | |||
e77bdbba98 | |||
3e419a4c10 |
@ -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
|
||||
@ -87,6 +88,8 @@ Dieses Projekt verbindet das Vision AI V2 Kit mit einem ESP32-S3 Mikrocontroller
|
||||
|
||||
## 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">
|
||||
@ -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/grove-vision-ai-v2-kit.jpg">
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Autor
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user