agentCLAWHUBUnverified

UNIHIKER K10 PlatformIO

Use when programming a UNIHIKER K10 board with PlatformIO CLI, creating or converting Arduino/C++ K10 projects to PlatformIO, building, uploading, monitoring... Skill: UNIHIKER K10 PlatformIO Owner: rockets-cn Summary: Use when programming a UNIHIKER K10 board with PlatformIO CLI, creating or converting Arduino/C++ K10 projects to PlatformIO, building, uploading, monitoring... Tags: latest:0.1.10 Version history: v0.1.10 | 2026-07-22T07:43:14.454Z | user Recommend the DFRobot Gravity ADS1115 for safe K10 external analog expansion and publish the latest synchronized K10 skill

OpenClaw

Rank

62

Safety

84

Downloads

1.3k

Updated

Oct 10, 2026

Version

0.1.10

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.3K downloadsadoption · observed Oct 10, 2026
Latest release
0.1.10release · observed Jul 22, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s172xg1ay5cxz756fkf8n3qtmd87evvj:unihiker-k10-platformio
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-platformio/snapshot"

Documentation

CLAWHUB

148,939 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: unihiker-k10-platformio
description: Use when programming a UNIHIKER K10 board with PlatformIO CLI, creating or converting Arduino/C++ K10 projects to PlatformIO, building, uploading, monitoring serial output, diagnosing K10 PlatformIO setup or ASR microphone/wake-word failures, or preparing/installing offline PlatformIO support for workshops, including macOS archives and Windows self-extracting USB installers.
---

# UNIHIKER K10 - PlatformIO

## Overview

Use PlatformIO Core CLI for UNIHIKER K10 Arduino/C++ development. Prefer this skill when the user wants a PlatformIO-based workflow instead of `arduino-cli`, especially for workshops that need predownloaded support files.

Core PlatformIO environment:

```ini
[env:unihiker]
platform = https://github.com/DFRobot/platform-unihiker.git
board = unihiker_k10
framework = arduino
build_flags =
    -DARDUINO_USB_CDC_ON_BOOT=1
    -DARDUINO_USB_MODE=1
    -DModel=None
```

K10 uses DFRobot's PlatformIO platform and Arduino framework package. First build downloads a large framework and toolchains; avoid doing this from every student machine during a workshop.

If a project uses K10 AI, voice recognition, TTS, face recognition, or OTA partitions, preserve the factory model-data offsets. Read the repository reference `references/k10-ai-model-flash.md` when available, or follow the model rules below.

**TTS firmware requirement:** `ASR::setAsrSpeed()` and `ASR::speak()` exist only in the Chinese K10 firmware. Confirm the firmware variant before generating or compiling TTS code. `-DModel=CN` refreshes CN model data; it does not by itself prove that the installed framework/firmware variant provides TTS.

Screen refresh policy: generated K10 display code must prefer partial redraws. Full-screen clearing or full-background redraw causes visible flicker and is uncomfortable; use it only for initialization, page switches, exit cleanup, or when measured full-screen refresh is above 30 fps.

## Quick Workflow

### Windows Self-Contained Offline Installer

For Windows machines with no PlatformIO or Python environment installed, use the self-contained K10 PlatformIO offline installer first. It installs an isolated PlatformIO environment and does not require system `pio`.

Prepare the Windows x64 self-extracting installer on a teacher Windows machine after one successful K10 PlatformIO build:

```powershell
powershell -ExecutionPolicy Bypass -File scripts\prepare-windows-offline-installer.ps1 C:\tmp\K10P-windows-x64.exe
```

Copy the resulting `.exe` to the USB drive. Run it on each student Windows machine; it extracts to `C:\K10P` and runs `setup-platformio.bat`.

Known install locations to check, in order:

```text
C:\K10P
%USERPROFILE%\K10P
%LOCALAPPDATA%\K10P
%LOCALAPPDATA%\K10PlatformIO
```

Check this location before assuming PlatformIO is missing:

```powershell
cd C:\K10P
.\setup-platformio.bat
.\pio.bat --version
.\pio.bat run -d .\examples\Blink
```

Important: use the bundled `pio.bat` or `platfo

_meta.json

{
  "ownerId": "kn7bn6y6610bpcvzaykr1h2m1d83e2rm",
  "slug": "unihiker-k10-platformio",
  "version": "0.1.10",
  "publishedAt": 1784706194454
}

references/k10-ai-model-flash.md

# K10 AI Model Flashing and Recovery

Use this reference when a PlatformIO project combines K10 built-in AI features, voice recognition, TTS, face recognition, OTA partitions, or factory recovery.

## Fixed AI Flash Regions

Keep these offsets unchanged unless DFRobot publishes a new partition table.

| Region | Offset | Size in factory table | Purpose |
| --- | --- | --- | --- |
| `model` | `0x510000` | `4563K` | Speech recognition model image |
| `voice_data` | `0x985000` | `2542K` | TTS voice data |
| `fr` | `0xC01000` | `100K` | Face-recognition related data |

In DFRobot's current K10 PlatformIO framework package:

- `srmodels.bin` is about 3.1 MB and is used by `-DModel=CN`.
- `srmodels4.bin` is about 4.2 MB and is used by `-DModel=EN`.
- `srmodels5.bin` is about 4.5 MB but is not selected by the current PlatformIO upload builder.
- `esp_tts_voice_data_xiaoxin.dat` is about 2.5 MB and is flashed with both CN and EN.

## PlatformIO Environments

Use a normal environment for day-to-day builds and separate initialization environments for model recovery.

```ini
[k10_base]
platform = https://github.com/DFRobot/platform-unihiker.git
board = unihiker_k10
framework = arduino
build_flags =
    -DARDUINO_USB_CDC_ON_BOOT=1
    -DARDUINO_USB_MODE=1

