
Programowanie
Kiosk informacyjny: uratowany i dostępny dla każdego
Po zakończeniu wsparcia i finansowania kiosk informacyjny miał zostać odstawiony. Wziąłem go na warsztat jako własny projekt, głównie po godzinach, i napisałem dla niego całe oprogramowanie od nowa: aplikację, firmware przycisków z alfabetem Braille’a, polski głos działający lokalnie i czujnik, który wita podchodzących.
29.10.2026
Ten kiosk miał zostać odstawiony. Stał w holu od lat, ale po zakończeniu wsparcia i finansowania komercyjnego systemu przestał działać. Docelowo pewnie skończyłby gdzieś w otchłaniach magazynu.
Wziąłem go na warsztat jako własny projekt. Diagnozę, nowe oprogramowanie, firmware płytki przycisków, polski głos i wdrożenie zrobiłem sam, w większości po godzinach. Dziś kiosk znowu działa i jest zaprojektowany przede wszystkim dla osób z niepełnosprawnościami.
(powiększ)Punkt wyjścia: kiosk do odstawienia
Kiosk to stojak marki SAROS z pionowym ekranem dotykowym, pięcioma przyciskami z opisem w alfabecie Braille’a i czujnikiem obecności. W środku pracował mały komputer z Androidem 7 z 2017 roku i aplikacja komercyjnej platformy digital signage.
Całe oprogramowanie żyło w chmurze dostawcy:
- treści i konfiguracja nie były zapisane na urządzeniu, tylko pobierane z serwera,
- wsparcie dla tej instalacji wygasło, więc kiosk pokazywał tylko ekran oczekiwania,
- wyjście z aplikacji blokowała osobna blokada z kodem PIN, którego nikt nie znał,
- system nie dostawał poprawek bezpieczeństwa od lat.
W tej formie kiosk nie miał już czego pokazywać, więc miał zniknąć z holu. Tymczasem obudowa, ekran i przyciski były w świetnym stanie. Uznałem, że szkoda odstawiać je do magazynu, skoro wystarczy wymienić to, co w środku, i napisać resztę od nowa.
(powiększ)Debugowanie krok po kroku
Zacząłem od sprawdzenia, czy da się cokolwiek odzyskać. Przez menu recovery Androida wyczyściłem urządzenie, co usunęło blokadę PIN i starą aplikację. Okazało się, że ten egzemplarz nie ma portu USB do debugowania, a wgranie Linuksa na procesor ARM groziło urządzeniem bez obrazu i bez dotyku.
Dlatego wymieniłem tylko komputer. W obudowie pracuje teraz mały, cichy komputer x86 z Linuksem. Reszta sprzętu została bez zmian.
Płytka przycisków
Przyciski i czujnik obsługuje osobna płytka z mikrokontrolerem ATmega32U4, tym samym co w Arduino Leonardo. Oryginalnego programu na niej nie było, tylko szkic testowy, który zakładał złe piny i pokazywał odległość 0 cm.
- napisałem szkic diagnostyczny, który ustalił, który pin odpowiada któremu przyciskowi,
- potem nowy firmware z prostym protokołem tekstowym: wciśnięcie przycisku i odległość osoby od kiosku,
- firmware aktualizuję bez rozkręcania obudowy.
(powiększ)Obrócony ekran i dotyk
Monitor stoi w obudowie pionowo, więc obraz trzeba obrócić o 90 stopni. Dotyk nie obraca się razem z obrazem, dlatego przygotowałem stronę kalibracyjną z pięcioma punktami. Z pomiarów policzyłem macierz kalibracji i wpisałem ją do systemu. Dotyk trafia teraz z dokładnością do około centymetra, co przy dużych przyciskach w zupełności wystarcza.
(powiększ)Brakujący element w holu
W holu wiszą już dwie tablice informacyjne z listą pokoi, aktualnościami i mapą budynków. Tablica pokazuje wszystkim to samo. Brakowało miejsca, w którym można zadać własne pytanie: gdzie złożyć dokumenty, gdzie jest kasa, co trzeba ze sobą zabrać.
Kiosk domknął całość:
- tablica pokoi pokazuje, który dział jest w którym budynku i na którym piętrze,
- tablica ze slajdami podaje aktualności, wydarzenia, pogodę i mapę budynków,
- tablica przystankowa pokazuje najbliższe odjazdy autobusów,
- kiosk odpowiada na konkretne pytanie i prowadzi do właściwego pokoju.
Wszystkie korzystają z tych samych danych, tych samych krojów pisma i tej samej palety. Odwiedzający widzi na kiosku ten sam numer pokoju co na tablicy i na portalu. Tablice opisałem we wpisach Tablice informacyjne w holu i Tablica przystankowa z odjazdami MPK.
Co potrafi kiosk
Ekran startowy pyta: „W czym możemy pomóc?” i daje cztery drogi:
- wyszukiwarka spraw z klawiaturą ekranową, która rozumie wpisy bez polskich znaków („slub” znajdzie „ślub”),
- sprawy do załatwienia pogrupowane w kategorie,
- działy i biura z lokalizacją, telefonem i godzinami przyjęć,
- ważne miejsca, takie jak kasa czy punkt przyjmowania pism.
(powiększ)Karta sprawy odpowiada na pytania, z którymi ludzie podchodzą do portierni:
- gdzie: budynek, piętro i numer pokoju, wyróżnione na samej górze,
- ile kosztuje i ile trwa,
- jakie dokumenty trzeba przynieść,
- kod QR „Zabierz tę informację ze sobą” otwiera opis sprawy z formularzami w telefonie.
Z karty działu można przejść do wszystkich spraw, które załatwia się w tym samym miejscu.
(powiększ)
(powiększ)Dostępność na pierwszym miejscu
Od początku założyłem, że z kiosku ma skorzystać osoba niewidoma, słabowidząca, na wózku i starsza, która nie lubi ekranów dotykowych. Dlatego kiosk da się w pełni obsłużyć bez dotykania ekranu.
Pięć przycisków i głos
- Następny i Poprzedni przechodzą między elementami, Wybierz otwiera, Powrót cofa, Home wraca na początek,
- pierwsze naciśnięcie dowolnego przycisku samo włącza czytanie na głos, bo kto sięga po przyciski, najczęściej potrzebuje głosu,
- kiosk czyta każdy zaznaczony element i całą kartę sprawy, łącznie z pokojem i listą dokumentów,
- głośność ma trzy poziomy i zawsze startuje od najcichszego.
Polski głos bez chmury
Przeglądarka na Linuksie nie ma dobrego polskiego głosu, a wysyłanie tekstu do zewnętrznej usługi nie wchodziło w grę. Mowę syntezuje Piper, silnik działający lokalnie na komputerze kiosku. Wypowiedzi trafiają do pamięci podręcznej, więc często czytane zdania brzmią od razu.
Piper słabo radzi sobie z cyframi, dlatego przed syntezą zamieniam liczby na słowa. Numer telefonu kiosk czyta cyfra po cyfrze, „II piętro” jako „drugie piętro”, a kwoty z poprawną odmianą „złoty, złote, złotych”.
Kiosk wie, że ktoś podszedł
Czujnik ultradźwiękowy mierzy odległość od kiosku. Gdy ktoś stanie bliżej niż ok. 1,2 m, kiosk wita go głosem i podpowiada, że przyciski są po lewej stronie ekranu. Powitanie nie powtarza się częściej niż raz na minutę i nie przerywa osobie, która już korzysta z kiosku.
Czytelność i porządek po wizycie
- przyciski Większy tekst i Kontrast powiększają pismo i włączają tryb wysokiego kontrastu,
- krój Atkinson Hyperlegible Next zaprojektowano z myślą o osobach słabowidzących,
- przełączniki ułatwień są na dole ekranu, w zasięgu osoby na wózku,
- po 90 sekundach bez ruchu kiosk wraca na start i wyłącza głos, kontrast i powiększenie, żeby następna osoba zaczynała od zera.
(powiększ)Najważniejszy test nie był techniczny. Kiosk ma przeprowadzić od wejścia do właściwego pokoju osobę, która nie widzi ekranu.
- Aleksander Kowal
Dane z intranetu i CMS portalu
Kiosk nie ma własnej bazy treści i nikt nie musi go osobno uzupełniać. Sprawy, działy i miejsca pochodzą z tego samego CMS, z którego korzysta portal. Lokalizacje pokoi trafiły tam z intranetu.
- pracownik poprawia opis sprawy w panelu portalu, a zmiana pojawia się na kiosku najpóźniej po kwadransie,
- kiosk pokazuje tylko informacje publiczne: sprawę, dział, pokój i telefon ogólny, bez danych pracowników,
- kiosk przechowuje ostatnie poprawne dane, więc chwilowa niedostępność CMS go nie wyłącza,
- ekran nie odświeża treści, gdy ktoś z niego korzysta, tylko gdy stoi na stronie startowej.
Działa bez opiekuna
Kiosk stoi w holu bez opiekuna, więc musi sam dbać o siebie, a o problemach dawać znać, zanim zauważy je ktoś z odwiedzających.
- system startuje prosto do aplikacji, z logo zamiast komunikatów rozruchu,
- przeglądarka działa w trybie kiosku, bez pulpitu i bez możliwości wyjścia z aplikacji,
- sprzętowy watchdog restartuje komputer, gdy system przestanie odpowiadać,
- monitoring pilnuje, czy kiosk działa poprawnie, i zgłasza awarie,
- komunikacja z systemami wewnętrznymi jest szyfrowana, a uprawnienia ograniczone do niezbędnego minimum.
Statystyki bez ciasteczek
Kiosk zbiera anonimowe statystyki, bez ciasteczek i bez danych osobowych. Widać, których spraw ludzie szukają najczęściej, jak często używają przycisków i głosu oraz ile osób podchodzi do kiosku. To podpowiedź, które opisy spraw warto poprawić w pierwszej kolejności.
Projekt po godzinach
Większość pracy przy kiosku zrobiłem po godzinach. Najwięcej czasu zajęło to, czego nie widać na ekranie: diagnoza starego systemu, płytka przycisków, kalibracja dotyku i polski głos, który poprawnie czyta liczby.
Efekt jest taki, że zamiast odstawiać sprawny sprzęt do magazynu, jest kiosk, który robi więcej niż kiedykolwiek wcześniej i nie zależy od zewnętrznego dostawcy.
Co dalej
Kolejny krok to plan budynku z zaznaczoną drogą do pokoju. W dalszej przyszłości kiosk mógłby odpowiadać na pytania zadane głosem, z asystentem korzystającym z tych samych danych co portal.
Stack
- Astro (SSR na Node), Tailwind v4, DaisyUI v5, Lucide, fonty self-hosted,
- Directus portalu jako źródło spraw, działów i miejsc,
- Debian, cage i Chromium w trybie kiosku, Plymouth, systemd z watchdogiem,
- Python: usługa kiosku łącząca płytkę, czujnik i mowę przez WebSocket,
- Piper TTS z polskim głosem, działający lokalnie,
- ATmega32U4 z własnym firmware w Arduino,
- Docker.
