Home » 산딸기 가지고 놀기 » [라즈하이파이] Runeaudio를 이용한 오디오 시스템 만들기

Runeaudio를 이용한 오디오 시스템 만들기
How to make audio system using Runeaudio

안녕하세요. 산딸기마을 zzeromin입니다. 마이애니님이 작성하신 하드웨어 제작법에 이어서 소프트웨어 설치법에 대해서 글을 올립니다.

산딸기마을에서 제작한 파이올인원과 파이미니올은 아래와 같은 Runeaudio, Volumio, KODI(OSMC, Openelec), RetroPie를 이용하여 미디어시스템을 구축할 수 있습니다.

system_structure2

이 글에서는 아래 그림과 같이 Runeaudio을 우선 다루겠습니다.

system_structure

Runeaudio는 임베디드 플랫폼에서 사용할 수 있는 Arch Linux 기반 오픈소스 하이파이 디지털 뮤직 플레이어입니다. (http://www.runeaudio.com/about/)

 

목차.
1. Runeaudio 다운로드와 설치
2. DAC 설치 방법(PCM5102 또는 ES9023)
3. I2C 방식 LCD 설치 방법
4. LCD에 음악 정보를 출력하기 위한 python2 패키지 설치
5. IR-remote 설치

 

1. Runeaudio 다운로드와 설치

가. Runeaudio 이미지 다운로드

아래 링크에서 라즈베리파이2용 이미지를 내려받습니다.
Latest release: v0.3-beta (14/04/2015)
http://www.runeaudio.com/download/

나. 이미지 설치

Win32DiskImager를 이용하여 4G 이상 SD카드에 이미지를 설치합니다.
http://www.runeaudio.com/documentation/quick-start/sd-card-setup-windows/

다. 하드웨어 연결

마이애니님의 글을 참고하세요.
http://www.rasplay.org/?p=24175

라즈베리파이와 DAC를 GPIO 핀으로 연결하는 방법은 아래 링크를 참고하십시오.
http://www.tjaekel.com/T-DAC/files/RPi-Bplus_guideline.pdf

맨위로 이동

 

2. DAC 설치 방법(PCM5102 또는 ES9023)

이 프로젝트에서 사용한 DAC는 PCM5102입니다. ES9023도 사용하실 수 있습니다. 국내에서 정식 수입하는 곳이 없으므로 ebay나 aliexpress에서 구매를 하시길 바랍니다.

가. DAC 관련 정보

PCM5102 DAC

PCM5102 Features:
Input: I2S
Output: RCA
Sampling rates supported: 32bit 384khz beyond ES9023
SNR :112db
Distortion:-93db
Directly output is 2.1V RMS audio voltage
PCB Size: 48 x 48mm

PCM5102

ES9023 DAC

ES9023 Features:
Input: I2S
Output: RCA
Sampling rates supported: 16 / 24bit 192khz
PCB Size: 50 x 42mm

ES9023

라즈베리파이와 DAC를 GPIO 핀으로 연결하는 방법은 아래 링크를 참고하십시오.
http://www.tjaekel.com/T-DAC/files/RPi-Bplus_guideline.pdf

나. DAC 설치

윈도우(putty) 또는 리눅스 터미널에서 아래 명령어를 실행합니다.

# sudo nano /boot/config.txt

아래 두 줄을 찾아서 #을 제거 후
ctrl+x 누르고 y, 엔터

device_tree_param=i2s=on
dtoverlay=hifiberry-dac

setup_dac01

 

다. 리부팅

# reboot

라. 드라이버가 설치됐는지 확인

card 1에 있는 snd_rpi_hifiberry 가 화면에 보이면 정상적으로 설치한 것입니다.

# aplay -l

setup_dac03

웹브라우저에서 DAC를 선택합니다.

setup_dac04

맨위로 이동

 

3. I2C 방식 LCD 설치 방법

가. i2c LCD 관련 정보

이 프로젝트에서 사용한 LCD는 16*2 LCD입니다.

i2c Address: 0x27 or 0x3f
Backlight (Blue or Yellow background).
Supply voltage: 5V
Size: 82x35x18 mm

i2c_lcd

LCD를 설치하는 방법은 우선 i2c를 활성화 시키고 i2c-tools 패키지를 설치합니다.

아래 사이트를 참고하셔도 좋습니다.

* reference site:
http://buzzthisnow.com/how-to-enable-i2c-on-raspberry-pi-2-running-runeaudio-archlinux/

 

나. i2c_arm 활성화

윈도우(putty) 또는 리눅스 터미널에서 아래 명령어를 실행합니다.

# nano /boot/config.txt

아래 줄을 찾아서 #을 제거 후
ctrl+x 누르고 y, 엔터

device_tree_param=i2c_arm=on

setup_i2c01

 

다. cmdline에 내용 추가

터미널에서 아래 내용을 추가합니다.

# nano /boot/cmdline.txt

끝으로 이동(키보드 End키) 후 아래 줄을 붙여넣고
ctrl+x 누르고 y, 엔터

bcm2708.vc_i2c_override=1

setup_i2c02

 

라. 모듈 추가

터미널에서 아래 내용을 추가합니다.

# nano /etc/modules-load.d/raspberrypi.conf

맨아래에 아래 내용을 추가 후
ctrl+x 누르고 y, 엔터

i2c-bcm2708
i2c-dev

setup_i2c03

마. i2c-tools 설치

pacman(프로그램 패키지 관리자) 라이브러리를 업데이트 합니다.

* debian 리눅스 계열(우분투, 라즈비안)은 프로그램 설치할 때 apt를 사용하지만 arch 리눅스는 pacman을 사용합니다.

# pacman -Syy

# pacman -S i2c-tools

# reboot

setup_i2c04

 

바. i2c LCD 설치 확인

i2c LCD 가 사용하는 주소를 확인합니다.
일반적으로 사용하는 주소는 3f 또는 27 입니다. (0x3f or 0x27)

# i2cdetect -y 1

setup_i2c05

 

맨위로 이동

 
4. LCD에 음악 정보를 출력하기 위한 python2 패키지 설치

* runeaudio 포럼의 XploD 님 자료를 참고하시면 이해를 쉽게 할 수 있습니다.
http://www.runeaudio.com/forum/lcd-display-and-buttons-in-python-tutorial-and-code-t1191.html

주의) 현재 사용하고 있는 runeaudio의 리눅스 커널은 ‘Linux runeaudio 3.18.7-3-ARCH’ 입니다. 룬오디오 안에는 python2 버전이 미리 설치되어 있습니다. 그래서 python 관련 프로그램 패키지는 대부분 python2를 사용합니다. (python3와 혼동이 없기를 바랍니다.)