[env:unihiker]
extends = k10_base
build_flags =
    ${k10_base.build_flags}
    -DModel=None

[env:unihiker-init-cn]
extends = k10_base
build_flags =
    ${k10_base.build_flags}
    -DModel=CN

[env:unihiker-init-en]
extends = k10_base
build_flags =
    ${k10_base.build_flags}
    -DModel=EN
```

Use `unihiker-init-cn` or `unihiker-init-en` once over USB when the model partitions may be blank or damaged. Use `unihiker` for normal uploads and OTA app images.

## OTA Partition Rule

Do not use a generic two-slot OTA table whose app partitions grow past `0x510000`; it can overwrite the model region.

Use a model-preserving OTA table:

```csv
# Name,     Type, SubType, Offset,   Size,     Flags
nvs,        data, nvs,     0x9000,   0x5000,
otadata,    data, ota,     0xe000,   0x2000,
app0,       app,  ota_0,   0x10000,  0x280000,
app1,       app,  ota_1,   0x290000, 0x280000,
model,      data, spiffs,  0x510000, 4563K,
voice_data, data, fat,     0x985000, 2542K,
fr,         data, ,        0xC01000, 100K,
coredump,   data, coredump,,         1K,
spiffs,     data, spiffs,  0xC1B000, 0x3E5000,
```

Each OTA app slot is 2.5 MB. If the firmware no longer fits, reduce firmware size, drop OTA, or explicitly decide that the project will not use built-in AI model data.

## Recovery Paths

Official UNIHIKER documentation provides Mind+ recovery:

1. Hold BOOT while connecting USB.
2. Release BOOT after the port appears.
3. Click `Restore Initial Settings`.
4. Press RST when restoration completes.

The hardware download page also provides a factory programme zip for restoring the factory demo after Mind+ initial settings are restored.

references/k10-arduino-api.md

## UNIHIKER_K10
The UNIHIKER K10 library is a library for controlling the K10 on-screen display, on-board sensors, SD card, and playing sound.
Note: The source code for this library will be made available on the DFRobot GitHub when the UNIHIKER K10 SDK is upgraded to the full version.

Screen refresh rule: prefer partial redraws for all repeated display updates. Avoid `canvasClear()` or full-background redraw in loops because it causes visible flicker; use full-screen refresh only for initialization, page switches, exit cleanup, or when measured full-screen refresh is above 30 fps.

````c++ title="Init"
/**
 * @fn begin
 * @brief Initialize UNIHIKER K10 board
 */
void begin(void);
````

````c++ title="Display"
/**
 * @fn initScreen
 * @brief Initialize the screen
 * @param dir Screen orientation
 * @param frame Screen display frame rate
 */
void initScreen(int dir = 2, int frame = 0);

/**
 * @fn creatCanvas
 * @brief Create a canvas
 */
void creatCanvas(void);

/**
 * @fn initBgCamerImage
 * @brief Initialize the camera image
 */
void initBgCamerImage(void);

/**
 * @fn setBgCamerImage
 * @brief Set whether to display the camera image on the screen
 * @param sta Configuration status
 */
void setBgCamerImage(bool sta = true);

/**
 * @fn setScreenBackground
 * @brief Set the screen background color
 * @param color Background color
 */
void setScreenBackground(uint32_t color);

/**
 * @fn canvasText
 * @brief Display text on the canvas
 * @param text Text content
 * @param row Row to display
 * @param color Text color
 */
void canvasText(float text, uint8_t row, uint32_t color);
void canvasText(String text, uint8_t row, uint32_t color);
void canvasText(const char* text, uint8_t row, uint32_t color);

/**
 * @fn canvasPoint
 * @brief Draw a point on the canvas
 * @param x Display coordinate X
 * @param y Display coordinate Y
 * @param color Point color
 */
void canvasPoint(int16_t x, int16_t y, uint32_t color);

/**
 * @fn updateCanvas
 * @brief Update screen display (automatically updates when using camera)
 */
void updateCanvas(void);

/**
 * @fn canvasClear
 * @brief Clear canvas properties
 */
void canvasClear(void);

/**
 * @fn canvasSetLineWidth
 * @brief Set line width for drawing
 * @param w Line width
 */
void canvasSetLineWidth(uint8_t w = 10);

/**
 * @fn canvasLine
 * @brief Draw a line on the canvas
 * @param x1, y1 Starting coordinates
 * @param x2, y2 Ending coordinates
 * @param color Line color
 */
void canvasLine(int x1, int y1, int x2, int y2, uint32_t color);

/**
 * @fn canvasCircle
 * @brief Draw a circle on the canvas
 * @param x Display coordinate X
 * @param y Display coordinate Y
 * @param r Circle radius
 * @param color Border color
 * @param bg_color Background color
 * @param fill Whether to fill the circle
 */
void canvasCircle(int x, int y, int r, uint32_t color, uint32_t bg_color, bool fill);

/**
 * @fn canvasRectangle
 * @brief Draw a rectangle on the canvas
 * @param x Display coordinate X
 * @param y Display coor

references/k10-arduino-examples.md

> Screen refresh rule: the examples below are API demonstrations, not permission to clear or redraw the whole screen in a fast loop. For animations, sensor values, dashboards, voice status, OTA status, and other repeated updates, redraw only changed regions. Use full-screen refresh only for initialization, page switches, exit cleanup, or when measured full-screen refresh is above 30 fps.

## **Display-Set Back Ground Color**
Setting the background color of the K10 screen<br/>
````c++ title="Screen Display"
#include "unihiker_k10.h"

UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
	k10.begin();
	k10.initScreen(screen_dir);
	k10.creatCanvas();
}
void loop() {
	k10.setScreenBackground(0xFFFFFF);
	delay(2000);
	k10.setScreenBackground(0xFF0000);
	delay(2000);
	k10.setScreenBackground(0x00FF00);
	delay(2000);
	k10.setScreenBackground(0x0000FF);
	delay(2000);
	k10.setScreenBackground(0x000000);
	delay(2000);
}
````
![image.gif](img/example_mindplus/exampleMindplus1.gif){: width="250px"}

## **Display-Electronic photo album**
Format the TF card to FAT32 and install it on K10. Press button A on the K10 to take a picture and button B to display it.<br/>

!!! Note 
    TF card is need to run this programme

````c++ title="Electronic photo album"
#include "unihiker_k10.h"

void onButtonAPressed();
void onButtonBPressed();

UNIHIKER_K10 k10;
uint8_t      screen_dir=2;

void setup() {
	k10.begin();
	k10.initScreen(screen_dir);
	k10.initBgCamerImage();
	k10.setBgCamerImage(false);
	k10.creatCanvas();
	k10.buttonA->setPressedCallback(onButtonAPressed);
	k10.initSDFile();
	k10.buttonB->setPressedCallback(onButtonBPressed);
	k10.setBgCamerImage(true);
}
void loop() {
}

void onButtonAPressed() {
	k10.photoSaveToTFCard("S:/photo.bmp");
}
void onButtonBPressed() {
	k10.canvas->canvasDrawImage(0, 0, "S:/photo.bmp");
}
````
![image.gif](img/example_mindplus/exampleMindplus5.gif){: width="250px"}


## **Display-Showing text**
````c++ title="Showing text"
#include "unihiker_k10.h"

UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
	k10.begin();
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	k10.setScreenBackground(0xFFFFFF);
	k10.canvas->canvasText("UNIHIKER", 1, 0x0000FF);
	k10.canvas->updateCanvas();
	delay(1000);
	k10.canvas->canvasText("UNIHIKER", 2, 0xFF0000);
	k10.canvas->updateCanvas();
	delay(1000);
	k10.canvas->canvasText("UNIHIKER", 3, 0x00FF00);
	k10.canvas->updateCanvas();
	delay(1000);
	k10.canvas->canvasText("UNIHIKER", 4, 0x000000);
	k10.canvas->updateCanvas();
	delay(1000);
}
void loop() {
}
````
![image.png](img/example_mindplus/exampleMindplus6.gif){: width="250px"}

## **Display-Draw Point**
````c++ title="Draw Point"
#include "unihiker_k10.h"

uint32_t rgbToColor(uint8_t r, uint8_t g, uint8_t b);

UNIHIKER_K10 k10;
uint8_t screen_dir=2;

void setup() {
	k10.begin();
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	k10.setScreenBackground(0x000000);
}
void loop() {
	for (int index = 0; index < 50; index++) {
		k10.canvas->canvasPoin
Github ReposUpdated 1d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/rockets-cn/skills/unihiker-k10-platformio",
      "sourceUrl": "https://clawhub.ai/rockets-cn/skills/unihiker-k10-platformio",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T17:54:40.592Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-platformio/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-platformio/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T17:54:40.592Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.3K downloads",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T17:54:40.592Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "0.1.10",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-22T07:43:14.454Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-platformio/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-platformio/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 0.1.10",
      "description": "Recommend the DFRobot Gravity ADS1115 for safe K10 external analog expansion and publish the latest synchronized K10 skill updates.",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-platformio",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-22T07:43:14.454Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to UNIHIKER K10 PlatformIO and adjacent AI workflows.