ㅇㅅㅇ

PiFaceCAD를 이용한 MP3와 라디오 만들기 - 1 본문

프로그래밍/라즈베리파이

PiFaceCAD를 이용한 MP3와 라디오 만들기 - 1

Lugun 2017. 4. 1. 18:48


아직 라즈베리파이와 piface가 익숙치 않은 사람에게도 도움이 될 수 있게 최대한 상세히 적어 보았다.



일단 MP3와 라디오를 만들기위해 어떤 기능이 필요한지 먼저 생각해보자.

 

  • MP3 플레이어 / 인터넷 라디오 기능 선택

  • 현재 시간 표시

  • Next, Play or Stop, Prev, 곡 또는 채널 선택

  • 현재 채널 또는 곡 명 표시 - LCD 칸이 모자라는 경우 흐름 기능 구현

  • 음량 조절, 일시 음소거 기능
  • 리모컨으로도 위와 같은 동작


필요한 기능은 이 정도가 되겠다.

 

이 기능들을 실행하기위해 설치해야 할 것들이 3가지가 있는데, 각각 PiFaceCAD, LIRC, MPD이다.


pifacecad는 piface를 사용하기위해 필요한 라이브러리 이고 LIRC는 리모컨을 사용하기위한 라이브러리이며 MPD는 윈도우의 곰플레이어같이 음악을 재생시켜주는 여러프로그램들 중 하나이다.



1. PiFaceCAD, LIRC, MPD 설치하기


먼저 pifacecad를 설치해보자.

 

SPI를 enable 하기위해 아래 명령어를 입력하고 재부팅을 해준다.

$ sudo raspi-config

$ sudo reboot


그다음으로 apt-get을 업데이트 해준뒤 pifacecad를 설치한다

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install python3-pifacecad


설치가 끝났다면 아래의 명령어를 입력해보자

$ python3 /usr/share/doc/python3-pifacecad/examples/sysinfo.py


사진과같이 떴다면 pifacecad가 성공적으로 설치되었다는 뜻이다.





그 다음은 리모컨을 컨트롤하기 위해 LIRC를 설치해야 한다. 천천히 따라해 보자.

$ wget https://raw.github.com/piface/pifacecad/master/bin/setup_pifacecad_lirc.sh

$ chmod +x setup_pifacecad_lirc.sh

$ sudo ./setup_pifacecad_lirc.sh

$ sudo reboot


설치과정에서 혹시 error code (1) 이라는 오류가 뜬다면 아래 두줄로 해결이 가능하다

$ sudo rm -rf /var/lib/chksshpwd/

$ sudo apt-get install -y libpam-chksshpwd


이제 라즈베리파이에서 리모컨으로 동작을 컨트롤 할 수 있게 되었다. 


다음으로 mpd설치를 해보자. 


설치 자체는 매우 간단하다

$ sudo apt-get install mpd mpc

mpd는 플레이어라고 위에서 설명했고, mpc는 mpd의 동작을 컨트롤할 수 있는 쉘 스크립트-명령어 기반 관리도구(클라이언트)이다.


설치는 간단했지만 이 다음인 설정은 매우 까다롭다... 하나라도 잘못건드리면 connection refused가 뜨면서 잘못된 부분을 찾고싶어도 찾는데 굉장히 고생하니 애초에 꼼꼼하게 제대로 설정하도록하자.

$ sudo nano /etc/mpd.conf

이렇게 입력하면 mpd설정 파일이 열리게 된다. 여기서 아래 항목들을 찾아서 바꿔주자.


참고로 nano에서는 ctrl+w를 누르면 찾기 기능을 사용할 수 있다.


music_djrectory "/home/pi/music"


아마 처음에는 music_directory가 다른 곳으로 설정되어 있을건데 자신이 음악 파일을 저장할 디렉토리로 경로를 바꿔주도록 하자.


#user "mpd"

#group "nogroup"

bind_to_address "any"

port "6600"

metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"

auto_update "yes"

password "your_password@read,add,control,admin"

default_permissions "read,add,control,admin"


정말 꼼꼼히 수정해야한다.