여기부터는 패키지 설치 스크린샷을 생략합니다.

가. python 관련 프로그램 설치

# pacman –Syy

# pacman –S python-setuptools

# pacman –S python2-pip

# pacman -S gcc

나. 음악 정보, GPIO 관련 프로그램 설치

1) python-mpd2 설치 (생략가능)

# cd
# git clone https://github.com/Mic92/python-mpd2.git
# cd python-mpd2/
# python2 setup.py install

2) RPi.GPIO-0.6.1 설치

# cd
# wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.6.1.tar.gz#md5=254d0443a436eb241367c487274e7197
# wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.6.1.tar.gz
# tar -xvf RPi.GPIO-0.6.1.tar.gz
# cd RPi.GPIO-0.6.1
# python2 setup.py install

3) RuneAudioLCD 설치

# cd
# git clone https://github.com/RandyCupic/RuneAudioLCD.git
# cd RuneAudioLCD/

가) starty.py 수정하기

# nano start.py

32번째 줄부터 아래를 참고해서 수정하세요.

# Specify I2C display address (usually 0x27)
I2C_DISPLAY_ADDRESS = 0X3f

# This program generates LCD output dynamically
# Which means that it support both 20x4 and 16x2 LCDs
# Specify LCD size (for example 20x4 or 16x2 LCD
LCD_COLUMNS = 16
LCD_ROWS = 2

