icon

n8n Terminal with Unihiker K10

Adding physical buttons and a miniscreen to any n8n automation with Unihiker K10

Parts Required

This project is based on the Unihiker K10. If you are an old time user and a big fan of the classic Unihiker (M10) like me be aware that the M10 and K10 are different boards:

M10 → Unix-based, programmed in Python.

K10 → ESP32-based, programmed with Arduino IDE.

The K10 comes loaded with features: 240x320 screen, onboard buttons, RGB LED, microSD slot, camera, speaker, microphone, light sensor, temperature sensor, and accelerometer. It also has Gravity connectors for easily adding external buttons.

Ā 

Unihiker K10

microSD card

2 Gravity digital buttons

Ā 

Reference: K10 Arduino IDE Code Documentation

Ā 

Ā 

n8n Setup

If you don’t have an account, you can create one at n8n.io and get $5 of credits for your first project. n8n is open source, so you can also host it yourself or use a hosting service with n8n template like RailwayĀ 

Open my workflow template to get up and running quickly (soon to be approved)

Configure your Google Sheets and Google Gemini credentials (Google Sheets API is free; Gemini has a free tier).

Get the webhook URL—this will go into the .ino code.

Ā 

Ā 

Software Preparation

As of writing, the K10 requires Arduino IDE v1.8.19 or earlier for programming. You can install multiple Arduino versions side by side.

Steps:

Download Arduino IDE 1.8.19

Go to Preferences → Additional Board URLs and add:

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

Select K10 as the board and the correct port.

Download n8nTerminal.ino and the .wav sound file from GitHub.

Edit n8nTerminal.ino to include your Wi-Fi credentials and the webhook URL. Adjust JSON fields if needed—my demo uses idShipping, name, address, and notes, but you can customize them.

Connect the board via USB Type-C and click Upload. (For some reason, my upload progress sometimes repeats three times—be prepared.)

Ā 

3D Enclosure

Ā 

I designed a 3D-printed enclosure for the K10 and its buttons. It leaves the lights visible, the speaker unobstructed, and includes:

A back hole for wall mounting.

Cutouts for front sensors.

You can get the enclosure on Cults. You will also need 1x m3 screw and 4x 3mm screwsĀ 

Ā 

Demo

Ā 


Ā 

I created a simple demo for a fictional e-commerce company. At the delivery warehouse, an employee presses a button on the n8n Terminal to fetch the next package to deliver. The Terminal triggers an n8n workflow, which calls an AI agent powered by Gemini Flash 2.5 — although ChatGPT-5 or any other LLM could be used — to retrieve pending shipments from a Google Sheet. The agent checks the current date and time, then follows system rules to determine the next delivery.

Ā 

In essence, it selects any row where the "Sent" cell is false, prioritizing the oldest shipping date. However, it also takes into account the "Notes" column, so if a customer is marked as anxious, their order may be prioritized even if placed later. The resulting data is sent to the n8n Terminal’s screen, and the employee can press a second button to generate a QR code with the same information. Finally, the "Sent" cell in the sheet is updated.

Communication between n8n and n8n terminal is done by json. Example

Ā 

[{"output":{"idShipping":"1","name":"Juan Perez","address":"San Juan 8888","notes":"Solo queria decir que entreguen por la tarde"}}]

Ā 

Ā 

Source code and files

Ā 

Github https://github.com/ronibandini/n8nTerminal
Cults https://cults3d.com/en/3d-model/gadget/n8n-terminal-esp32-based-screen-and-button
n8n Template https://creators.n8n.io/workflows/7296

License
All Rights
Reserved
licensBg
0