PJER / PROJECT DUMP

oke, dovoljno si puta kliknuo Pjera

★ RASPBERRY PI ★ ROBOTIKA ★ 3D PRINT ★ OPEN SOURCE ★ MREŽE ★ PREVIŠE KABLOVA ★

stvari koje sam stvarno radio umjesto da ostavim hardver na miru

Ovo nije CV i nije savršeno složen portfolio. Više je tehnička hrpa svega što je kroz vrijeme završilo na stolu: Raspberry Pi, NAS, VPN, robotika, embedded, 3D print, visoki napon, natjecanja i projekti koji uglavnom počnu s „ovo bi bilo fora”.

klikni naslov projekta da otvoriš detalje. slike se mogu povećati i zatvaraju se samo na X.

🏠 Homelab / Raspberry Pi 5 / NAS / VPN
Raspberry Pi 5, platforma korištena kao baza homelaba
Raspberry Pi 5 — reprezentativna fotografija hardvera. Wikimedia Commons; licenca je navedena na izvornoj file-stranici.

Srce homelaba je Raspberry Pi 5 s 8 GB RAM-a. Projekt je krenuo kao kućni NAS, ali se s vremenom pretvorio u mali self-hosted server: storage, SMB file sharing, udaljeni pristup preko VPN-a, HTTPS administracija, automatizacija i nadzor događaja.

platforma: Raspberry Pi 5, 8 GB
NAS sloj: OpenMediaVault
file sharing: Samba / SMB
diskovi: oko 1.8 TB + 916 GB
shareovi: BLACK + BLUE
remote access: PiVPN / OpenVPN
VPN transport: custom UDP port
admin: OMV web UI preko HTTPS-a
automatizacija: systemd + hook skripte
obavijesti: SMTP / e-mail event logovi

arhitektura: što je javno, a što ostaje iza VPN-a

internet
   │
   ▼
router / javna IP
   │
   │  NAT + port-forward samo za VPN servis
   ▼
Raspberry Pi 5
   │
   ├── OpenVPN / PiVPN
   │      │
   │      └── šifrirani tunel prema kućnom LAN-u
   │
   ├── OpenMediaVault web admin ── nije direktno izložen internetu
   ├── Samba / SMB shareovi ────── nisu direktno izloženi internetu
   ├── disk 1 ── BLACK
   ├── disk 2 ── BLUE
   └── systemd / hookovi / SMTP obavijesti

Bitna odluka u dizajnu je da se SMB i OMV admin ne objavljuju izravno na internetu. Izvana je dostupan VPN endpoint; nakon uspješne VPN autentikacije klijent dobiva put prema privatnoj mreži i tek tada pristupa serveru kao lokalnom uređaju. Time se broj javno izloženih servisa smanjuje na minimum.

NAT i port forwarding

Kućni uređaji koriste privatne IP adrese koje internet sam po sebi ne routa. Router radi NAT — Network Address Translation — i prema internetu predstavlja cijelu lokalnu mrežu jednom javnom adresom. Dolazni paket s interneta zato ne zna automatski kojem lokalnom uređaju pripada.

Port forwarding dodaje eksplicitno pravilo: promet za odabrani VPN UDP port prosljeđuje se Raspberry Piju. To pravilo ne znači da je cijeli Pi „otvoren internetu”; javno je dostupan samo servis koji sluša na proslijeđenom portu.

što OpenVPN zapravo radi

OpenVPN između klijenta i Raspberry Pija uspostavlja autentificirani i šifrirani tunel. Operacijski sustav dobije virtualni mrežni interfejs, a IP paketi namijenjeni kućnoj mreži ulaze u taj virtualni interfejs, kriptiraju se, šalju kroz internet i na VPN serveru ponovno izlaze kao normalan mrežni promet.

laptop / mobitel
   │
   │  privatni IP paket: "želim 192.168.x.x"
   ▼
virtualni VPN interfejs
   │
   │  enkripcija + autentikacija
   ▼
internet
   │
   ▼
OpenVPN na Raspberry Piju
   │
   │  dekripcija
   ▼
kućni LAN / OMV / Samba

To je važna razlika u odnosu na običan web login: VPN ne štiti samo jednu stranicu nego stvara privatni mrežni put kroz koji mogu prolaziti različiti protokoli.

OpenMediaVault: upravljački sloj, ne filesystem sam po sebi

