Community project

Https //www Unihiker Com Cn/wiki/k10

kevinjovi

Published July 24, 2026

ESP320 components2 assembly steps
Remix this project
Photo of Https //www Unihiker Com Cn/wiki/k10

The UNIHIKER K10 is a compact ESP32-based development board with an integrated LCD display, perfect for learning embedded systems and building interactive projects. This starter guide walks through the essentials: powering up the board, uploading firmware, and displaying text on the screen.

Following this guide, makers will receive a complete parts list, wiring diagram, step-by-step assembly instructions, and ready-to-use Arduino firmware that displays uptime on the LCD. The project demonstrates core concepts like screen initialization, canvas drawing, and timed updates—a foundation for more complex applications.

Wiring diagram

Interactive · read-only

Pan and zoom to explore the wiring. Remix the project to edit it in your own workspace.

Assembly

2 steps
  1. Place the UNIHIKER K10 safely

    Set the UNIHIKER K10 on a non-conductive surface with its screen facing upward. Leave the built-in sensors and screen unobstructed.

    • Tip: Do not rest the board on loose metal objects or conductive foam.
    • Avoid touching the board while it is powered if your hands are wet.
  2. Connect USB-C power and programming cable

    Connect a data-capable USB-C cable between the K10 and your computer. This project uses the board’s own USB power; no breadboard wiring or external components are required.

    • Tip: Use a USB data cable, not a charge-only cable.
    • Tip: Keep the cable connected while using Schematik’s Deploy button.
    • Do not force the USB-C connector.

Firmware

ESP32
main.cppDeploy to device
#include <Arduino.h>
#include "unihiker_k10.h"


// Forward declarations
void drawScreen(uint32_t elapsedSeconds);

UNIHIKER_K10 k10;
const uint8_t SCREEN_DIRECTION = 2;
const uint32_t UPDATE_INTERVAL_MS = 1000;

uint32_t lastUpdateMs = 0;
uint32_t displayedSeconds = UINT32_MAX;

void drawScreen(uint32_t elapsedSeconds) {
  k10.canvas->canvasClear();
  k10.canvas->canvasText("UNIHIKER K10", 1, 0x0000FF);
  k10.canvas->canvasText("Starter project", 2, 0x0000FF);
  k10.canvas->canvasText("LCD is working!", 4, 0x00AA00);
  k10.canvas->canvasText("Uptime: " + String(elapsedSeconds) + " s", 6, 0x000000);
  k10.canvas->updateCanvas();
}

void setup() {
  Serial.begin(115200);
  k10.begin();
  k10.initScreen(SCREEN_DIRECTION);
  k10.creatCanvas();
  drawScreen(0);
  displayedSeconds = 0;
  lastUpdateMs = millis();
}

void loop() {
  const uint32_t now = millis();
  if (now - lastUpdateMs < UPDATE_INTERVAL_MS) {
    return;
  }

  lastUpdateMs = now;
  const uint32_t elapsedSeconds = now / 1000UL;
  if (elapsedSeconds != displayedSeconds) {
    drawScreen(elapsedSeconds);
    displayedSeconds = elapsedSeconds;
    Serial.println("K10 uptime: " + String(elapsedSeconds) + " seconds");
  }
}

“Deploy to device” opens this project in Schematik, where you can flash it to your board over USB.

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik