라즈베리 파이로 키오스크 만들기 - 생각보다 삽질이 많다
라즈베리 파이로 키오스크 만들기
왜 라즈베리 파이?
클라이언트한테서 매장용 키오스크를 만들어달라는 요청이 왔다.
처음엔 일반 PC를 쓰려고 했는데, 키오스크용으로 쓰기엔 비용도 크고 공간도 많이 차지한다. 라즈베리 파이라면 소형이고 저렴하고 리눅스가 돌아가니까 웹 기반 키오스크에 딱이다.
라즈베리 파이 + 터치 모니터 조합으로 진행하기로 했다.
기본 구성
키오스크의 핵심은 간단하다. 부팅하면 자동으로 전체 화면 브라우저가 뜨고, 특정 웹 페이지만 보여주면 된다.
# 자동 로그인 설정
sudo raspi-config # Boot Options → Desktop Autologin
# Chromium 키오스크 모드 자동 실행
# ~/.config/autostart/kiosk.desktop
[Desktop Entry]
Type=Application
Name=Kiosk
Exec=chromium-browser --kiosk --noerrdialogs --disable-infobars http://localhost:3000
이론적으로는 이게 끝이다. 근데 현실은 그렇게 간단하지 않았다.
예상 못한 삽질들
화면 보호기 문제. 일정 시간 지나면 화면이 꺼진다. 키오스크는 24시간 켜져 있어야 하니까 화면 보호기, 전원 관리, DPMS를 전부 꺼야 한다. 이것만 찾는 데 한 시간 넘게 걸렸다.
메모리 부족. 라즈베리 파이 4 (4GB)인데, Chromium이 메모리를 꽤 먹는다. 오래 켜두면 메모리 누수로 느려지는 현상이 있었다. 결국 cron으로 새벽마다 Chromium을 재시작하는 스크립트를 넣었다.
터치스크린 캘리브레이션. 터치 위치가 실제 화면 위치와 안 맞는 문제. 드라이버 설정을 만져야 하는데 이게 모니터마다 다르다.
네트워크 끊김 대응. WiFi가 끊기면 웹 페이지가 안 뜬다. 오프라인 폴백 페이지를 만들어놓고, 네트워크가 복구되면 자동으로 새로고침하는 로직을 넣었다.
SD 카드 수명. 라즈베리 파이는 SD 카드에서 부팅하는데, 쓰기가 많으면 SD 카드가 빨리 죽는다. 로그 기록을 최소화하고, 가능한 건 RAM 디스크로 돌렸다.
웹 개발자의 하드웨어 도전
웹 개발만 하다가 하드웨어를 만지니까 새로운 세계다. 소프트웨어에서는 “재시작하면 되지” 하면 끝인데, 하드웨어는 물리적 제약이 있다.
매장에 설치하고 나면 원격으로 관리해야 한다. SSH 접속이 안 되면 직접 가야 한다. 이런 부분까지 생각하면 원격 관리 도구 설정이 필수다.
근데 이런 삽질이 재밌다. 새로운 기술을 배울 때 느끼는 그 감정. 모르는 게 있으면 검색하게 되고, 검색하다 보면 해결하게 되고, 해결하면 성취감이 있다.
라즈베리 파이 하나로 이 정도 결과물이 나오니까 가성비는 최고다. 다음에는 아두이노도 한번 만져봐야겠다.