OpenMediaVault daje web sučelje za administraciju Linux storagea: diskove, mountove, korisnike, shared foldere, dozvole i servise. Pod njim i dalje postoje normalni Linux filesystemi i Linux permission model. OMV zato nije „poseban tip diska”; on organizira i konfigurira postojeće Linux storage komponente.

Samba / SMB: kako Windows vidi Linux disk kao mrežni share

Samba implementira SMB protokol na Linuxu. Kada Windows otvori mrežni share, on ne čita ext4 ili drugi Linux filesystem izravno. Windows šalje SMB zahtjeve serveru, Samba ih prevodi u filesystem operacije na Linuxu, a zatim rezultat vraća klijentu kroz mrežu.

Zbog toga postoje najmanje dva sloja dozvola: Samba pravila i stvarne Linux dozvole nad direktorijem. Ako jedan sloj dopušta pristup, a drugi ga blokira, korisnik svejedno neće moći otvoriti podatke.

HTTPS na OMV-u i zašto browser može reći „nije sigurno” iako je promet šifriran

HTTPS daje TLS enkripciju između browsera i OMV web servera. Kod self-signed certifikata enkripcija može biti potpuno stvarna, ali browser nema javni Certificate Authority kojem vjeruje i koji jamči da je taj certifikat stvarno izdao baš tvoj server.

Zato upozorenje browsera u tom slučaju najčešće znači „identitet certifikata nije potvrđen kroz moj trust store”, a ne automatski „promet ide plaintextom”. Ako certifikat ručno vjeruješ na svom uređaju ili koristiš vlastiti lokalni CA, warning se može ukloniti bez izlaganja admin sučelja javnom internetu.

zašto VPN + HTTPS zajedno imaju smisla

VPN i HTTPS nisu duplikat iste zaštite. VPN kontrolira tko uopće može doći do privatnog servisa i kojim mrežnim putem; HTTPS štiti konkretnu web sesiju i potvrđuje identitet servera kada je certifikat pravilno trusted. Obrambeni slojevi se zato nadopunjuju.

heartbeat sustava: systemd, hookovi i obavijesti

Na serveru se mogu vezati systemd servisi/timeri i OpenVPN hook skripte uz određene događaje: start/stop servisa, VPN connect/disconnect, periodične provjere ili druge administrativne događaje. Skripta zatim može zapisati event u log ili poslati e-mail kroz SMTP relay.

To daje jednostavan audit trail bez potrebe da stalno ručno gledaš server: ako se dogodi događaj koji si odlučio pratiti, server sam ostavlja trag ili šalje obavijest.

security model ovog setupa

  • minimalno izlaganje: javno je potreban samo VPN endpoint; SMB i OMV ostaju privatni.
  • enkripcija u tranzitu: udaljeni promet ide kroz VPN, a OMV web UI dodatno koristi HTTPS.
  • autentikacija: pristup VPN-u i pristup shareovima nisu ista vjerodajnica ni isti sloj.
  • least privilege: share korisnik treba samo prava koja stvarno koristi, ne nepotrebni admin pristup.
  • patching: sigurnost ovisi i o redovnom ažuriranju OS-a, OpenVPN-a, OMV-a i ostalih servisa.
  • backup: RAID, više diskova ili NAS sami po sebi nisu backup; važni podaci trebaju odvojenu kopiju.

homelab nije „siguran zato što je Raspberry Pi”. siguran je samo onoliko koliko su dobri mrežni dizajn, konfiguracija, credentiali, updateovi i backup strategija.

Wikimedia Commons – Raspberry Pi 5 ↗ · OpenMediaVault ↗ · Samba ↗ · OpenVPN ↗

🎮 Retro konzola / Raspberry Pi 4 + RetroPie + 5" DSI
Raspberry Pi 4, baza retro konzole
Raspberry Pi 4 — baza retro konzole. Wikimedia Commons, CC0 za ovu fotografiju.

Retro konzola je mali samostalni emulacijski uređaj napravljen oko Raspberry Pi 4, RetroPie/Raspberry Pi OS-a i 5-inčnog DSI ekrana. Ideja nije bila samo pokrenuti emulator na Piju, nego složiti cijeli fizički uređaj: lokalni ekran, kontroler, boot u game frontend, mogućnost TV/HDMI načina rada i vlastito 3D-printano TMNT kućište.

