Buddy - the Companion Bot

In today’s fast-paced world, managing time can be a significant challenge, especially for individuals with ADHD or other neurodivergent conditions. The constant struggle to stay on task, maintain focus, and track time can lead to frustration and burnout. To address this, I’ve developed Buddy the Companion Bot—a smart assistive companion designed to help those who often feel overwhelmed by time management. Inspired by the Pomodoro technique, Buddy helps break tasks into manageable intervals, with built-in music and timed breaks, creating a gentle structure that encourages focus without the pressure.

Running on the Unihiker Single Board Computer (SBC) and powered by Python, Buddy combines the open-source software with the portability and power of an Unihiker. Whether you need a calming playlist to help you focus, a reminder to take a break, or just a reliable timer to track your work, Buddy is here to guide you through the day. In this article, I’ll walk you through how this works, how it was developed.

HARDWARE LIST
Unihiker Board
PAM8403 Amplifier Module
TP4056 Charging Board
3.7v 1400 mAH battery
3 w Speaker
STEP 1
Installing Kivy Framework

Code and Enclosure design Files are available on Github

I developed the GUI in python and used the Kivy framework.

Kivy is an open source framework and is reliable solution for developing cross platform applications. And has a smooth performance.

There are two methods to install kivy on unihiker. The first one is PPA and the second is by using pip. Later one works smoothly without any hinderance. While the first one isn't a friendly option.

First of all we have to be logged into the Unihiker via SSH on VS code. You can follow unihiker wiki guide or my previous project DIY Smart Home using Unihiker.

Next in root shell, or command line terminal run the following command.

 

pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/

and it'll take some time to completely install it. Make sure you stay connected to the internet all the time.

Mine is already installed that's why the log looks like this

Mine is already installed that's why the log looks like this

nce the installation is complete you can run the following command,

sudo apt-get update

And again, it'll take some time to update the list. Once it is finished you can check that wether kivy got properly installed or not by importing it.

python

import kivy

Importing Kivy

Importing Kivy

And if no error pops up, then you are good to go.

Required Library imports:

from kivy.app import App

from kivy.uix.screenmanager import ScreenManager, Screen

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.label import Label

from kivy.uix.image import Image

from kivy.uix.button import Button

from kivy.uix.spinner import Spinner

from kivy.clock import Clock

from kivy.core.window import Window

from kivy.animation import Animation

from kivy.uix.filechooser import FileChooserListView

from kivy.core.audio import SoundLoader

STEP 2
Enclosure Design

So I designed the Enclosure in Shapr3D and got it printed by friend of mine.

There are three main parts,

Back Plate

Front Panel and Walls

Button Caps

 

icon Unihiker-Case.zip 8.62MB Download(0)
STEP 3
GUI Design

So I have designed this GUI based on three screens.

First is main screen Which displays text Buddy animation in and out.

It has background image from pinterest.

 

Second screen, this is the main screen. It has the Timer and button to adjust the Time duration, break time, and Music selsction and Start Timer and Reset Timer. And a button to Go back to main screen.

 

Third screen, It is the screen where we can select the music and Play it. We can select the music available in folder.

 

STEP 4
Future Goal

I have added the Slots and hole for wires on the opposite side of C-Type Inlet. This Slot will help it to mount it on the Chassis along with wheels. It'll be able to drive around and explore the enviroment using sensors.

I'll be using it as Emote buddy using Self Balancing Chassis. So that it'll be able to interact with the environment. And Listen to commands instead of relying on GUI control.

So that's my future goal for this project.

 

License
All Rights
Reserved
licensBg
0