Digitalni sat na Raspberry Piju u Pythonu

· #raspberry pi #python #gtk #openbox #linux

Sadržaj

Raspberry Pi s malim HDMI zaslonom kao digitalni sat. Za sam sat ovo je pretjerano, ali je dobra osnova za buduće projekte: info zaslon koji uz vrijeme prikazuje temperaturu, stanje u kući ili upravlja rasvjetom.

Sustav je minimalan: Raspberry Pi OS Lite, X11 bez desktop okruženja, upravitelj prozora Openbox i Python aplikacija napisana s PyGObjectom (GTK 3), koja se sama pokreće pri paljenju.

Raspberry Pi digitalni sat na Waveshare 5" HDMI zaslonu

Ažurirano u listopadu 2026.

Upute za instalaciju osvježene su u listopadu 2026. Od izvorne objave se Raspberry Pi OS dosta promijenio: nema više zadanog korisnika pi, mrežu vodi NetworkManager umjesto dhcpcd-a, a paketi za Python 2 su uklonjeni. Postupak je prilagođen trenutnom Raspberry Pi OS-u (Trixie).

Potrebno

  • Raspberry Pi (sat je napravljen na Raspberry Piju 2),
  • Waveshare 5" HDMI LCD (800 × 480),
  • microSD kartica,
  • napajanje za Raspberry Pi.

Priprema microSD kartice

Najjednostavnije je koristiti Raspberry Pi Imager. Odaberi model Raspberry Pija, Raspberry Pi OS Lite (za Raspberry Pi 2 inačicu od 32 bita) i karticu.

U postavkama prilagodbe (Customisation) odmah upiši:

  • naziv računala (hostname),
  • korisničko ime i lozinku,
  • Wi-Fi mrežu, ako Pi nije spojen kabelom,
  • vremensku zonu i raspored tipkovnice,
  • uključi SSH pod Remote Access.

Upozorenje

Raspberry Pi OS više nema zadanog korisnika pi s lozinkom raspberry. Ako korisnika ne postaviš u Imageru, nakon prvog pokretanja nećeš se moći prijaviti preko SSH-a.

Postavke zaslona

Nakon što Imager zapiše karticu, ponovno je umetni u računalo. Na particiji bootfs otvori config.txt i na kraj datoteke dodaj postavke za Waveshare 5" zaslon:

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
hdmi_drive=1

Na pokrenutom Raspberry Piju ista se datoteka nalazi u /boot/firmware/config.txt, a ne više u /boot/config.txt.

Savjet

Ako slika ne ispunjava zaslon ili je mutna, na kraj jedinog retka u datoteci cmdline.txt, na istoj particiji, dodaj razmak i video=HDMI-A-1:800x480M@60.

Prvo pokretanje i nadogradnja

Umetni karticu u Raspberry Pi, spoji zaslon i napajanje te se nakon minute-dvije prijavi preko SSH-a:

ssh korisnik@naziv-racunala.local

Nadogradi sustav:

sudo apt update
sudo apt full-upgrade
sudo reboot

Statička IP adresa (po želji)

Najjednostavnije je u routeru rezervirati IP adresu za Raspberry Pi. Ako je želiš postaviti na samom Raspberry Piju, od Raspberry Pi OS-a 12 to se radi preko NetworkManagera, a ne više u /etc/dhcpcd.conf. Prvo pronađi naziv veze:

nmcli con show

Zatim postavi adresu, prilagodivši je svojoj mreži:

sudo nmcli con mod "Wired connection 1" ipv4.method manual \
  ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 \
  ipv4.dns "192.168.1.1 8.8.8.8"
sudo nmcli con up "Wired connection 1"

Ako si spojen preko SSH-a, veza će se prekinuti. Ponovno se spoji na novu adresu.

Automatska prijava u konzolu

sudo raspi-config

Odaberi System Options → Boot / Auto Login → Console Autologin, a zatim Finish.

Instalacija X11, Openboxa i PyGObjecta

sudo apt install --no-install-recommends xserver-xorg xinit x11-xserver-utils openbox
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 git

To je sve što satu treba. Ako želiš i terminal, upravitelj zadataka i alate za podešavanje izgleda, dodaj:

sudo apt install obconf lxterminal lxtask lxappearance

Napomena

Paketi python-gi, python-gi-cairo i obmenu iz prve verzije uputa više ne postoje, jer su bili za Python 2. Ako su navedeni u naredbi, apt prekida cijelu instalaciju.

Preuzimanje aplikacije

Kod je na GitHubu. Uz Python skriptu treba i datoteka theme.css s bojama i veličinama fonta, pa je najlakše klonirati cijeli repozitorij:

mkdir -p ~/Projects/python
git clone https://github.com/ebaketa/digital_clock.git ~/Projects/python/digital_clock

Automatsko pokretanje X-a i sata

X se pokreće automatski nakon prijave na prvoj konzoli. Na kraj datoteke ~/.profile dodaj:

if [ -z "$DISPLAY" ] && [ "$(tty)" = /dev/tty1 ]; then
    exec startx
fi

Najlakše je to napraviti s nano ~/.profile, bez sudo, jer je datoteka tvoja.

Openbox pri pokretanju izvršava datoteku ~/.config/openbox/autostart:

mkdir -p ~/.config/openbox
nano ~/.config/openbox/autostart

U nju upiši:

# disable screen saver and display power management
xset s off &
xset s noblank &
xset -dpms &

# run python digital clock
python3 ~/Projects/python/digital_clock/digital_clock.py &

Na kraju ponovno pokreni Raspberry Pi:

sudo reboot

Nakon pokretanja Pi se sam prijavi, pokrene X i Openbox, a sat se otvara preko cijelog zaslona. Tipka F11 prebacuje između prikaza preko cijelog zaslona i prozora.

Nadogradnja aplikacije

cd ~/Projects/python/digital_clock
git pull
sudo reboot