El UNIHIKER K10 es una placa de desarrollo compacta basada en ESP32-S3, diseñada para prototipos rápidos en aplicaciones de IA, IoT y basadas en sensores.
Integra una pantalla TFT de 2,8 pulgadas, cámara de 2 MP, micrófono, altavoz, LED RGB y sensores integrados de temperatura, humedad, luz y movimiento. Cuenta con Wi-Fi, Bluetooth, USB-C, soporte para microSD y puertos de expansión Gravity para conectividad.
La placa viene con funciones de IA listas para usar, como reconocimiento de voz y facial, y soporta programación mediante MicroPython, Arduino o entornos gráficos como Mind+.
En este tutorial aprenderás a programar el UNIHIKER K10 con el IDE de Arduino. Sin embargo, para algunos ejemplos de código necesitarás usar Mind+, ya que a veces el código compilado y cargado con Arduino IDE no funciona en la placa UNIHIKER K10.
Partes necesarias
Para este tutorial solo necesitarás el UNIHIKER K10. Puedes adquirirlo en DFRobot o Amazon, por ejemplo:

UNIHIKER K10
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 del UNIHIKER K10
El Unihiker K10 está construido alrededor de un módulo ESP32-S3 N16R8 con un procesador dual-core Xtensa LX7 de 32 bits que funciona hasta 240 MHz. Incluye 512 KB de SRAM interna y 16 MB de memoria flash, y soporta almacenamiento externo mediante una ranura para tarjeta microSD. La imagen a continuación muestra el frente y la parte trasera de la placa:

Conectividad inalámbrica
La placa ofrece Wi-Fi de 2.4 GHz compatible con los estándares IEEE 802.11 b/g/n e integra Bluetooth 5.0 con soporte BLE. Esta combinación permite comunicación en red y conectividad de dispositivo a dispositivo con bajo consumo energético.
Hardware visual, de audio e interacción
El K10 incorpora una pantalla TFT de 2,8 pulgadas con resolución de 240×320 píxeles controlada por un controlador ILI9341. Incluye un módulo de cámara GC2145 de 2 megapíxeles con un campo de visión aproximado de 80 grados, adecuado para tareas básicas de visión por computadora.
Las características de audio incluyen un par de micrófonos MEMS digitales para entrada de voz y un altavoz integrado de 2 W con amplificador a bordo. La placa también cuenta con tres LEDs RGB direccionables WS2812 para retroalimentación visual.
Sensores ambientales y de movimiento
El dispositivo integra un AHT20 sensor capaz de medir temperatura en un rango aproximado de –40 °C a +85 °C y humedad relativa de 0 a 100 por ciento. Cuenta con un LTR303ALS sensor de luz ambiental que opera en un amplio rango dinámico desde niveles muy bajos de luz hasta iluminación brillante al aire libre. La detección de movimiento la realiza un acelerómetro de tres ejes SC7A20H con rangos de medición seleccionables hasta ±16 g.

