







여러분, 안녕하세요. 다시 찾아주셔서 환영합니다.
여기 정말 대단한 것이 있습니다. Raspberry Pi Compute Module 5로 구동되는, 거대한 3세대 iPod Nano에서 영감을 받은 음악 플레이어 iBrick을 소개합니다.
3세대 iPod Nano는 제가 성장하면서 늘 감탄했던 기기 중 하나였습니다. 컴팩트한 형태, 생생한 사용자 인터페이스, 상징적인 클릭 휠 덕분에 당시 가장 잘 알려진 휴대용 음악 플레이어 중 하나였습니다. 직접 소유해 볼 기회는 없었지만, 그 디자인은 늘 기억에 남았습니다.
오늘날에는 상태가 좋은 정품 iPod Nano를 점점 더 찾기 어려워지고 있습니다. 구할 수 있는 제품 상당수는 배터리가 낡았거나 외관이 손상되어 있으며, 프로젝트용으로 구매하기에는 단순히 너무 비쌉니다.
오래된 기기를 복원하는 대신, 저는 경험을 재현하되 거대한 변화를 주기로 했습니다.
이 제작물의 핵심은 10인치 Waveshare 터치스크린과 결합한 Raspberry Pi Compute Module 5입니다. 처음부터 시작하는 대신, 이전의 Absolute Linux Tablet 프로젝트에서 하드웨어를 재활용하고, 새롭게 설계한 인클로저와 맞춤형 소프트웨어를 통해 완전히 새로운 정체성을 부여했습니다.
이 Instructables 튜토리얼에서는 Linux 태블릿을 완전히 작동하는 거대한 iPod Nano로 변환하는 전체 과정을 다룹니다.
이 프로젝트에 사용한 재료입니다.

2007년에 출시된 3세대 iPod Nano는 이전 모델과 크게 달라진 모습을 보여주었습니다. 더 짧고 넓어진 디자인 때문에 "뚱뚱한 Nano" 라는 별명으로 불렸으며, 320 × 240 픽셀 해상도의 2인치 QVGA 컬러 디스플레이를 탑재해 음악과 동영상 재생 모두에 적합했습니다.
이 기기는 Apple의 상징적인 클릭 휠을 그대로 유지했습니다. 클릭 휠은 회전 스크롤과 5개의 물리 버튼을 결합한 터치 감지 원형 컨트롤러로, 사용자가 한 손으로 메뉴를 빠르게 탐색할 수 있게 해주었습니다. 4 GB 및 8 GB 플래시 저장 공간 모델로 제공되었으며, iPod Nano는 수천 곡의 노래를 저장할 수 있었고 MP3, AAC, WAV, AIFF, Apple Lossless 같은 주요 오디오 형식과 H.264 및 MPEG-4 동영상 재생을 지원했습니다.
충전식 리튬 이온 배터리로 구동되었으며, Apple은 한 번 충전으로 최대 24시간의 음악 재생과 약 5시간의 동영상 재생이 가능하다고 평가했습니다. 컴팩트한 알루미늄 외장, 밝은 디스플레이, 직관적인 사용자 인터페이스 덕분에 당시 가장 잘 알려진 휴대용 미디어 플레이어 중 하나가 되었습니다.


이 프로젝트의 두뇌는 Raspberry Pi CM5입니다. 일반적인 Raspberry Pi 5를 모듈 폼 팩터로 만든, 보다 산업 지향적인 버전이라고 할 수 있습니다. 동일한 Broadcom BCM2712 쿼드 코어 64비트 Arm Cortex-A76 (Armv8) SoC를 사용하며, 2.4 GHz로 작동하지만 훨씬 더 작은 패키지에 담겨 있습니다.
CM5는 USB 포트, Ethernet, 듀얼 HDMI 포트, GPIO 헤더, SD 카드 슬롯, 그리고 NVMe SSD를 추가할 수 있는 M.2 포트까지 제공하는 평가 보드에 장착됩니다.
여기서는 온보드 32GB eMMC 저장 장치가 포함된 4GB 모델을 사용합니다.
운영 체제로는 Debian Trixie 기반의 새로운 Raspberry Pi OS를 사용했습니다. OS는 NVMe SSD에 설치되어 시스템이 매우 빠르게 작동합니다. OS 설치에는 Raspberry Pi Imager를 사용했습니다. M.2-to-USB 어댑터로 SSD를 연결하고 운영 체제를 NVMe 드라이브에 직접 플래시했습니다. NVMe SSD를 CM5 보드에 연결하자 시스템은 SSD에서 직접 부팅되었습니다.




