Skip to Content

Programmierung des UNIHIKER K10 mit der Arduino IDE

Programmierung des UNIHIKER K10 mit der Arduino IDE

Der UNIHIKER K10 ist ein kompaktes Entwicklungsboard auf ESP32-S3-Basis, das für schnelles Prototyping in den Bereichen KI, IoT und sensorbasierte Anwendungen entwickelt wurde.

Er integriert ein 2,8-Zoll-TFT-Display, eine 2-MP-Kamera, Mikrofon, Lautsprecher, RGB-LED und Onboard-Sensoren für Temperatur, Luftfeuchtigkeit, Licht und Bewegung. Eingebaute Wi-Fi-, Bluetooth-, USB-C-, microSD-Unterstützung und Gravity-Erweiterungsports sorgen für Konnektivität.

Das Board wird mit einsatzbereiten KI-Funktionen wie Sprach- und Gesichtserkennung geliefert und unterstützt die Programmierung über MicroPython, Arduino oder grafische IDEs wie Mind+.

In diesem Tutorial lernst du, wie du den UNIHIKER K10 mit der Arduino IDE programmierst. Für einige Codebeispiele musst du jedoch Mind+ verwenden, da Code, der mit der Arduino IDE kompiliert und geflasht wird, manchmal nicht auf dem UNIHIKER K10 läuft.

Benötigte Teile

Für dieses Tutorial benötigst du nur den UNIHIKER K10. Du kannst ihn zum Beispiel bei DFRobot oder Amazon erwerben:

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Hardware des UNIHIKER K10

Der Unihiker K10 basiert auf einem ESP32-S3 N16R8 Modul mit einem Dual-Core 32-Bit Xtensa LX7 Prozessor, der mit bis zu 240 MHz läuft. Er verfügt über 512 KB internen SRAM und 16 MB Flash-Speicher und unterstützt externe Speicherung über einen microSD-Kartensteckplatz. Das Bild unten zeigt Vorder- und Rückseite des Boards:

Front and Back of UNIHIKER K10
Vorder- und Rückseite des UNIHIKER K10 (source)

Drahtlose Konnektivität

Das Board bietet 2,4 GHz Wi-Fi gemäß IEEE 802.11 b/g/n Standards und integriert Bluetooth 5.0 mit BLE-Unterstützung. Diese Kombination ermöglicht sowohl netzwerkbasierte Kommunikation als auch energieeffiziente Geräte-zu-Geräte-Verbindungen.

Visuelle, Audio- und Benutzerinteraktions-Hardware

Der K10 verfügt über ein 2,8-Zoll-TFT-Display mit einer Auflösung von 240×320 Pixeln, gesteuert von einem ILI9341 Controller. Er beinhaltet ein 2-Megapixel GC2145 Kameramodul mit einem etwa 80-Grad-Sichtfeld, geeignet für grundlegende Computer-Vision-Aufgaben.

Audiofunktionen umfassen zwei digitale MEMS-Mikrofone für Spracheingabe und einen integrierten 2-W-Lautsprecher, der von einem Onboard-Verstärker angetrieben wird. Das Board enthält außerdem drei adressierbare WS2812 RGB-LEDs für visuelles Feedback.

Umwelt- und Bewegungssensoren

Das Gerät integriert einen AHT20 Sensor, der Temperaturen von etwa –40 °C bis +85 °C und Luftfeuchtigkeit von 0 bis 100 Prozent relativer Feuchte messen kann. Es verfügt über einen LTR303ALS Umgebungslichtsensor, der in einem weiten Dynamikbereich von sehr schwachem Licht bis zu hellem Tageslicht arbeitet. Die Bewegungserkennung übernimmt ein SC7A20H Dreiachs-Beschleunigungssensor mit wählbaren Messbereichen bis ±16 g.

Sensor and IO of the UNIHIKER K10
Sensoren und IO des UNIHIKER K10

I/O-Schnittstellen und Erweiterungen

Der K10 bietet mehrere Erweiterungsschnittstellen, darunter USB-C für Stromversorgung und Programmierung, einen microSD-Steckplatz für wechselbaren Speicher sowie Gravity 3-Pin- und 4-Pin-Anschlüsse, die digitale, analoge, I²C- und UART-Schnittstellen bereitstellen. Das Board verfügt außerdem über zwei benutzerprogrammierbare Tasten neben den Standard-Tasten Boot und Reset.

