디지털 액자 만들기

전에 7인치 모니터를 이용해서 시도한 적이 있었다. 사진 뷰어의 슬라이드쇼 기능을 이용해서 자동으로 실행하게 했다.
하지만 모니터가 DIV용이라 액자틀을 만들어야 하는데 귀챦아서 미루고 있었다.

이번에 산티아고 순례길을 걸으면서 많은 사진을 찍어서 다시 디지털 액자를 시도했다. 에어프랑스에서 지연보상금으로 나온 250유로가 큰 모니터를 사서 시도할 용기를 주었다.

이번엔 AI의 도움을 받아 구상했다. 라즈베리파이를 데스크탑 모드가 아니라 콘솔모드로 부팅하고 파이썬으로 사진 뷰어 프로그램을 실행하도록 했다.
사진은 특정 사진 폴더에 복사를 하고 폴더를 변경할 수 있게 했다. 그리고 그외 관리 기능은 앱을 만들어서 변경할 수 있게 했다.

처음 실행시 대기화면으로 있다가 터치를 하면 사진이 30초 간격으로 보여준다. 터치를 하면 다음 사진으로 바로 넘어간다. 그리고 마지막 터치 이후 10분 지나면 다시 대기모드로 바뀐다.

대기화면에는 달력과 날씨를 표시했다. 그리고 모니터 절전 모드도 추가했다. 이부분은 생각보다 오래 걸렸다. 절전모드 실행을 위해 콘솔로 접속시 화면이 안보이게 해야 동작한다. 즉, 키보드로 콘솔 명령을 할 수 없다. 안보이니까. 대신 SSH로 접속은 가능하다. 만약에 IP가 바뀌면 공유기에서 IP를 찾아서 접속해야 한다.
계속 보완을 통해 어느 정도 완성한 거 같다.

벽에 고정하기 위해 고민하다가 냉장고 옆면에 부착하기로 했다. 알리에서 나사로 고정하는 자석을 주문했다. 모니터가 베사 표준을 지원하는데 M4규격이다. 자석의 구멍과 사이즈가 맞다. 길이 때문에 아직 볼트를 주문하지 못하고 있다. 자석이 도착하면 주문 예정이다.

추가로 모션센서도 주문했다. 광센서와 결합하면 야간에 끌 수도 있지만, 우선은 모션센서로만 체크할 예정이다. 온도센서도 주문한 상태이다. 기상청으로 동네에 대한 온도 정보를 받고 있는데 직접 측정하는 게 정확하기 때문이다.

전에 7인치 모니터를 이용해서 시도한 적이 있었다. 사진 뷰어의 슬라이드쇼 기능을 이용해서 자동으로 실행하게 했다.
하지만 모니터가 DIV용이라 액자틀을 만들어야 하는데 귀챦아서 미루고 있었다.

이번에 산티아고 순례길을 걸으면서 많은 사진을 찍어서 다시 디지털 액자를 시도했다. 에어프랑스에서 지연보상금으로 나온 250유로가 큰 모니터를 사서 시도할 용기를 주었다.

대기화면에는 달력과 날씨를 표시했다. 그리고 모니터 절전 모드도 추가했다. 이부분은 생각보다 오래 걸렸다. 절전모드 실행을 위해 콘솔로 접속시 화면이 안보이게 해야 동작한다. 즉, 키보드로 콘솔 명령을 할 수 없다. 안보이니까. 대신 SSH로 접속은 가능하다. 만약에 IP가 바뀌면 공유기에서 IP를 찾아서 접속해야 한다.
계속 보완을 통해 어느 정도 완성한 거 같다.

벽에 고정하기 위해 고민하다가 냉장고 옆면에 부착하기로 했다. 알리에서 나사로 고정하는 자석을 주문했다. 모니터가 베사 표준을 지원하는데 M4규격이다. 자석의 구멍과 사이즈가 맞다. 길이 때문에 아직 볼트를 주문하지 못하고 있다. 자석이 도착하면 주문 예정이다.

추가로 모션센서도 주문했다. 광센서와 결합하면 야간에 끌 수도 있지만, 우선은 모션센서로만 체크할 예정이다. 온도센서도 주문한 상태이다. 기상청으로 동네에 대한 온도 정보를 받고 있는데 직접 측정하는 게 정확하기 때문이다.