compute: Raspberry Pi 4
OS / stack: Raspberry Pi OS + RetroPie
frontend: EmulationStation
emulation: RetroArch / libretro coreovi + pojedinačni emulatori
lokalni display: 5" DSI ribbon ekran
vanjski display: HDMI / TV mode
input: USB / Bluetooth gamepad
kućište: vlastiti 3D print / TMNT tematika

softverski stack: frontend nije isto što i emulator

EmulationStation je sučelje kroz koje biraš sustav i igru. Ono organizira biblioteku i zatim pokreće odgovarajući emulator. RetroArch je zajednički runtime/frontend za mnoge libretro coreove; svaki core implementira emulaciju određenog sustava ili obitelji sustava. RetroPie sve to povezuje u jedan praktičan setup na Raspberry Piju.

power on
   │
   ▼
Raspberry Pi OS / Linux
   │
   ▼
EmulationStation
   │  odabir sustava + igre
   ▼
RetroArch / standalone emulator
   │
   ▼
libretro core / emulirani stroj
   │
   ├── emulirani CPU
   ├── memorijska mapa
   ├── grafika / video timing
   ├── audio čip
   └── controller input
        │
        ▼
DSI ekran ili HDMI + zvuk

što emulator zapravo radi

ROM nije pretvoren u ARM program za Raspberry Pi. Emulator izvršava ili prevodi instrukcije originalnog procesora i istodobno modelira ostatak stroja: memorijske adrese, registre, video sustav, audio hardver, timere i input. Igra zato „misli” da razgovara s originalnom konzolom, iako svaki taj hardverski uređaj zapravo predstavlja softverski model.

Kod jednostavnijih sustava to može biti relativno lagano. Kod kompleksnijih konzola emulator mora održavati precizne odnose između više procesora, GPU-a, zvuka i vremena izvršavanja. Zbog toga zahtjevnost ne raste samo s rezolucijom stare konzole — bitna je i složenost hardvera koji treba dovoljno vjerno oponašati.

DSI vs HDMI način rada

Jedan od praktičnih problema bio je kako imati mali ugrađeni DSI ekran za samostalno korištenje, a po potrebi prebaciti konzolu na televizor preko HDMI-ja. DSI i HDMI nisu samo dva identična konektora za isti ekran: Linux/Raspberry Pi display konfiguracija mora znati koji output koristiti, s kojom rezolucijom i kojim framebuffer/display parametrima.

Zato je smislen pristup imati dva poznata config stanja — jedno za DSI, drugo za HDMI — i jednostavnu skriptu dostupnu iz RetroPie/EmulationStation menija koja promijeni konfiguraciju te rebootom aktivira novi display način rada.

                 ┌── DSI MODE ── 5" ugrađeni ekran
boot config ─────┤
                 └── HDMI MODE ── TV / monitor

menu skripta
   │
   ├── odabere željeni config
   ├── spremi stanje
   └── reboot → novi output postaje aktivan

put kontrolera: od gumba do igre

Kad stisneš tipku na gamepadu, događaj prvo dolazi do USB/Bluetooth kontrolera i Linux input subsystema. Emulator taj input čita, mapira ga na emulirani kontroler originalne konzole i tek tada virtualni stroj registrira pritisak tipke.

prst
 │
 ▼
gamepad switch
 │
 ▼
USB / Bluetooth polling
 │
 ▼
Linux input event
 │
 ▼
RetroArch / emulator input map
 │
 ▼
emulirani controller register
 │
 ▼
igra reagira
 │
 ▼
render frame → ekran

odakle dolazi input latency

Latencija nije jedna brojka iz jednog izvora. Mali dijelovi vremena mogu nastati u gamepadu, USB/Bluetooth pollingu, Linux input obradi, načinu na koji emulator sinkronizira frameove, video bufferima, VSync-u i samom panelu. Zato emulator može raditi na „punih 60 FPS”, a svejedno osjećati tromije od originalnog hardvera ako pipeline ima nekoliko dodatnih frameova čekanja.

zašto 5" ekran mijenja dizajn cijelog uređaja

Ugrađeni ekran znači da konzola nije samo Pi spojen na TV. Kućište mora držati panel i ribbon kabel bez oštrih savijanja, ostaviti pristup kontrolama i portovima te osigurati da ekran, Pi i kabeli fizički stanu bez pritiska na konektore. DSI ribbon je posebno osjetljiv na lošu mehaničku putanju jer nije zamišljen da bude zgnječen između printanih dijelova.