Ein PH2.0 Batterieanschluss unterstützt externe Batterien, und der Randstecker bietet zusätzliche GPIO-, PWM-, ADC-, SPI-, UART- und I²C-Leitungen für erweiterte Hardwareintegration.

Stromversorgungseigenschaften

Das Board kann über USB-C, den PH2.0 Batterieanschluss oder die Strompins am Randstecker mit Strom versorgt werden. Interne Komponenten und GPIO arbeiten mit 3,3-Volt-Logikpegeln. Der Stromverbrauch liegt bei etwa 150 mA während der Gesichtserkennung.

Physikalische Abmessungen

Die Gesamtgröße des Unihiker K10 beträgt etwa 51,6 mm × 83 mm bei einer Dicke von ca. 11 mm, was ihm eine kompakte Bauform für Handheld-, Bildungs- und Embedded-Projekte verleiht.

Vorinstallierte KI- und Softwarefunktionen

Der K10 enthält mehrere integrierte KI-Funktionen wie Gesichtserkennung, Objekterkennung, QR-Code-Scan, Haustiererkennung, Bewegungserkennung und Offline-Spracherkennung. Diese Funktionen laufen lokal mit der eingebauten Kamera, Mikrofonen und Sensoren, ohne externe Rechenressourcen zu benötigen. Das Gerät unterstützt Programmierung über MicroPython, Arduino/PlatformIO und grafische Umgebungen wie Mind+.

Eingebaute FunktionenBeschreibung / Hinweise
GesichtserkennungDer K10 kann menschliche Gesichter lokal über seine 2-MP-Kamera erkennen – nützlich für Projekte wie Zugangskontrolle, Anwesenheitserkennung oder einfache CV-Experimente.
Gesichtserkennung (Identifikation)Das Board kann registrierte Gesichter erkennen und unterscheiden (nicht nur detektieren) für grundlegende Gesichtserkennungsaufgaben.
Katze/Hund (Haustier-)ErkennungDie Bild-KI des K10 kann Katzen oder Hunde identifizieren – ideal für Haustier-Erkennungsdemos oder Überwachungsanwendungen.
QR-Code-ErkennungEs kann QR-Codes mit der Kamera und einem vorinstallierten Vision-Modell erkennen und dekodieren.
BewegungserkennungDas Board unterstützt Bewegungserkennung über die Kamera (Vision) und nicht nur über den Beschleunigungssensor – nützlich für einfache Sicherheits- oder Aktivitätserkennungsaufgaben.
Benutzerdefinierte Bild-ErkennungsmodelleNutzer können eigene TinyML-Bild-Erkennungsmodelle einsetzen, um benutzerdefinierte Objekterkennung oder Klassifikation über die eingebauten Modelle hinaus zu ermöglichen.
Lokale (Offline) SpracherkennungMit den eingebauten Mikrofonen und dem Sprachverarbeitungsmodell kann der K10 Sprachbefehle ohne Internetverbindung erkennen.
Benutzerdefinierte SprachbefehleDer Nutzer kann eigene Sprachbefehle für sprachgesteuerte Projekte definieren – ideal für sprachgesteuertes IoT, interaktive Projekte oder Barrierefreiheitsanwendungen.

Technische Spezifikationen

Die folgende Tabelle fasst die technischen Details des UNIHIKER K10 Boards zusammen:

KategorieSpezifikation
Prozessor & SpeicherESP32-S3 (Dual-Core Xtensa LX7 bis 240 MHz), 512 KB SRAM, 16 MB Flash
SpeicherMicroSD-Kartensteckplatz für externen Speicher
Drahtlose Konnektivität2,4 GHz Wi-Fi (802.11 b/g/n), Bluetooth 5.0 mit BLE
Display2,8-Zoll TFT LCD, 240 × 320 Auflösung, ILI9341 Treiber
Kamera2 MP GC2145 Sensor, ca. 80° Sichtfeld
MikrofoneDuale digitale MEMS-Mikrofone
Lautsprecher2 W integrierter Lautsprecher mit Onboard-Verstärker
LEDsDrei WS2812 adressierbare RGB-LEDs
UmweltsensorenAHT20 Temperatur-/Luftfeuchtigkeitssensor; LTR303ALS Umgebungslichtsensor
BewegungssensorSC7A20H 3-Achsen-Beschleunigungssensor (bis ±16 g)
ErweiterungsportsGravity 3-Pin und 4-Pin Anschlüsse; Randstecker mit GPIO, ADC, PWM, I²C, SPI, UART
StromversorgungsoptionenUSB-C, PH2.0 Batterieanschluss, Strompins am Randstecker
Stromverbrauch150 mA
Logikpegel3,3 V
AbmessungenCa. 51,6 mm × 83 mm × 11 mm
Vorinstallierte FunktionenEingebaute KI-Modelle, Offline-Spracherkennung, Kamera- und Sensorfunktionen