일단 콘솔모드로 접속하게 해야 한다. 그리고 자동로그인 설정을 해야 하는데. 아래 명령을 통해 설정을 변경할 수 있다.

sudo raspi-config

1 System OptionsS5 Boot / Auto LoginB2 Console Autologin 선택 → Finish → 재부팅 여부 물으면 Yes
근데, Boot와 Auto Login이 다른 메뉴이다. 먼저 Boot로 가서 콘솔모드를 설정한 다음에 Auto Login를 설정해야 한다. 아니면 데스크탑모드에서 로그인 창이 뜬다.

그리고 프로그램을 서비스 파일로 등록해야 한다.

sudo tee /etc/systemd/system/slideshow.service > /dev/null << 'EOF'
[Unit]
Description=Digital Photo Frame Slideshow
After=graphical.target

[Service]
Type=simple
User=jsshin
WorkingDirectory=/home/jsshin/slideshow
ExecStart=/usr/bin/python3 /home/jsshin/slideshow/slideshow.py
Restart=on-failure
RestartSec=3
Environment=SDL_VIDEODRIVER=kmsdrm

[Install]
WantedBy=graphical.target
EOF

sudo systemctl daemon-reload
sudo systemctl restart slideshow
sudo systemctl status slideshow

 

슬라이드쇼를 보는 도중에 다른 폴더를 선택하는 기능을 추가했다.

터치스크린이 도착을 했는데, 사진이 뭔가 이상하다. 확인해 보니, 해상도를 제대로 인식을 하지 못했다.

두번째 포트로 연결되는 모니터 해상도를 강제로 지정했다. /boot/firmware/cmdline.txt 파일에 “video=HDMI-A-2:1920×1080@60D” 부분을 추가하고 재부팅을 했더니0.  화면을 잘 나온다.

이번엔 터치가 안된다. 테스트할때에는 마우스로 테스트했는데, 실제 스크린에서는 키다운 이벤트라서 인식을 못한다.프로그램에서 핑거다운 이벤트를 등록하니 잘 동작한다.

냉장고 벽에 고정하기 위해 네오디움자석을 주문했다.  중앙에 홀이 있는 네오디움 자석을 주문했다. 엄청 강력한 걸로 주문했다.

사이즈가 M4 라고 한다. 터치스크린이 베사 75로 되어 있는데, 나사가 M4라서 딱 맞는다. 물론 볼트는 별도로 주문해야 한다. 선 정리를 위해 케이블을 뒤로 숨길 수 있는 것도 주문했다.

접시머리 M4볼트 10mm 길이를 주문했는데, 길다. 다시 8미리를 주문했더니, 돌출되지 않고 사이즈가 맞는다. 그리고  선을 감추기 위해 주문한 U밴드도 폭이 넓어서 사용하지 못했다. 벽과 모니터 간격보다 크다.

센서를 연결하면서 GPIO배열을 AI가 잘못 알려줘서 고생했다. pinout명령으로 1번핀이 안쪽이라는 것을 알고 인터넷을 검색해서 정확한 위치를 확인했다. 그리고 온도센서도 어느쪽을 기준으로 봐야 하는지 몰라서 반대방향으로 전원을 연결했다. 온도센서가 약간 뜨거워졌지만, 고장나지 않아 제대로 다시 연결해서 성공적으로 마무리할 수 있었다. 온도센서는 판매자가 정확한 정보를 알려주지 않았지만, AI가 검색을 해서 정확한 방향을 알아냈다. 그리고 센서 동작을 테스트하는 여러가지 명령으로 미리 확인할 수 있었다. 핀배열관련해서는 직접 테스터기로 확인하니, 원하는 전압이 나오지 않았었다.

센서를 설치하고 움직임이 감지되었을때 자동으로 사진이 보이게 했다. 그리고 일정시간 모션감지가 없으면 절전모드로 전환하게 했다. 이제 대기화면이 크게 의미가 없어졌다. 그래서 감지후 처리시간이 약 2초 정도 걸린다. 그 사이에 초기화면의 달력이나 온도 정보를 확인할 수 있다.

 

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.