Objekterkennung mit Adafruit – OpenMV Cam H7 + Buzzer

Objekterkennung mit Adafruit – OpenMV Cam H7 + Buzzer

Objekterkennung mit Adafruit: OpenMV Cam H7 + Buzzer

Ein schneller Einstieg in Machine Vision ohne komplizierte KI-Toolchains: Die OpenMV Cam H7 erkennt farbige Objekte, und ein Buzzer gibt akustisches Feedback. Perfekt für Maker-Workshops, Schulprojekte und Prototyping.

Benötigte Komponenten (Adafruit, nur SKU)

Kategorie Bauteil SKU Hinweis
Vision OpenMV Cam H7 R1 (MicroPython Vision) 4478 On-board Kamera + MicroPython, ideal für Objekterkennung
Feedback Buzzer 5 V – Breadboard friendly 1536 Direkt mit 3–5 V betreibbar (einfaches Beep)
Prototyping Half Sized Premium Breadboard – 400 Punkte 64 Lötfreier Aufbau
Verdrahtung Premium Male/Male Jumper Wires – 40× 6″ 758 Für OpenMV-Pins ↔ Breadboard/Buzzer
Optional: Piezo Buzzer PS1240 (SKU 160) als Alternative; USB-Powerbank für mobilen Betrieb.

Verdrahtung

OpenMV Cam H7 → Buzzer

  • Buzzer +P0 (OpenMV Pin, digitaler Ausgang)
  • Buzzer −GND
  • Strom: OpenMV per USB 5 V versorgen
Gemeinsame Masse: Achte auf GND-Verbindung zwischen allen Modulen. Der Buzzer 1536 ist intern getrieben (einfach an/aus).

Ablauf: Von Null zur Erkennung

  1. OpenMV IDE installieren und die Cam via USB verbinden.
  2. Belichtung prüfen: Gute, gleichmäßige Beleuchtung erhöht die Zuverlässigkeit.
  3. Farb-Schwelle bestimmen: In der IDE Tools → Machine Vision → Threshold Editor öffnen, Beispielobjekt (z. B. roter Becher) ins Bild halten und LAB-Schwellwerte ermitteln/speichern.
  4. Code flashen (siehe unten), dann Objekt ins Sichtfeld bringen → Buzzer piept bei Erkennung.

Beispielcode (MicroPython für OpenMV)


# GoMaker × Adafruit – Objekterkennung per Farbbereich (OpenMV Cam H7, SKU: 4478)
# Buzzer: 5V Breadboard friendly (SKU: 1536) an P0
# Hinweis: Schwellwerte (thresholds) mit dem Threshold Editor kalibrieren!

import sensor, image, time
import pyb

# --- Hardware ---
BUZZER_PIN = 'P0'
buzzer = pyb.Pin(BUZZER_PIN, pyb.Pin.OUT_PP)
buzzer.low()

# --- Kamera vorbereiten ---
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)  # 320x240, ausreichend schnell
sensor.skip_frames(time=1000)
sensor.set_auto_gain(False)   # Für Farberkennung fixieren
sensor.set_auto_whitebal(False)

clock = time.clock()

# --- Farbschwellen (LAB) anpassen! Beispiel: Rot-Objekt ---
# Mit Tools -> Threshold Editor ermitteln und hier einsetzen.
# Format: (L_min, L_max, A_min, A_max, B_min, B_max)
RED_THRESHOLDS = [(30, 80, 20, 127, -10, 127)]

# Mindestgröße (Pixel) für gültige Blobs
MIN_PIXELS = 800

def beep(ms=120, reps=2, gap=80):
    for _ in range(reps):
        buzzer.high()
        pyb.delay(ms)
        buzzer.low()
        pyb.delay(gap)

while True:
    clock.tick()
    img = sensor.snapshot()

    # Blobs im Rot-Bereich suchen
    blobs = img.find_blobs(RED_THRESHOLDS, pixels_threshold=MIN_PIXELS, area_threshold=MIN_PIXELS//2, merge=True)
    if blobs:
        # Größten Blob wählen
        b = max(blobs, key=lambda x: x.pixels())
        # Rechteck und Mittelpunkt markieren (Debug auf dem IDE-Preview)
        img.draw_rectangle(b.rect(), color=(255, 0, 0))
        img.draw_cross(b.cx(), b.cy(), color=(255, 0, 0))
        # Akustisches Feedback
        beep(ms=80, reps=1, gap=0)

    # Optional: FPS im Terminal
    # print("FPS:", clock.fps())
    
Kalibrierung: Passe RED_THRESHOLDS an dein Objekt an (ggf. für Blau/Gelb weitere Bereiche ergänzen). Beleuchtung hat großen Einfluss – konstantes Licht macht die Erkennung stabil.

Tests & Erweiterungen

  • Andere Farben/Objekte: Weitere Schwellenlisten hinzufügen (z. B. BLUE_THRESHOLDS), im Code durchprobieren.
  • Mehr Feedback: Eine LED oder ein Servo ansteuern (OpenMV-Pins P0..P7).
  • Geometrie: Statt Farbe Kreis- oder Rechteck-Erkennung (find_circles / find_rects) verwenden.
  • QR/AprilTags: OpenMV kann Tags/QR-Codes erkennen – ideal für Robotik-Navigation.
Sicherheit & Strom: OpenMV per USB versorgen; bei zusätzlichen Aktoren (z. B. Servos) eigene 5 V-Quelle nutzen und GND verbinden. Kamera nicht direkter Sonne aussetzen; gleichmäßige Beleuchtung wählen.

0 Kommentare

Kommentieren

Bitte beachten Sie, dass Kommentare vor ihrer Veröffentlichung genehmigt werden müssen.