Blockdiagramm und Schaltpläne

Das Bild unten zeigt das Blockdiagramm des UNIHIKER K10 Boards. Beachte, dass das Diagramm die I2C-Adressen der Hardwarekomponenten anzeigt:

Block diagram of the UNIHIKER K10
Blockdiagramm des UNIHIKER K10 (source)

Für detailliertere Informationen siehe UNIHIKER K10 Schematic.

Mind+ V1.x installieren und starten

In diesem Tutorial verwenden wir bevorzugt die Arduino IDE zur Programmierung des UNIHIKER K10 Boards. Für einige Programme funktioniert das derzeit (Feb 2026) jedoch nicht, und du musst das Mind+ Programmierwerkzeug nutzen. Daher empfehle ich, Mind+ vorab zu installieren.

Beachte, dass es zwei Hauptversionen von Mind+ gibt: V1.x und V2.x. Stelle sicher, dass du Version V1.x herunterlädst und installierst!

Mind+ V1.x installieren

Die Installation ist einfach. Gehe zu https://mindplus.cc/en/download.html, lade Mind+ V1.x für dein Betriebssystem herunter und führe die Installationssoftware aus. In diesem Tutorial verwende ich Version: V1.8.1 RC3.0 unter Windows.

Board auswählen

Öffne anschließend die Mind+ Anwendung und wähle das UNIHIKER K10 Board aus. Klicke dazu auf die Schaltfläche „Extensions“ unten links, wie unten gezeigt:

Es öffnet sich eine neue Seite mit Boards. Scrolle bis zum Ende, bis du das UNIHIKER K10 Board findest. Klicke darauf und dann auf „Back“, um zum Hauptbildschirm der Mind+ Anwendung zurückzukehren:

UNIHIKER K10 verbinden

Verbinde nun dein UNIHIKER K10 Board mit dem USB-Kabel mit deinem Computer. Klicke dann im Mind+ Menü auf „Connect Device“ und wähle „COMxx-UNIHIKER K10“ aus, wie gezeigt:

Der spezifische COM-Port hängt von deinem Computer ab. Stelle sicher, dass keine andere Anwendung mit dem UNIHIKER K10 verbunden ist. Du kannst z.B. nicht gleichzeitig Arduino IDE und Mind+ verbinden.

Manuelles Bearbeiten und Hochladen

Mind+ ermöglicht es, Programme grafisch durch Anordnen von Blöcken zu erstellen oder den Code manuell zu bearbeiten. Wir verwenden die Funktion „Manual Editing“. Rechts in der Mind+ IDE findest du die Tabs „Auto Generate“ und „Manual Editing“. Klicke auf den Tab „Manual Editing“, um zum manuellen Editor zu wechseln, wie hier gezeigt:

Kopiere nun den folgenden Code in den Editor und drücke dann die Schaltfläche „Upload“ oberhalb des Editorfensters.

#include "unihiker_k10.h"

UNIHIKER_K10 k10;

void setup() {
  k10.begin();
  k10.initScreen(2);
  k10.creatCanvas();
  k10.setScreenBackground(0xFFFF00);
  k10.canvas->canvasText("Makerguides", 5, 0x000000);
  k10.canvas->updateCanvas();
}

void loop() {
}

Du solltest sehen, dass der Code kompiliert und auf das Board hochgeladen wird. Er setzt die Bildschirmfarbe auf Gelb (0xFFFF00) und gibt den Text „Makerguides“ in Zeile 5 aus. Auf dem Display des UNIHIKER K10 solltest du Folgendes sehen:

Wenn das funktioniert, herzlichen Glückwunsch. Du kannst nun den UNIHIKER K10 mit der Mind+ IDE programmieren.

Geräteeinstellungen zurücksetzen