3D-printano TMNT kućište

Kućište je dio projekta jednako kao i softver. Kod funkcionalnog FDM printa treba ostaviti toleranciju oko Raspberry Pija, konektora i ekrana; rupe iz CAD-a ne izlaze nužno identične nominalnoj mjeri nakon printa. Također treba misliti na protok zraka i temperaturu, pogotovo kada se Pi 4 nalazi u zatvorenoj plastičnoj kutiji tijekom duljeg emuliranja.

TMNT izgled je estetski dio, ali mehanički dio mora riješiti puno manje glamurozne stvari: kako otvoriti kućište, kako ne čupati DSI ribbon, gdje prolazi napajanje, može li se doći do HDMI-ja i USB-a te hoće li se kućište iskriviti oko toplijih dijelova.

zašto je projekt više od „instalirao sam RetroPie”

  • softver: Linux + RetroPie + EmulationStation + emulatori/coreovi;
  • display: dva različita output scenarija, DSI i HDMI;
  • input: gamepad konfiguracija i latency pipeline;
  • mehanika: vlastito 3D-printano kućište, tolerancije i cable management;
  • termika: Pi 4 mora ostati dovoljno hlađen i unutar kućišta;
  • UX: uređaj treba bootati u nešto što se može koristiti kao konzola, a ne svaki put zahtijevati terminal i tipkovnicu.

Wikimedia Commons – Raspberry Pi 4 B ↗ · RetroPie ↗ · RetroArch ↗

🤖 Mecanum line follower / Arduino Mega / encoder feedback
Arduino Mega 2560, kontroler robota
Arduino Mega 2560 — kontroler projekta. Fotografija: Andy Dingley / Wikimedia Commons, CC BY-SA 3.0.

Robot je mecanum line follower s četiri zasebno pogonjena kotača, encoderima, IR line-sensor poljem i state machine logikom. Mecanum geometrija znači da nije ograničen na naprijed/natrag + rotaciju: pravilnim kombiniranjem brzina četiri kotača može raditi i bočni strafe.

kontroler: Arduino Mega
motor driver: Hiwonder 4-Ch Encoder, I²C 0x34
line sensor: Hiwonder 8-Ch IR, I²C 0x5D
motori: JGB37-520, 12 V, 110 RPM, 1:90
feedback: Hall AB encoderi
kotači: mecanum
display: LCD 20×4 I²C
napajanje: Einhell 18 V → buck 12 V

vanjska i unutarnja regulacija

Line follower radi kao hijerarhija. Vanjska petlja iz IR senzora računa položaj crte i generira korekciju smjera. Motor driver istodobno koristi encoder feedback za regulaciju brzine pojedinih motora. To je važno jer isti PWM ne znači nužno istu brzinu na četiri realna motora.

Zadnje korištene PID vrijednosti za line-follow korekciju bile su približno Kp = 0.26, Ki = 0.02, Kd = 0.18, uz BASE 24 i MAX 42. P dio reagira na trenutačnu pogrešku, I dio na akumulirani offset, a D dio na brzinu promjene pogreške.

state machine

FOLLOW_LINE
   ├── TURN_L_90
   ├── TURN_R_90
   ├── SEARCH_LINE
   ├── STRAFE
   ├── FRONT_BUMP
   ├── BACK_BUMP
   └── FULL_LINE_STOP

Za strafe su korišteni zasebni parametri, uključujući preload i ramp, jer idealna mecanum matematika ne zna za trenje, zazor, neravnomjeran pritisak kotača i inerciju stvarnog robota. Robot zato treba prijelaz, a ne samo trenutačno postaviti teorijski vektor.

i da: motor driver je kroz razvoj pregorio više puta. to je isto dio dokumentacije.

Wikimedia Commons – Arduino Mega 2560 ↗

⚡ „ozonator” / 18650 + impulsni HV generator
Korona izboj u zraku, fenomen povezan s visokim električnim poljem
Korona izboj u atmosferskom zraku oko oštre elektrode — ilustracija fizikalnog fenomena, ne fotografija točno našeg modula. Wikimedia Commons, CC BY 4.0.