먼저 user와 group항목은 주석처리를 해주고(#) bind_to_address부분은 "any"로 바꿔서 누구든 접근 가능하게 바꿔준다.


port항목은 외부에서 설정을 바꿀 때 사용하는 포트인데 건드리지 않는 것을 추천한다. default값이 6600이다.


나머지 항목들은 주석을 해제해주고 auto_update는 "yes"로, 만약 password를 설정하고 싶으면 원하는 비밀번호를 적어주면 된다. 


#input {

# plugin "curl"

# proxy "proxy.isp.com:8080"

# proxy_user "user"

# proxy_password "password"

#}


우리는 특별히 input 항목에서 사용할 것이 없으니 전부 주석처리를 해준다. 빨간색으로 표시된 주석은 한번 확인해봐야 한다는 의미로 표시해 두었다. 나도 저 부분의 주석처리를 안해서 한참동안 찾느라 고생한 기억이 있다.


audio_output {

type "alsa"

name "My ALSA Device"

device "hw:0,0" # optional

# format "44100:16:2" # optional

# mixer_device "default" # optional

# mixer_control "PCM" # optional

# mixer_index "0" # optional

}


output항목에서는 출력 설정을 해주는데 가장 중요한 항목이다. device "hw:0,0은 첫번째 0과 자신의 디바이스 넘버가 정확히 일치해야 스피커 출력이 되기 때문에 빨간색으로 표기하였다. 


자신의 디바이스 넘버를 알고 싶다면

$ sudo aplay -l

위의 명령어를 입력해보자. 각 오디오의 디바이스 목록을 확인한 뒤 위의 첫번째 0에 넣어 주면 된다.


여기까지 성공적으로 마쳤다면 이제 저장하고 파일을 빠져나오자. ctrl+o를 한뒤 엔터를 입력하고 ctrl+x를 해주면 나올 수 있다.

$ sudo /etc/init.d/mpd restart

$ mpc update

이제 설치과정이 마무리 되었다. 여기까지 문제가 없었다면 앞으로는 큰 문제없이 성공해 나갈 수 있을거라 생각된다.




2. 리모컨 등록하기


다음은 리모컨 등록이다. 아래의 명령어를 입력해보자. 우리가 사용할 수 있는 키의 이름들이 list에 저장되어 있는 것을 확인할 수 있다.


$ irrecord -list-namespace > list
$ sudo nano list





한번 리스트를 훑어 보면서 어떤 키들을 사용할지 살펴보자.(종류가 워낙 많아서 딱히 리스트를 안봐도 원하는 이름이 있긴하다.)


나같은 경우에는 아래의 사진과 같이 리모컨을 사용하기로 하였다.


꼭 이런 리모컨이 아닌 스마트폰 리모컨 앱을 사용해서도 지정할 수 있으니 활용해 보도록 하자. 내 핸드폰은 적외선 센서를 지원하지 않아서 사용하지 못하였다...


그리고 위와 같은 표를 하나 만들어 두는걸 권장한다. 갑자기 어디어 뭘 넣었는지 기억이 안나면 난감해 질 수도있다.


리스트 확인을 끝마쳤다면 다음의 명령어를 입력한다.

$ sudo rm /etc/lirc/lircd.conf

$ sudo irrecord -f -d /dev/lirc0 /etc/lirc/lircd.conf

입력을 마치면 뭐라뭐라 막 글들이 쭉 뜨면서 이런 글이 마지막으로 뜬다.


Press RETURN now to start recording


여기서 엔터를 치고 다시한번 저 메세지가뜨면 다시 엔터를 누른다.



그러고 나면 이런 화면이 뜨는데, 이 때 리모컨의 버튼을 꾸욱 눌러주자. 그러면 밑에 보이는 '......'들이 생긴다.


다음으로 넘어갈 때 까지 계속 눌러주자.



아까 정한 키의 이름을 입력하고 해당하는 리모컨의 버튼을 누른다


예를 들어서 KEY_PLAY를 입력하면 "KEY_PLAY버튼을 누르라는 메세지가 뜨고 자신이 play로 쓸 버튼을 누르면 "Got it"이라고 뜨면서 인식한다.



이런 방식으로 자신이 사용할 리모컨의 버튼들을 다 등록했다면 라즈베리파이를 재부팅 시킨다.


이제 방금 했던 리모컨 버튼 등록이 제대로 되었는지 확인해 보기 위해 아래의 명령어를 입력한다.

$ irw

그 다음 등록한 버튼들을 라즈베리파이를 향해서 눌러보자.



이런 식으로 자신이 등록한 버튼을 눌렀을 때 그 버튼의 이름이 나온다면 성공!


이제 리모컨은 한 단계만 남았다. lircrc파일을 만들어서 아래 사진과 같이 입력해보자.


$ sudo nano ~/.lircrc


눈치챈 사람들도 있겠지만 KEY_1을 눌렀을때 화면에 "You pressed One"이라는 문장을 출력한다는 내용이다.


작성을 완료한 뒤 

$ irexec

이렇게 실행을 하고 KEY_1으로 등록한 버튼을 누르면


이렇게 잘 뜬다.


확인을 끝마쳤으니 lircrc 파일을 마저 작성해보자. 아래는 내가 작성한 lircrc파일이다.



prog - 자신이 원하는 대로 변경가능

button - 자신이 등록한 버튼의 이름

config - 해당 버튼을 눌렀을 때 반환될 값(문자도 가능)



begin

      prog = irexec

      button = KEY_1

      config = 1

end


begin

      prog = irexec

      button = KEY_2

      config = 2

end


begin

      prog = irexec

      button = KEY_PLAY

      config = 1

end


begin

      prog = irexec

      button = KEY_STOP

      config = 2

end


begin

      prog = irexec

      button = KEY_NEXT

      config = 3

end


begin

      prog = irexec

      button = KEY_PREVIOUS

      config = 4

end


begin

      prog = irexec

      button = KEY_VOLUMEUP

      config = 5

end


begin

      prog = irexec

      button = KEY_VOLUMEDOWN

      config = 6

end


begin

      prog = irexec

      button = KEY_MUTE

      config = 7

end


begin

      prog = irexec

      button = KEY_3

      config = 9

end


begin

      prog = irexec

      button = KEY_EXIT

      config = 8

end



후우... 이제 진짜 다되간다.




3. piface버튼 기능 구상하기


이제 piface의 어떤 버튼에 어떤 기능을 넣을지 구상해보자.


여기서 알아둬야 할건 리모컨의 경우엔 키를 마음대로 지정해 주었지만 piface의 버튼은 각 버튼마다 번호가 다 붙어있고 그 버튼에 우리가 원하는 기능을 넣어 주어야 한다는 것이다. 


나는 아래와 같이 구현하기로 하였다. 사진과 표를 같이보면 각 버튼의 번호를 알 수 있을 것이다.



진짜로 이제 드디어 모든 사전 작업이 끝났다.


다음 포스팅에서는 소스코드와 mpd에서 playlist를 만드는 방법에 대해 설명하도록 하겠다. 




Comments