Wenn du Probleme beim Verbinden oder Flashen des UNIHIKER K10 hast, hilft es oft, die Geräteeinstellungen zurückzusetzen. Gehe ins Menü und klicke auf „Restore device initial settings“, wie unten gezeigt:

Das ist besonders nützlich, wenn du ein Programm über die Arduino IDE hochlädst, das das UNIHIKER K10 Board in einen nicht reagierenden Zustand versetzt.

Im nächsten Abschnitt lernst du, wie du die Arduino IDE einrichtest, um den UNIHIKER K10 zu programmieren.

UNIHIKER K10 Board in Arduino IDE installieren

Um den UNIHIKER K10 über die Arduino IDE zu programmieren, musst du zuerst das UNIHIKER K10 Board installieren. In diesem Abschnitt führe ich dich durch die notwendigen Schritte.

Öffne deine Arduino IDE und gehe zu „File -> Preferences…“, um den Einstellungsdialog zu öffnen:

Im Einstellungsdialog suche den Bereich „Additional boards manager URLs“ und klicke auf den grünen Button unten rechts, wie unten gezeigt:

Es öffnet sich die Liste der „Additional boards manager URLs“:

Dort musst du folgende URL hinzufügen (im obigen Screenshot gelb markiert):

https://downloadcd.dfrobot.com.cn/UNIHIKER/package_unihiker_index.json

Wie du siehst, habe ich auch URLs für ESP8266 und ESP32 Boards. Lass dich davon nicht verwirren. Füge einfach die URL für den UNIHIKER zur Liste hinzu. Die Reihenfolge spielt keine Rolle.

UNIHIKER K10 Board installieren

Als nächstes installieren wir das UNIHIKER K10 Board. Öffne den BOARDS MANAGER, gib „unihiker“ in das Suchfeld ein und du solltest das „UNIHIKER by DFRobot“ Board sehen:

Klicke auf den INSTALL Button, und das UNIHIKER K10 Board wird installiert. Stand Feb 2026 ist die Version der UNIHIKER K10 Board-Software 0.0.3.

Verbinde nun dein UNIHIKER K10 Board per USB-Kabel mit deinem Computer. Die Arduino IDE sollte es erkennen und dir erlauben, den COM-Port auszuwählen:

Tools-Einstellungen

Zum Schluss passen wir die Einstellungen für das Board unter „Tools“ an:

Du kannst die Standardeinstellungen beibehalten, außer „USB CDC on Boot“, das du auf „Enabled“ setzen solltest, und die Modell-Sprache, die auf „EN“ (Englisch) stehen sollte.

Codebeispiel: Serielle Kommunikation

Bevor wir komplizierten Code ausprobieren, prüfen wir, ob das Flashen und die Kommunikation mit dem Board funktionieren. Lade folgenden Code auf das UNIHIKER K10 Board:

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Makerguides");
  delay(2000);
}

Öffne dann den Serial Monitor, und du solltest alle zwei Sekunden den Text „Makerguides“ sehen. Falls nicht, überprüfe deine Tools-Einstellungen und die Baudrate (115200). Wie erwähnt, muss „USB CDC on Boot“ auf „Enabled“ stehen.

Dieser Code sollte mit der Arduino IDE und der Mind+ IDE funktionieren.

Codebeispiel: Display

Der folgende Code testet die Displayfunktion. Er setzt die Bildschirmausrichtung auf 2, die Hintergrundfarbe auf Gelb (0xFFFF00) und gibt den Text „Makerguides“ in Zeile 5 in Schwarz (0x000000) aus:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"

UNIHIKER_K10 k10;

void setup() {
  k10.begin();
  k10.initScreen(2);
  k10.creatCanvas();
  k10.setScreenBackground(0xFFFF00);
  k10.canvas->canvasText("Makerguides", 5, 0x000000);
  k10.canvas->updateCanvas();
}

void loop() {
}

In meinem Fall funktioniert dieser Code, wenn er mit der Mind+ IDE hochgeladen wird, aber nicht mit der Arduino IDE. Im letzteren Fall kompiliert der Code und kann geflasht werden, läuft aber nicht auf dem Board. Für alle folgenden Codebeispiele mit Display musst du den Code mit Mind+ hochladen.

Für weitere Codebeispiele zur Displayprogrammierung siehe das display-showing-text Beispiel.

Codebeispiel: Temperatur und Luftfeuchtigkeit messen