Interfaces de E/S y expansión
El K10 ofrece múltiples interfaces de expansión, incluyendo USB-C para alimentación y programación, una ranura microSD para almacenamiento extraíble y un conjunto de conectores Gravity de 3 y 4 pines que exponen interfaces digitales, analógicas, I²C y UART. La placa también tiene dos botones programables por el usuario, además de los botones estándar de Boot y Reset.
Un conector de batería PH2.0 soporta entrada de batería externa, y el conector lateral expone líneas adicionales de GPIO, PWM, ADC, SPI, UART e I²C para una integración de hardware más amplia.
Características de alimentación
La placa puede alimentarse vía USB-C, el conector de batería PH2.0 dedicado o los pines de alimentación del conector lateral. Los componentes internos y GPIO operan a niveles lógicos de 3.3 voltios. El consumo de energía es de aproximadamente 150 mA al ejecutar detección facial.
Dimensiones físicas
El tamaño total del Unihiker K10 es aproximadamente 51,6 mm por 83 mm con un grosor de alrededor de 11 mm, lo que le da una huella compacta adecuada para proyectos portátiles, educativos e integrados.
Capacidades de IA y software preinstaladas
El K10 incluye varias funciones de IA integradas como detección facial, reconocimiento de objetos, escaneo de códigos QR, detección de mascotas, detección de movimiento y reconocimiento de voz offline. Estas funciones se ejecutan localmente usando la cámara, micrófonos y sensores integrados sin necesidad de recursos externos. El dispositivo soporta programación mediante MicroPython, Arduino/PlatformIO y entornos gráficos como Mind+.
| Función integrada | Descripción / Notas |
|---|---|
| Detección facial | El K10 puede detectar rostros humanos localmente a través de su cámara de 2 MP — útil para proyectos como control de acceso, detección de presencia o experimentos simples de visión por computadora. |
| Reconocimiento facial | La placa puede reconocer y distinguir rostros previamente registrados (no solo detectarlos) para tareas básicas de reconocimiento facial. |
| Detección de gatos/perros (mascotas) | La IA de imagen del K10 puede identificar gatos o perros — permitiendo demostraciones de reconocimiento de mascotas o aplicaciones de monitoreo. |
| Reconocimiento de código QR | Puede detectar y decodificar códigos QR usando su cámara y un modelo de visión pre-cargado. |
| Detección de movimiento | La placa soporta detección de movimiento mediante visión (cámara) en lugar de solo acelerómetro — útil para tareas simples de seguridad o detección de actividad. |
| Modelos personalizados de reconocimiento de imagen | Los usuarios pueden desplegar sus propios modelos TinyML de reconocimiento de imagen, permitiendo detección o clasificación personalizada más allá de los integrados. |
| Reconocimiento de voz local (offline) | Con los micrófonos integrados y el modelo de procesamiento de voz, el K10 puede reconocer comandos de voz sin necesidad de conexión a internet. |
| Comandos de voz personalizados | El usuario puede definir comandos de voz personalizados para proyectos controlados por voz — útil para IoT por voz, proyectos interactivos o aplicaciones de accesibilidad. |
Especificaciones técnicas
La siguiente tabla resume los detalles técnicos de la placa UNIHIKER K10:
| Categoría | Especificación |
|---|---|
| Procesador y memoria | ESP32-S3 (dual-core Xtensa LX7 hasta 240 MHz), 512 KB SRAM, 16 MB flash |
| Almacenamiento | Ranura para tarjeta microSD para almacenamiento externo |
| Conectividad inalámbrica | Wi-Fi 2.4 GHz (802.11 b/g/n), Bluetooth 5.0 con BLE |
| Pantalla | LCD TFT de 2,8 pulgadas, resolución 240 × 320, controlador ILI9341 |
| Cámara | Sensor GC2145 de 2 MP, campo de visión ~80° |
| Micrófonos | Micrófonos MEMS digitales duales |
| Altavoz | Altavoz integrado de 2 W con amplificador a bordo |
| LEDs | Tres LEDs RGB direccionables WS2812 |
| Sensores ambientales | Sensor de temperatura/humedad AHT20; sensor de luz ambiental LTR303ALS |
| Sensor de movimiento | Acelerómetro de 3 ejes SC7A20H (hasta ±16 g) |
| Puertos de expansión | Conectores Gravity de 3 y 4 pines; conector lateral con GPIO, ADC, PWM, I²C, SPI, UART |
| Opciones de alimentación | USB-C, entrada de batería PH2.0, pines de alimentación en conector lateral |
| Consumo de energía | 150 mA |
| Nivel lógico | 3.3 V |
| Dimensiones | Aproximadamente 51,6 mm × 83 mm × 11 mm |
| Funciones preinstaladas | Modelos de IA integrados, reconocimiento de voz offline, utilidades de cámara y sensores |
Diagrama de bloques y esquemas
La imagen a continuación muestra el diagrama de bloques de la placa UNIHIKER K10. Nota que el diagrama muestra las direcciones I2C de los componentes de hardware:

Para información más detallada consulta el UNIHIKER K10 Schematic.
Instalar y ejecutar Mind+ V1.x
En este tutorial preferiremos usar el IDE de Arduino para programar la placa UNIHIKER K10. Sin embargo, para algunos programas esto actualmente (febrero 2026) no funciona y necesitas usar la herramienta de programación Mind+. Por ello, te sugiero instalar Mind+ antes de continuar.
Ten en cuenta que existen dos versiones principales de Mind+: V1.x y V2.x. Asegúrate de descargar e instalar la versión V1.x.