# Specify scrolling period (for artist and title) in SECONDS
# WARNING: By decreasing scrolling_period, CPU usage increases fast
SCROLLING_PERIOD = 0.5

setup_runelcd_i2c_start

70번째 줄 숫자 True를 False로 수정
*주의: 버튼 기능을 비활성화하는 부분입니다. 이 부분을 건너뛰면 룬오디오가 다운됩니다. 꼭 수정하세요.

# If you want to use buttons, put to True, otherwise put to False
BUTTONS_ENABLE = False

setup_runelcd_start02

나) display.py 수정

# nano display.py

522번째 줄 숫자 20을 16으로 수정

# For 16x2 LCD, remove decimal value (to fit on the screen)
if (self.columns < 16):

setup_runelcd_display

다) i2c_display.py 수정

# nano i2c_display.py

56번째 줄 20을 16으로 수정

# Define LCD device constants
LCD_WIDTH = 16 # Default characters per line # TODO

setup_runelcd_i2c_display

다. 부팅시 start.py를 실행시키는 서비스 만들기

# nano /usr/lib/systemd/system/runelcd.service

아래 내용 붙여넣고 ctrl+x 누르고 y, 엔터

[Unit]
Description=Runeaudio_I2C_LCD service
After=network.target

[Service]
ExecStartPre=/usr/bin/sh -c “sleep 3”
ExecStart=/usr/bin/python2 /root/RuneAudioLCD/start.py
TimeoutSec=0
Restart=on-failure

[Install]
WantedBy=multi-user.target

시스템 시작시 서비스 실행하는 방법은 다음과 같습니다.

# systemctl start runelcd.service
# systemctl enable runelcd.service

만약 LCD에 변화가 없으면 아래 명령어를 실행하여 상태를 확인합니다.

# systemctl status -l runelcd.service

 

맨위로 이동

 

5. IR-remote 설치

이 프로젝트에 사용한 IR센서는 다음과 같습니다.
KSM-603LM5ND(리모콘모듈 수광부)
http://eleparts.co.kr/EPX33JXL

  • 핀연결 방법

IR pin – Rpi 핀

1번핀 -> GPIO 17
2번핀 -> GND 09
3번핀 -> 3.3V 01

* XploD 님 자료를 참고하시면 쉽게 따라서 하실 수 있습니다.
http://buzzthisnow.com/ir-remote-with-lirc-on-raspberry-pi-2-running-runeaudio-archlinux/

차례대로 실행하시면 9번에 문제가 발생합니다.

왜냐하면 룬오디오에서 irrecord로 리모컨 셋팅을 할 수 없다고 xplode님이 문제점을 지적했습니다.

irw 문제 해결 방법은 볼루미오를 이용(sudo irrecord -f -d /dev/lirc0 /etc/lirc/lircd.conf)해서 lircd.conf를 만든 후에 룬오디오로 가져와서 /etc/lirc/lircd.conf.d 에 저장하면 됩니다. MPC 명령어를 저장한 lircrc 파일은 /etc/conf.d/에 저장하세요.

lircd.conf를 만드는 방법은 마이애니님이 작성하신 ‘volumio 적외선수신IR리시버를이용한 리모트컨트롤’ 글을 참고하시길 바랍니다.

 

맨위로 이동

 

*관련 동영상

 

To Be Continued

* Reference

  1. http://www.runeaudio.com/documentation/
  2. http://www.runeaudio.com/forum/lcd-display-and-buttons-in-python-tutorial-and-code-t1191.html
  3. http://buzzthisnow.com

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700