Story
YOLU is the autonomous robot I have made before the year 2025 hits. I am satisfied with everything except one feature I wish it had. A capability of monitoring it wireless.
The capability of reading sensor status information from other Bluetooth or wifi enabled devices.The Other vital information like battery status , sending video via Bluetooth or wifi from the camera the robot has in the future is also so cool. Imagine wearing the powerful mini computer in your wrist and it shows you all the cool stuff about your hardware/s you specifically custom program it with.
The hardware choice to realize this idea was so obvious:
The Unihiker board is the one!.No doubt!.
A built in wifi/Bluetooth connection, running Debian/Linux, and topped with the powerful python. I found the Unihiker board to be the perfect choice for a wearable cyber-deck computer I have in mind. In fact this cyber-deck I am designing is open and it can be customized to any project in mind.
Inspiration
For my curiosity and inspiration I hit some AI search. As this challenge is all about uniqueness and style the case design for the Unihiker, I found some results that ignited my imagination but are they practical for my design? Let us find out.
Here are some inspirations I got from google Gemini :
generate an image of UNIHIKER board with 2.8 inch touch screen that fits like a big 3D printed plastic bracelet case in the inner part of a wrist
Reality
That was Very cool right? I know!! . In reality I had to put all the hardware: The Unihiker board, the lithium-ion battery, the charging module, some wires and finally the inner closing plate in the case and all have to fit in the left arm of my wrist. Very interesting challenge but doable.
The idea , in the picture is that, it is possible to use keyboard to type in both hands while the Unihiker is on the wrist (inside or out side wrist) making you cool and all free hands. The design I am approaching is the shape of human wrist as slim as possible, and as fashionable as possible (Wearable is the technical term). It is also possible to attach a Velcro belt and it fits to any wrist size. Here is the unique design approach:
I tried to leave a space for the 7.8 V lithium-ion 100mm X 40mm , stepdown module 20mm X 20mm and for wireless charging module (Reciever). Leaving basic hardware parts in the design consideration is vital.
So finally, these are the main components to consider dimension the cyber-deck. Here is the final video showing the look of the unique wearable cyber-deck that can pack a power inside.
Here is the python code for the Unihiker board:
import socket
from unihiker import UniHiker
import time
# Initialize UniHiker
uh = UniHiker()
# Wi-Fi Connection Parameters
ESP32_IP = "192.168.4.1" # Replace with the ESP32's IP address
ESP32_PORT = 12345 # Replace with the ESP32's listening port
# Create a socket to communicate with ESP32
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5) # 5 seconds timeout
try:
print("Connecting to ESP32...")
sock.connect((ESP32_IP, ESP32_PORT))
print("Connected to ESP32!")
except socket.error as e:
print(f"Error connecting to ESP32: {e}")
uh.screen.text("Error connecting to ESP32!", x=20, y=20, color=(255, 0, 0))
exit()
def update_display(data):
"""Update the UniHiker screen with received data."""
uh.screen.clear() # Clear the screen
uh.screen.text(f"Received Data:", x=10, y=10, size=20, color=(0, 0, 255))
uh.screen.text(data, x=10, y=50, size=20, color=(0, 255, 0))
try:
while True:
# Receive data from ESP32
try:
data = sock.recv(1024).decode('utf-8')
if data:
print(f"Data received: {data}")
update_display(data)
else:
print("No data received.")
except socket.timeout:
print("No data received (timeout).")
time.sleep(1)
except KeyboardInterrupt:
print("Exiting...")
sock.close()
uh.screen.text("Disconnected.", x=20, y=20, color=(255, 0, 0))
Here is an arduino code in the robot ESP32 side: (this can be any hardware implementation depending on the hardware you want to display and control to.
#include <WiFi.h>
const char* ssid = "ESP32-Access-Point"; // SSID of ESP32's Wi-Fi
const char* password = "12345678"; // Password for the Wi-Fi
WiFiServer server(12345); // Create a server on port 12345
void setup() {
Serial.begin(115200);
// Start Wi-Fi in AP mode
WiFi.softAP(ssid, password);
Serial.println("Wi-Fi Access Point started");
Serial.print("IP Address: ");
Serial.println(WiFi.softAPIP());
// Start the server
server.begin();
Serial.println("Server started");
}
void loop() {
WiFiClient client = server.available(); // Check for incoming clients
if (client) {
Serial.println("Client connected");
while (client.connected()) {
// Send data to the client
String message = "Hello from ESP32! Time: " + String(millis() / 1000) + "s";
client.println(message);
Serial.println("Message sent: " + message);
delay(1000); // Send a message every second
}
client.stop();
Serial.println("Client disconnected");
}
}
>Connect the UniHiker to the ESP32's Wi-Fi Access Point (ESP32-Access-Point).
>Use the same IP address (192.168.4.1) and port (12345) in the UniHiker code.
>Upload the ESP32 code using the Arduino IDE.
>Open the Serial Monitor to see connection details and message logs.
> Run the UniHiker code.
>When the UniHiker connects to the ESP32, you should see the data displayed on the UniHiker screen.
Here is the complete design file online : https://www.thingiverse.com/thing:6907568 or download it here zipped.