Der nächste Code nutzt den integrierten ATH20 Sensor, um Umgebungstemperatur und Luftfeuchtigkeit zu messen. Der Code misst diese Umweltdaten jede Sekunde und zeigt die Werte auf dem Display an:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"

UNIHIKER_K10 k10;
AHT20 aht20;

void setup() {
  k10.begin();
  k10.initScreen(2);
  k10.creatCanvas();
  k10.setScreenBackground(0xFFFFFF);
}

void loop() {
  float temp = aht20.getData(AHT20::eAHT20TempC);
  float hum = aht20.getData(AHT20::eAHT20HumiRH);

  k10.canvas->canvasText(String("Temp: ") + String(temp), 1, 0x000000);
  k10.canvas->canvasText(String("Hum : ") + String(hum), 2, 0x000000);
  k10.canvas->updateCanvas();
  
  delay(1000);
}

Dieser Code funktioniert, wenn er über Mind+ hochgeladen wird, aber nicht mit der Arduino IDE.

Codebeispiel: Helligkeit messen

Der UNIHIKER K10 verfügt auch über einen integrierten Umgebungslichtsensor, den LTR303ALS. Das folgende Codebeispiel zeigt, wie man die Umgebungslichtintensität (Helligkeit) mit diesem Sensor misst:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"

UNIHIKER_K10 k10;

void setup() {
  k10.begin();
  k10.initScreen(2);
  k10.creatCanvas();
  k10.setScreenBackground(0xFFFFFF);
}

void loop() {
  uint16_t als = k10.readALS();

  k10.canvas->canvasText(String("Brightness: ") + String(als), 1, 0x000000);
  k10.canvas->updateCanvas();
  
  delay(200);
}

Da wir das Display verwenden, funktioniert dieser Code ebenfalls nur, wenn er über die Mind+ IDE hochgeladen wird.

Codebeispiel: Audio abspielen

Das folgende Codebeispiel zeigt, wie man den Lautsprecher des UNIHIKER K10 steuert. Es spielt eine unterschiedliche Tonfolge ab, wenn Taste A oder Taste B gedrückt wird:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"

void onButtonAPressed();
void onButtonBPressed();

UNIHIKER_K10 k10;
Music music;

void onButtonAPressed() {
  music.playMusic(DADADADUM);
}

void onButtonBPressed() {
  music.stopPlayTone();
  music.playTone(131, 8000);
  music.playTone(131, 8000);
  music.playTone(196, 8000);
  music.playTone(196, 8000);
  music.playTone(220, 8000);
  music.playTone(220, 8000);
  music.playTone(196, 8000);
}

void setup() {
  k10.begin();
  k10.buttonA->setPressedCallback(onButtonAPressed);
  k10.buttonB->setPressedCallback(onButtonBPressed);
}

void loop() {
}

Ich habe festgestellt, dass dieser Code mit der Arduino IDE und der Mind+ IDE funktioniert.

Siehe auch das audio-record-and-play Beispiel, das zeigt, wie man Audio aufnimmt, auf der SD-Karte speichert und über den Lautsprecher abspielt.

Codebeispiel: Beschleunigungssensor

Im folgenden Codebeispiel verwenden wir die Daten des integrierten Beschleunigungssensors, um die Bewegung eines Punktes (Balls) auf dem Bildschirm zu steuern. Der Code zeichnet einen grünen Kreis, der sich in die Richtung bewegt, in die das Board geneigt wird.

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"

UNIHIKER_K10 k10;

void setup() {
  k10.begin();
  k10.initScreen(2);
  k10.creatCanvas();
  k10.setScreenBackground(0xFFFFFF);
}

void loop() {
  static float accx, accy, x, y;
  accx = (k10.getAccelerometerX());
  accy = (k10.getAccelerometerY());
  x = (120 + (accx / 3));
  y = (120 + (accy / 3));
  k10.canvas->canvasCircle(x, y, 8, 0x00FF00, 0x00FF00, true);
  k10.canvas->updateCanvas();
  k10.canvas->canvasCircle(x, y, 9, 0xFFFFFF, 0xFFFFFF, true);
}

Dieser Code funktioniert, wenn er über Mind+ hochgeladen wird, schlägt aber bei Verwendung der Arduino IDE fehl.

Für weitere Informationen zum Code siehe das on-board-sensor-accelerate-ball Beispiel.

Codebeispiel: Minimale Spracherkennung