메인 디스플레이로는 평균적인 7인치 크기가 아니라 훨씬 큰 것을 원했습니다.
HDMI 대신 DSI 인터페이스를 원했기 때문에 연결성도 중요한 요소였습니다.
그래서 이 프로젝트에는 Waveshare의 10.1-DSI-TOUCH-A 디스플레이를 선택했습니다. 10포인트 정전식 터치 제어를 지원하는 세로형 터치스크린 LCD 디스플레이입니다. 이 디스플레이는 하드웨어 해상도 800×1280의 IPS 패널을 사용하며, 태블릿 애플리케이션에 매우 적합합니다.
LCD는 DSI 인터페이스를 통해 Raspberry Pi와 연결되며, 최대 60 Hz의 주사율을 지원해 이 애플리케이션에는 충분합니다.
키트에는 Raspberry Pi 5 또는 CM5와 디스플레이를 연결하기 위한 FFC 케이블 2개, Raspberry Pi 4 연결용 FFC 케이블 1개, 전원 케이블, PCB 스탠드오프 몇 개가 포함되어 있습니다.
이 디스플레이에 대한 자세한 내용은 위키 페이지에서 확인할 수 있습니다.
https://www.waveshare.com/10.1-dsi-touch-a.htm?&aff_id=Arnov
http://www.waveshare.com/wiki/10.1-DSI-TOUCH-A


이 프로젝트에 사용된 하드웨어를 제공해 준 Waveshare에 특별히 감사드립니다. 10.1인치 DSI 화면과 지원 액세서리는 테스트 및 평가를 위한 리뷰용 제품으로 제공되었습니다.
Waveshare는 로보틱스, IoT, 자동화, 교육 및 다양한 분야에서 사용되는 전자 부품, 모듈, 개발 도구를 제공하는 세계적인 선도 기업입니다. 품질, 신뢰성, 지속적인 혁신에 중점을 둔 Waveshare는 전 세계 엔지니어, 디자이너, 취미 개발자 및 메이커들의 신뢰를 얻고 있습니다.
그들의 광범위한 제품군은, 디스플레이와 HAT부터 확장 보드 및 임베디드 모듈까지 다양하게 구성되어 있어 전문 제작과 DIY 프로젝트 모두에서 가장 먼저 고려되는 선택지입니다.






태블릿의 전원 공급원으로는 보조 배터리에서 전원 회로와 리튬 셀을 분리해 사용하는 것이 가장 좋은 방법 중 하나입니다. 여기서는 평소 iPhone과 다른 기기를 충전할 때 사용하는 PD 보조 배터리를 사용했습니다. 이 제품은 USB Type-C 포트를 통해 전원 입력과 출력을 모두 제공하며, USB 포트에서는 안정적인 5V 3A 출력을 제공합니다.
이 분해 작업의 결과로 10,000mAh 배터리와 디스플레이 및 Raspberry Pi 구성에 전원을 공급할 수 있는 전원 회로를 확보했습니다.







이 프로젝트의 소프트웨어와 UI는 애플리케이션 개발을 담당한 친구 Aahan Sharma의 도움으로 개발되었습니다. 아래 링크에서 그의 GitHub 저장소를 확인할 수 있습니다.
https://github.com/AahanDoesGit/iPod-classic-Cm5
목표는 가능한 한 원래 iPod 사용 경험의 느낌을 재현하는 것이었습니다. 인터페이스에는 원래 펌웨어처럼 중첩 메뉴가 왼쪽과 오른쪽으로 애니메이션되는 정통 슬라이딩 스택 내비게이션이 적용되었으며, 회전 스크롤과 클래식한 5개 버튼 조작을 지원하는 클릭 휠도 완전히 에뮬레이션했습니다. 미디어 라이브러리는 Mutagen을 사용해 백그라운드에서 스캔되며, 새로 추가된 MP3 파일을 자동으로 감지합니다. 또한 python-vlc는 하드웨어 가속 오디오 및 비디오 재생을 제공해 부드럽고 지연 시간이 짧은 성능을 구현합니다.
코드베이스는 세 가지 주요 부분으로 구성됩니다. 핵심 로직(library.py 및 player.py), UI 구성 요소(iPod_screen.py, now_playing.py, sliding_stack.py 및 click_wheel.py), 그리고 기본 애플리케이션 진입점(main.py)으로 나뉘어 있어 프로젝트를 모듈식으로 관리하고 쉽게 확장할 수 있습니다.
메인 애플리케이션 및 백그라운드 스레드
'main.py '에서는 Qt 애플리케이션을 초기화하고 주요 UI 요소인 상단 화면과 하단 클릭 휠을 설정합니다. 'QThread'는 백그라운드에서 계속 실행되며 UI를 멈추지 않고 'music/' 폴더의 변경 사항을 스캔합니다.
슬라이딩 내비게이션 메뉴
iPod 경험의 핵심은 슬라이딩 메뉴입니다. 'ui/sliding_stack.py'에 사용자 정의 'SlidingStackWidget'을 구현했으며, Qt의 'QPropertyAnimation'을 사용해 탐색할 때 'QWidget' 페이지가 왼쪽이나 오른쪽에서 부드럽게 슬라이드되어 들어오도록 했습니다.
화면 상태 및 내비게이션
'IPodScreen' 'ui/ipod_screen.py'은 UI의 상태 머신 역할을 합니다. 사용자가 이전에 있던 위치를 기억할 수 있도록 'menu_history' 스택을 사용해 서로 다른 메뉴 목록을 푸시하고 팝합니다.
오디오 재생
안정적인 미디어 디코딩을 위해 'python-vlc'를 사용합니다. 'core/player.py'에서 확인할 수 있듯이 Mac 테스트를 위한 'afplay ' 폴백도 처리합니다. 플레이어는 'NowPlayingScreen'과 연동되어 진행률 표시줄과 경과 시간을 동기화합니다.
애플리케이션 실행