Projekt je koristio tipični mali modul koji se prodaje kao „DC 3–6 V → 400 kV pulse generator”. Marketinšku brojku „400 kV” ne treba tretirati kao kalibrirano mjerenje stvarnog izlaza. Takvi moduli daju visokonaponske impulse, a stvarni napon i energija ovise o topologiji modula, napajanju, opterećenju, razmaku i geometriji elektroda.

ćelija: XTAR INR18650, 2600 mAh, 1S Li-ion
napon ćelije: oko 3.6–3.7 V nominalno, 4.2 V puna
BMS: 1S common-port, 15 A
punjenje: USB-C TP4056, 1 A
HV modul: 3–6 V impulsni generator
LV wiring: 18 AWG
konektor: XT30

što impulsni HV modul radi u principu

Niski DC napon najprije se elektronički prekida velikom frekvencijom. Promjenjiva struja može zatim pobuditi transformator s velikim omjerom namota, nakon čega ovisno o konkretnoj izvedbi slijedi visokonaponsko ispravljanje i/ili multiplikacija. Ključ je da transformator ne može povisiti savršeno konstantan DC; treba mu promjenjivi magnetski tok, pa elektronika na ulazu DC najprije pretvara u pulsirajući signal.

zašto nastaje korona i ozon

Jako električno polje može ubrzati slobodne elektrone dovoljno da sudarima pobude, ioniziraju ili disociraju molekule plina. U zraku dio procesa može disocirati molekularni kisik:

e⁻ + O₂ → e⁻ + O + O

Slobodni O zatim može sudjelovati u tro-tjelesnoj reakciji u kojoj treća čestica M odnese višak energije:

O + O₂ + M → O₃ + M

Oštar vrh elektrode koncentrira električno polje, pa se djelomični izboj može pojaviti lokalno prije nego što cijeli razmak prijeđe u veliki luk. Korona i potpuni električni luk nisu ista stvar. Luk snažno zagrijava kanal plina; više vidljive iskre ne znači automatski više korisno proizvedenog ozona.

sigurnosna napomena: ovo je opis fizike i konkretnog starog projekta, ne uputa za povećavanje izlaza. Impulsni HV moduli mogu dati bolan ili opasan udar, Li-ion ćelije nose vlastiti rizik, a ozon je respiratorni iritans. EPA navodi da ozon pri koncentracijama koje su sigurne za ljude općenito nije učinkovit univerzalni „air cleaner”, a veće koncentracije mogu oštetiti pluća.

Wikimedia Commons – corona discharge ↗ · EPA – Ozone Generators ↗

🏆 WorldSkills Croatia 2026 / Robotika

Ovdje su zapravo dva odvojena rezultata koja vrijedi razlikovati. Na izlučnom natjecanju u Zadru tim Pjer Flajhar + Vito Radman osvojio je 1. mjesto i izborio plasman na državno. Nekoliko mjeseci poslije na državnom WorldSkills Croatia 2026 isti je tim u disciplini Robotika osvojio 2. mjesto — srebrnu medalju. Mentor je bio Marko Kovač.

disciplina: Robotika
tim: Pjer Flajhar + Vito Radman
izlučno: 1. mjesto
izlučno mjesto: Strukovna škola Vice Vlatkovića, Zadar
konkurencija izlučnog: 5 timova
rezultat: plasman na državno
državno: 2. mjesto / srebrna medalja
mentor: Marko Kovač

timeline

IZLUČNO — ZADAR
5 timova
   │
   ▼
Pjer + Vito → 1. mjesto
   │
   ▼
plasman na WorldSkills Croatia 2026
   │
   ▼
DRŽAVNO — ROBOTIKA
   │
   ▼
2. mjesto / SREBRO

Školska objava za izlučno natjecanje izričito navodi prvo mjesto i plasman na državno. Zasebna objava nakon državnog natjecanja navodi srebrnu medalju u disciplini Robotika za Pjera Flajhara i Vitu Radmana. Tako se na stranici ne miješaju dva različita plasmana.

Pjer i Vito na WorldSkills natjecanju
WorldSkills Robotika — fotografija iz školske objave o izlučnom natjecanju.
Robotički tim Elektrotehničke škole
tim Elektrotehničke škole na WorldSkills Robotici.

fotografije se mogu otvoriti preko lightboxa i zatvaraju se samo na X.

← nazad na Doru fizika rabbit hole →