Dieser Code testet die Spracherkennung. Nach dem Aussprechen des Weckworts „Hi, Telly“ oder „Jarvis“ schaltet die blaue LED ein. Wenn du dann „lights on“ sagst, wird der Text „ON“ im Serial Monitor ausgegeben. Sagst du „lights off“, erscheint „OFF“.

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "asr.h"
#include "unihiker_k10.h"

#define LIGHTS_ON 1
#define LIGHTS_OFF 2

ASR asr;
UNIHIKER_K10 k10;

void setup() {
  Serial.begin(9600);
  k10.begin();

  asr.asrInit(CONTINUOUS, EN_MODE, 6000);
  while (asr._asrState == 0) { delay(100); }

  asr.addASRCommand(LIGHTS_ON, "lights on");
  asr.addASRCommand(LIGHTS_OFF, "lights off");
}

void loop() {
  if (asr.isDetectCmdID(LIGHTS_ON)) {
    Serial.println("ON");
  }
  if (asr.isDetectCmdID(LIGHTS_OFF)) {
    Serial.println("OFF");
  }
}

Dieser Code funktioniert mit der Arduino IDE und Mind+.

Codebeispiel: Lichter per Sprache steuern

Im nächsten Beispiel erweitern wir den vorherigen Code und schalten die RGB-LEDs des Boards per Sprachbefehl ein oder aus. Wie zuvor musst du zuerst das Weckwort „Hi, Telly“ oder „Jarvis“ sagen und dann „lights on“ oder „lights off“, um die LEDs zu steuern.

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "asr.h"
#include "unihiker_k10.h"

#define LIGHTS_ON 1
#define LIGHTS_OFF 2

UNIHIKER_K10 k10;
ASR asr;

void setup() {
  k10.begin();

  asr.asrInit(CONTINUOUS, EN_MODE, 6000);
  while (asr._asrState == 0) { delay(100); }

  asr.addASRCommand(LIGHTS_ON, "lights on");
  asr.addASRCommand(LIGHTS_OFF, "lights off");
}

void loop() {
  if (asr.isDetectCmdID(LIGHTS_ON)) {
    k10.rgb->brightness(9);
    k10.rgb->write(-1, 0xFFFFFF);
  }
  if (asr.isDetectCmdID(LIGHTS_OFF)) {
    k10.rgb->brightness(0);
    k10.rgb->write(-1, 0xFFFFFF);
  }
}

Dieser Code funktionierte mit der Arduino IDE und Mind+.

Siehe das ai-speech-recognition Beispiel für weitere Informationen zum Code.

Codebeispiel: Lichter dimmen per Sprache

Und schließlich ein letztes Beispiel zur Spracherkennung. Wir erweitern den vorherigen Code, um auch die Helligkeit der LEDs zu steuern. Der Code erkennt nun die Befehle „lights on“, „lights off“, „brighter“ und „darker“:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "asr.h"
#include "unihiker_k10.h"

#define LIGHTS_ON 1
#define LIGHTS_OFF 2
#define LIGHTS_MORE 3
#define LIGHTS_LESS 4

int brightness = 5;

UNIHIKER_K10 k10;
ASR asr;

void setup() {
  k10.begin();

  asr.asrInit(CONTINUOUS, EN_MODE, 6000);
  while (asr._asrState == 0) { delay(100); }

  asr.addASRCommand(LIGHTS_ON, "lights on");
  asr.addASRCommand(LIGHTS_OFF, "lights off");
  asr.addASRCommand(LIGHTS_MORE, "brighter");
  asr.addASRCommand(LIGHTS_LESS, "darker");
}

void loop() {
  if (asr.isDetectCmdID(LIGHTS_ON)) {
    k10.rgb->brightness(brightness);
    k10.rgb->write(-1, 0xFFFFFF);
  }
  if (asr.isDetectCmdID(LIGHTS_OFF)) {
    k10.rgb->brightness(0);
    k10.rgb->write(-1, 0xFFFFFF);
  }
  if (asr.isDetectCmdID(LIGHTS_MORE)) {
    brightness = constrain(brightness+1, 1, 9);
    k10.rgb->brightness(brightness);
    k10.rgb->write(-1, 0xFFFFFF);
  }
  if (asr.isDetectCmdID(LIGHTS_LESS)) {
    brightness = constrain(brightness-1, 1, 9);
    k10.rgb->brightness(brightness);
    k10.rgb->write(-1, 0xFFFFFF);
  }  
}