iBrick의 전체적인 디자인은 단순하고 각진 형태를 따르며, 후면 인클로저는 약간 곡선형으로 되어 있습니다. 전체 구조는 전면 프레임과 후면 인클로저라는 두 가지 주요 부품으로 나뉘며, 디스플레이, Raspberry Pi Compute Module 5, 보조 배터리, 배터리 및 기타 전자 부품을 포함한 내부 하드웨어는 기존 Absolute Linux Tablet과 거의 동일하게 유지됩니다.
주요 재설계는 후면 인클로저에 집중되었습니다. 저는 의도적으로 이를 두껍고 크게 설계해 iBrick만의 독특한 벽돌 같은 외관을 만들었으며, 이 외관이 이름의 영감이 되었습니다. 전면 프레임은 전체적인 외관을 깔끔하게 유지하면서 디스플레이 영역을 최대화하기 위해 최소 베젤 디자인을 사용했습니다.
기존 iPod Nano의 모든 세부 사항을 물리적으로 재현하려 하기보다는, 하드웨어 디자인을 단순하게 유지하고 인식 가능한 iPod 경험을 주로 소프트웨어 UI를 통해 재현하는 것이 목표였습니다. 따라서 클래식 내비게이션, 클릭 휠, 메뉴, 애니메이션과 같은 요소는 디지털 방식으로 구현했습니다. 이를 통해 큰 인클로저는 단순하게 유지하면서도 소프트웨어가 향수를 불러일으키는 iPod 특유의 분위기를 제공합니다.





인클로저는 주로 두 부품으로 구성됩니다. 하나는 디스플레이와 Raspberry Pi CM5 어셈블리를 제자리에 고정하는 전면 프레임이고, 다른 하나는 배터리 팩과 전원 회로를 수납하는 후면 인클로저입니다. 두 부품은 서로 맞물리도록 설계되었으며, 프레임 둘레에 배치된 장착 구멍을 통해 삽입하는 M2 나사로 고정됩니다.
후면 인클로저에는 스피커와 MAX98357A I2S 앰프를 위한 전용 장착 구조도 포함되어 있어, 두 부품을 인클로저 내부에 안정적으로 배치할 수 있습니다.
마찬가지로 리튬 폴리머 배터리에도 제자리에 고정할 수 있는 전용 공간이 있으며, 전원 회로는 두 개의 전용 장착 보스 위에 놓고 M2 나사로 고정합니다. 이를 통해 내부 부품을 정리된 상태로 유지하고 인클로저 내부에서 움직이는 것을 방지할 수 있습니다.


모델을 완성한 후 후면 부품, 프레임, 버튼 액추에이터의 세 가지 부품을 내보냈습니다.
프레임 부품과 버튼 액추에이터는 모두 레이어 높이 0.2 mm, 인필 25% 설정으로 Black Hype PLA를 사용해 출력했습니다. 인클로저는 비슷한 설정으로 Grey Hype PLA를 사용해 출력했습니다.





전원을 연결하고 플러그 앤 플레이 방식으로 작동하기를 기대했지만, 일이 항상 그렇게 간단한 것은 아니며 디스플레이도 바로 작동하지 않았습니다.
CM5에 외부 모니터를 연결하고 터미널을 연 다음 config.txt 파일을 수정해야 했습니다.
파일 맨 아래에 다음 줄을 추가했습니다.
이 위키 페이지 의 디스플레이 관련 내용에서 Waveshare는 다행히 커스텀 사전 플래시 Raspberry Pi OS Trixie 이미지를 제공하고 있었습니다. 이 이미지를 사용해 Raspberry Pi에 플래시하면 구성 파일을 수동으로 수정하지 않아도 디스플레이가 부팅됩니다.