Instalar Mind+ V1.x
La instalación es sencilla. Ve a https://mindplus.cc/en/download.html, descarga Mind+ V1.x para tu sistema operativo y ejecuta el instalador. En este tutorial uso la versión: V1.8.1 RC3.0 en Windows.
Seleccionar placa
Luego abre la aplicación Mind+ y selecciona la placa UNIHIKER K10. Para ello, haz clic en el botón «Extensions» en la esquina inferior izquierda como se muestra a continuación:

Esto abre una nueva página con placas. Desplázate hasta el final hasta encontrar la placa UNIHIKER K10. Haz clic en ella y luego en «Back» para volver a la pantalla principal de Mind+:

Conectar Unihiker K10
A continuación conecta tu placa Unihiker K10 con el cable USB a tu ordenador. Luego haz clic en el menú «Connect Device» en Mind+ y selecciona «COMxx-UNIHIKER K10» como se muestra:

El puerto COM específico dependerá de tu ordenador. Asegúrate de que ninguna otra aplicación esté conectada al UNIHIKER K10. Por ejemplo, no puedes conectar Arduino IDE y Mind+ simultáneamente.
Edición manual y carga
Mind+ te permite crear programas gráficamente con bloques o editando código manualmente. Usaremos la función de Edición Manual. En el lado derecho del IDE Mind+ encontrarás las pestañas «Auto Generate» y «Manual Editing». Haz clic en «Manual Editing» para cambiar al editor manual como se muestra aquí:

Ahora copia y pega el siguiente código en el editor y luego presiona el botón «Upload» arriba del panel del editor.
#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() {
}
Deberías ver que el código se compila y se carga en la placa. Establece el color de pantalla a amarillo (0xFFFF00) y muestra el texto «Makerguides» en la línea 5. En la pantalla del Unihiker K10 deberías ver lo siguiente:

Si esto funciona, felicidades. Ahora puedes programar el Unihiker K10 con el IDE Mind+.
Restaurar configuración inicial del dispositivo
Si tienes problemas para conectar o cargar el Unihiker K10, a menudo ayuda restaurar la configuración del dispositivo. Ve al menú y haz clic en «Restore device initial settings» como se muestra a continuación:

Esto es especialmente útil cuando cargas un programa vía Arduino IDE que deja la placa Unihiker K10 en un estado no responsivo.
En la siguiente sección aprenderás a configurar el IDE de Arduino para programar el Unihiker K10.
Instalar placa UNIHIKER K10 en Arduino IDE
Para programar el UNIHIKER K10 con Arduino IDE primero debes instalar la placa UNIHIKER K10. En esta sección te guiaré por los pasos necesarios.
Comienza abriendo tu Arduino IDE y ve a «File -> Preferences…» para abrir el diálogo de Preferencias:

En el diálogo de Preferencias busca la sección «Additional boards manager URLs» y haz clic en el botón verde en la esquina inferior derecha como se muestra:

Esto abrirá la lista de «Additional boards manager URLs»:

Ahí debes añadir la siguiente URL (marcada en amarillo en la captura anterior):
https://downloadcd.dfrobot.com.cn/UNIHIKER/package_unihiker_index.json
Como ves, también tengo URLs para placas ESP8266 y ESP32. No te confundas. Solo añade la URL para UNIHIKER a la lista. El orden no importa.
Instalar placa UNIHIKER K10
Luego, instalamos la placa UNIHIKER K10. Abre el BOARDS MANAGER, escribe «unihiker» en el cuadro de búsqueda y deberías ver la placa «UNIHIKER by DFRobot»:

Haz clic en el botón INSTALL y la placa UNIHIKER K10 se instalará. A febrero de 2026 la versión del software de la placa UNIHIKER K10 es 0.0.3.
Luego conecta tu placa UNIHIKER K10 mediante el cable USB a tu ordenador. Arduino IDE debería reconocerla y permitirte seleccionar el puerto COM:

Configuración de herramientas
Finalmente, ajustamos la configuración de la placa, que encontrarás en «Tools»:

Puedes mantener la configuración por defecto excepto «USB CDC on Boot», que debes poner en «Enabled», y el idioma del modelo, que debe ser «EN» (inglés).
Ejemplo de código: Comunicación serial
Antes de probar código complicado, verifiquemos que la carga y comunicación con la placa funcionan. Carga el siguiente código en la placa UNIHIKER K10:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Makerguides");
delay(2000);
}
Luego abre el Monitor Serial y deberías ver el texto «Makerguides» impreso cada dos segundos. Si no, asegúrate de que la configuración de Tools y la velocidad en baudios (115200) sean correctas. Como se mencionó, debes tener «USB CDC on Boot» en «Enabled».
Este código debería funcionar con Arduino IDE y Mind+ IDE.
Ejemplo de código: Pantalla
El siguiente código prueba la función de la pantalla. Establece la orientación de la pantalla a 2, el color de fondo a amarillo (0xFFFF00) y muestra el texto «Makerguides» en la línea 5 en negro (0x000000):
// 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() {
}
En mi caso este código funciona cuando se carga con Mind+ IDE pero no con Arduino IDE. En este último caso el código compila y se puede cargar pero no se ejecuta en la placa. Verás que para todos los ejemplos de código que usan la pantalla, necesitas cargar el código con Mind+.
Para más ejemplos de programación de pantalla consulta el display-showing-text ejemplo.
Ejemplo de código: Medir temperatura y humedad
Este siguiente código usa el sensor integrado ATH20 para medir la temperatura y humedad ambiental. El código mide estos datos ambientales cada segundo y muestra los valores en la pantalla:
// 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);
}
Este código funciona cuando se carga vía Mind+ pero no con Arduino IDE.
Ejemplo de código: Medir brillo
El UNIHIKER K10 también tiene un sensor de luz ambiental integrado, el LTR303ALS. El siguiente ejemplo de código muestra cómo medir la intensidad de luz ambiental (brillo) con este sensor:
// 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);
}
Como usamos la pantalla, este código solo funciona cuando se carga con Mind+ IDE.
Ejemplo de código: Reproducir audio
El siguiente ejemplo demuestra cómo controlar el altavoz del UNIHIKER K10. Reproduce una secuencia diferente de tonos cuando se presiona el botón A o el botón B:
// 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() {
}
He comprobado que este código funciona con Arduino IDE y Mind+ IDE.
También echa un vistazo al audio-record-and-play ejemplo que muestra cómo grabar audio, almacenarlo en la tarjeta SD y reproducirlo por el altavoz.
Ejemplo de código: Acelerómetro
En el siguiente ejemplo usamos los datos del acelerómetro integrado para controlar el movimiento de un punto (bola) en la pantalla. El código dibuja un círculo verde que se mueve en la dirección en que se inclina la placa.
// 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);
}
Este código funciona cuando se carga vía Mind+ pero falla con Arduino IDE.
Para más información sobre el código consulta el on-board-sensor-accelerate-ball ejemplo.
Ejemplo de código: Reconocimiento de voz mínimo
Este código prueba el reconocimiento de voz. Después de decir la palabra de activación «Hi, Telly» o «Jarvis», el LED azul se enciende. Si luego dices «lights on» se imprime «ON» en el monitor serial. Si dices «lights off» se imprime «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");
}
}
Este código funciona con Arduino IDE y Mind+.
Ejemplo de código: Controlar luces con voz
En este ejemplo extendemos el código anterior para encender o apagar los LEDs RGB de la placa usando comandos de voz. Como antes, primero debes decir la palabra de activación «Hi, Telly» o «Jarvis» y luego decir «lights on» o «lights off» para encender o apagar los LEDs.
// 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);
}
}
Este código funcionó con Arduino IDE y Mind+.
Consulta el ai-speech-recognition ejemplo para más información sobre el código.
Ejemplo de código: Atenuar luces con voz
Finalmente, un último ejemplo de reconocimiento de voz. Extendemos el código anterior para controlar también el brillo de los LEDs. El código ahora reconoce los comandos «lights on», «lights off», «brighter» y «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);
}
}
Este código funciona con Arduino IDE y Mind+.
Ejemplo de código: Detección de movimiento
En este ejemplo usamos la cámara integrada del UNIHIKER K10 para detectar movimiento. Cada vez que un objeto se mueve frente a la cámara, los LEDs RGB cambian de color de azul a rojo:
// 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);
}
}
Este código solo funciona cuando se carga con Mind+ IDE.
Consulta el on-board-sensor-accelerate-ball ejemplo para una demostración del código.
Ejemplo de código: Detección facial
Finalmente, probaremos las capacidades de detección facial. El código usa la cámara para detectar rostros. Muestra la imagen de la cámara en la pantalla y dibuja un rectángulo verde (caja delimitadora) alrededor de la cara detectada. También imprime las coordenadas x, y y el tamaño de la caja (w, h) en la pantalla:
// 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);
}
Este código solo funciona cuando se carga con Mind+ IDE.
Consulta el ai-face-detection ejemplo para una demostración del código.
Ejemplo de código: Reconocimiento facial
Nuestro último ejemplo realiza reconocimiento facial. Permite aprender y detectar rostros específicos. Apunta la cámara de la placa hacia un rostro, espera a que aparezca la caja delimitadora y luego presiona el botón A para aprender ese rostro. El LED se vuelve verde cuando se aprende un rostro. Luego presiona el botón B para reconocer rostros. El ID del rostro reconocido se imprime en la pantalla.
// 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();
}
}
La placa almacena los IDs de rostros aprendidos en memoria no volátil, por lo que permanecen incluso después de reiniciar la placa. Para olvidar todos los rostros aprendidos puedes usar el comando ai.sendFaceCmd(DELETEALL). Para olvidar un rostro específico usa ai.sendFaceCmd(DELETE, id). Consulta el ai-face-recognition ejemplo para una demostración del código.
Este código solo funciona cuando se carga con Mind+ IDE.
Solución de problemas: Cargar código con Arduino IDE
Como se mencionó, algunos ejemplos de código no funcionan cuando se cargan con Arduino IDE. El código compila y la carga es exitosa, pero el UNIHIKER K10 se bloquea y queda sin respuesta.
Curiosamente, todos los ejemplos funcionan perfectamente cuando se compilan y cargan con Mind+ IDE. Por lo tanto, no es un problema de hardware de la placa UNIHIKER K10, sino parece estar relacionado con el software core del UNIHIKER K10 que aún está en versión 0.0.3 a febrero de 2026.
Si cargas código usando Arduino IDE y la placa UNIHIKER K10 queda sin respuesta, cierra Arduino IDE y carga o flashea el firmware usando Mind+ IDE. He comprobado que esto «resetea» la placa y luego puede ser flasheada nuevamente con Arduino IDE.
Conclusiones
En este tutorial aprendiste a programar la placa UNIHIKER K10 AI usando Arduino IDE o Mind+ IDE. Los ejemplos mostraron cómo controlar la pantalla y los LEDs, y cómo realizar reconocimiento de voz y facial. Para más ejemplos consulta el WiKi para el UNIHIKER K10. También revisa el code reference para la placa.
El UNIHIKER K10 facilita mucho el uso de algoritmos de IA como reconocimiento de voz y detección facial. Especialmente el reconocimiento de voz es fácil de programar, funciona offline con baja latencia y alta precisión. Para proyectos simples de control por voz es ideal.
Desafortunadamente, el soporte para Arduino IDE y la documentación es algo limitada. Por ejemplo, no hay repositorio github para la librería K10 y la documentación está incompleta. Además, el código de reconocimiento de voz puede cargarse con Arduino IDE, pero no el de reconocimiento facial. Para eso necesitas usar Mind+.
Comparado con placas similares de visión AI como el HUSKYLENS o el HUSKYLENS 2, el UNIHIKER K10 es menos potente y tiene menos modelos de visión AI integrados. Por otro lado, no requiere un segundo microcontrolador para procesar los resultados de detección y el consumo total de energía es mucho menor.
Comparado con el MaTouch AI ESP32S3 TFT o el DFRobot ESP32-S3 AI Camera, el UNIHIKER K10 viene con una buena librería que facilita mucho la programación de aplicaciones de visión AI y reconocimiento de voz.
Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.
¡Feliz bricolaje! 😉