Dieser Code funktioniert mit der Arduino IDE und Mind+.

Codebeispiel: Bewegungserkennung

In diesem Codebeispiel verwenden wir die Onboard-Kamera des UNIHIKER K10 zur Bewegungserkennung. Sobald sich ein Objekt vor der Kamera bewegt, ändern die RGB-LEDs ihre Farbe von Blau zu Rot:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"
#include "AIRecognition.h"

UNIHIKER_K10 k10;
AIRecognition ai;

void setup() {
  k10.begin();
  k10.initScreen(2);
  ai.initAi();
  k10.initBgCamerImage();
  k10.setBgCamerImage(false);
  k10.creatCanvas();
  ai.switchAiMode(ai.NoMode);
  k10.setBgCamerImage(true);
  ai.switchAiMode(ai.Move);
  ai.setMotinoThreshold(100);
  k10.rgb->write(-1, 0x0000FF);
}

void loop() {
  if (ai.isDetectContent(AIRecognition::Move)) {
    k10.rgb->write(-1, 0xFF0000);
  } else {
    k10.rgb->write(-1, 0x0000FF);
  }
}

Dieser Code funktioniert nur, wenn er mit der Mind+ IDE hochgeladen wird.

Siehe das on-board-sensor-accelerate-ball Beispiel für eine Demo des Codes.

Codebeispiel: Gesichtserkennung

Zum Schluss testen wir die Gesichtserkennungsfunktionen. Der folgende Code nutzt die Kamera zur Gesichtserkennung. Er zeigt das Kamerabild auf dem Bildschirm an und zeichnet ein grünes Rechteck (Bounding Box) um ein erkanntes Gesicht. Außerdem werden die x-, y-Koordinaten und die Größe des Rechtecks (w, h) auf dem Bildschirm ausgegeben:

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"
#include "AIRecognition.h"

UNIHIKER_K10 k10;
AIRecognition ai;

void display(char *text, int v, int x, int y) {
  k10.canvas->canvasText(String(text) + String(v), x, y, 0xFFFF00,
                         k10.canvas->eCNAndENFont16, 50, true);
}

void setup() {
  k10.begin();
  k10.initScreen(2);
  ai.initAi();
  k10.initBgCamerImage();
  k10.setBgCamerImage(false);
  k10.creatCanvas();
  ai.switchAiMode(ai.NoMode);
  k10.setBgCamerImage(true);
  ai.switchAiMode(ai.Face);
}

void loop() {
  if (ai.isDetectContent(AIRecognition::Face)) {
    int h = ai.getFaceData(AIRecognition::Length);
    int w = ai.getFaceData(AIRecognition::Width);
    int x = ai.getFaceData(AIRecognition::CenterX);
    int y = ai.getFaceData(AIRecognition::CenterY);

    display("Face H: ", h, 0, 0);
    display("Face W: ", w, 0, 20);
    display("Face X: ", x, 0, 40);
    display("Face Y: ", y, 0, 60);
    k10.canvas->updateCanvas();
  }
  delay(100);
}

Dieser Code funktioniert nur, wenn er mit der Mind+ IDE hochgeladen wird.

Siehe das ai-face-detection Beispiel für eine Demo des Codes.

Codebeispiel: Gesichtserkennung (Identifikation)

Unser letztes Codebeispiel führt die Gesichtserkennung durch. Es ermöglicht das Lernen und Erkennen spezifischer Gesichter. Richte die Kamera des Boards auf ein Gesicht, warte bis das Bounding Box erscheint, und drücke dann die Taste A, um das Gesicht zu lernen. Die LED wird grün, sobald ein Gesicht gelernt wurde. Drücke dann Taste B, um Gesichter zu erkennen. Die ID des erkannten Gesichts wird auf dem Bildschirm ausgegeben.

// www.makerguides.com
// UNIHIKER K10 core 0.0.3

#include "unihiker_k10.h"
#include "AIRecognition.h"

UNIHIKER_K10 k10;
AIRecognition ai;

void onButtonALearn() {
  ai.sendFaceCmd(ENROLL);
  k10.rgb->write(-1, 0x00FF00);
}

void onButtonBRecognize() {
  ai.sendFaceCmd(RECOGNIZE);
  k10.rgb->write(-1, 0x0000FF);
}