이제 MAX98357A I2S 앰프와 Raspberry Pi CM5의 조립 과정입니다.

















그리고 최종 결과물은 다음과 같습니다. 원래 iPod의 외관과 사용감을 가깝게 재현하도록 설계한 커스텀 소프트웨어 인터페이스를 탑재한, 거대한 iPod Nano 영감의 음악 플레이어 iBrick입니다.
이 인터페이스 아래에는 본질적으로 제가 제작한 커스텀 iPod 소프트웨어를 실행하는 Raspberry Pi 기반 태블릿이 있습니다. 로컬에 저장된 음악 및 비디오 파일을 재생할 수 있으며, 내장 비디오 플레이어와 오디오 재생용 내부 스피커도 갖추고 있습니다.
내장 배터리 덕분에 완전히 휴대할 수 있으며, 한 번 충전으로 약 4~5시간의 백업 작동 시간을 제공합니다.
이 프로젝트는 본질적으로 제가 만든 Absolute Linux Tablet의 개조 버전입니다. 동일한 핵심 하드웨어와 전자 부품을 재사용했지만, 기존 인클로저를 완전히 새로운 디자인으로 교체하고 새로운 소프트웨어를 개발해 iPod에서 영감을 받은 미디어 플레이어로 변신시켰습니다.
결과물은 실제 iPod Nano보다 확실히 두껍고, 벽돌에 더 가깝습니다. 그래서 이름도 iBrick입니다.
하지만 바로 그 점이 이 프로젝트를 재미있게 만듭니다. 최신 하드웨어와 상당한 향수를 바탕으로 제작한, 터무니없이 큰 크기지만 완전히 작동하는 클래식 iPod Nano의 재현작입니다.



iBrick은 비교적 간단한 제작 과정이었습니다. 이전의 Absolute Linux Tablet 프로젝트에서 하드웨어를 재활용할 수 있었기 때문에, 처음부터 완전히 새로운 시스템을 설계하고 조립할 필요가 없었기 때문입니다. Raspberry Pi CM5, 디스플레이, 전원 시스템, 그리고 대부분의 전자 부품은 이미 작동하고 있었으므로, 주요 과제는 새로운 인클로저를 설계하고 iPod 사용 경험을 재현할 소프트웨어를 개발하는 것이었습니다.
향후 버전에서 개선하고 싶은 부분도 몇 가지 남아 있습니다. 더 만족스러운 오디오 경험을 위해 내장 스피커를 더 크고 음질이 좋은 스피커로 교체할 수 있을 것입니다. 또한 더 얇은 배터리를 사용해 인클로저의 부피를 줄이고 전체적인 비율을 개선하고 싶습니다.
물론 다른 버전을 만든다면, 더 크게 만들어도 좋을 것 같습니다. 현재 iBrick은 10인치 디스플레이를 사용하므로, 이를 "거대한" iPod이라고 부르는 것은 약간 논란의 여지가 있습니다. 훨씬 더 큰 버전이라면 전체 콘셉트가 더욱 터무니없어질 것이고, 바로 그 점이 이 프로젝트를 재미있게 만듭니다.
전반적으로 iBrick은 간단한 하드웨어 재사용 프로젝트로 시작했지만, 제가 늘 갖고 싶었던 기술 제품을 재현하면서 오래된 프로젝트에 완전히 새로운 생명을 불어넣는 재미있는 작업으로 발전했습니다.
일단 이 프로젝트는 완성되었습니다.
이 제작과 관련된 모든 파일을 첨부했으며, 전체 제작 지침은 이 글에 포함되어 있습니다. 도움이 필요하다면 편하게 댓글을 남겨 주세요.
제가 만든 다른 사이버덱 프로젝트도 확인해 보세요(사이버덱을 너무 많이 만들었네요 ㅎㅎ)
https://www.instructables.com/VAULT-TEC-AIR-TERMINAL/
https://www.instructables.com/PARALLEL-PC-Wood-Edition/
https://www.instructables.com/CYBERPY-Zero-Three/
https://www.instructables.com/CyberPY-Zero-One/
https://www.instructables.com/Cyber-PY-Zero-Two/
여기까지 함께해 주셔서 감사합니다. 곧 새로운 프로젝트로 다시 찾아뵙겠습니다.
평화.