void setup() {
  k10.begin();
  k10.initScreen(2);
  ai.initAi();
  k10.initBgCamerImage();
  k10.setBgCamerImage(false);
  k10.creatCanvas();
  ai.switchAiMode(ai.NoMode);
  k10.buttonA->setPressedCallback(onButtonALearn);
  k10.buttonB->setPressedCallback(onButtonBRecognize);
  k10.setBgCamerImage(true);
  ai.switchAiMode(ai.Face);
}

void loop() {
  k10.rgb->write(-1, 0x000000);
  if (ai.isRecognized()) {
    int fid = ai.getRecognitionID();
    k10.canvas->canvasText((String("Face ID: ") + String(fid)), 0, 0,
                           0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
    k10.canvas->updateCanvas();
  }
}

Das Board speichert die gelernten Gesichts-IDs im nichtflüchtigen Speicher, sodass sie auch nach einem Reset erhalten bleiben. Um alle gelernten Gesichter zu vergessen, kannst du den Befehl ai.sendFaceCmd(DELETEALL) aufrufen. Um ein bestimmtes Gesicht zu vergessen, rufe ai.sendFaceCmd(DELETE, id) auf. Siehe das ai-face-recognition Beispiel für eine Demo des Codes.

Dieser Code funktioniert nur, wenn er mit der Mind+ IDE hochgeladen wird.

Fehlerbehebung: Code mit Arduino IDE hochladen

Wie bereits erwähnt, funktionieren einige Codebeispiele nicht, wenn sie über die Arduino IDE hochgeladen werden. Der Code kompiliert und das Hochladen ist erfolgreich, aber der UNIHIKER K10 stürzt ab und reagiert nicht mehr.

Merkwürdigerweise funktionieren alle Codebeispiele einwandfrei, wenn sie mit der Mind+ IDE kompiliert und hochgeladen werden. Es handelt sich also nicht um ein Hardwareproblem des UNIHIKER K10 Boards, sondern scheint mit der UNIHIKER K10 Core-Software zusammenzuhängen, die Stand Feb 2026 noch Version 0.0.3 ist.

Wenn du Code mit der Arduino IDE hochlädst und das UNIHIKER K10 Board nicht mehr reagiert, schließe die Arduino IDE und lade den Code oder die Firmware mit der Mind+ IDE hoch. Ich habe festgestellt, dass dies das Board sozusagen „zurücksetzt“ und es dann wieder mit der Arduino IDE geflasht werden kann.

Fazit

In diesem Tutorial hast du gelernt, wie man das UNIHIKER K10 AI Board mit der Arduino IDE oder der Mind+ IDE programmiert. Die Codebeispiele zeigten, wie man Display und LEDs steuert sowie Sprach- und Gesichtserkennung durchführt. Für weitere Beispiele siehe das WiKi für den UNIHIKER K10. Schau dir auch das code referencef ür das Board an.

Der UNIHIKER K10 macht es sehr einfach, KI-Algorithmen wie Spracherkennung und Gesichtserkennung zu nutzen. Besonders die Spracherkennung ist leicht programmierbar, funktioniert offline mit niedriger Latenz und hoher Erkennungsgenauigkeit. Für einfache Sprachsteuerungsprojekte ist das ideal.

Leider ist die Unterstützung für die Arduino IDE und die Dokumentation etwas mangelhaft. Es gibt zum Beispiel kein GitHub-Repo für die K10-Bibliothek und die Dokumentation ist unvollständig. Außerdem konnte der Sprachcode mit der Arduino IDE geflasht werden, aber nicht der Gesichtserkennungscode. Dafür muss Mind+ verwendet werden.

Im Vergleich zu ähnlichen AI-Vision-Boards wie dem HUSKYLENS oder dem HUSKYLENS 2 ist der UNIHIKER K10 weniger leistungsfähig und hat weniger integrierte AI-Vision-Modelle. Andererseits benötigt er keinen zweiten Mikrocontroller zur Verarbeitung der Erkennungsergebnisse und der Gesamtstromverbrauch ist deutlich geringer.

Im Vergleich zum MaTouch AI ESP32S3 TFT oder dem DFRobot ESP32-S3 AI Camera verfügt der UNIHIKER K10 über eine gute Bibliothek, die das Programmieren von AI-Vision- und Spracherkennungsanwendungen wirklich einfach macht.

Wenn du Fragen hast, kannst du sie gerne im Kommentarbereich stellen.

Viel Spaß beim Tüfteln 😉