일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 라즈베리파이
- open weather map
- lirc
- 배수 더하기
- #소수판별
- #프로젝트 오일러
- C언어
- palindrome
- Raspberry Pi
- project euler
- mp3
- 프로젝트 오일러
- 대칭수
- Radio
- 피보나치
- 소인수 구하기
- #Project Euler
- 최소공배수
- #c언어
- API
- PiFaceCAD
- Today
- Total
ㅇㅅㅇ
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 1 본문
아직 라즈베리파이와 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에 저장되어 있는 것을 확인할 수 있다.
한번 리스트를 훑어 보면서 어떤 키들을 사용할지 살펴보자.(종류가 워낙 많아서 딱히 리스트를 안봐도 원하는 이름이 있긴하다.)
나같은 경우에는 아래의 사진과 같이 리모컨을 사용하기로 하였다.
꼭 이런 리모컨이 아닌 스마트폰 리모컨 앱을 사용해서도 지정할 수 있으니 활용해 보도록 하자. 내 핸드폰은 적외선 센서를 지원하지 않아서 사용하지 못하였다...
그리고 위와 같은 표를 하나 만들어 두는걸 권장한다. 갑자기 어디어 뭘 넣었는지 기억이 안나면 난감해 질 수도있다.
리스트 확인을 끝마쳤다면 다음의 명령어를 입력한다.
$ 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
이렇게 잘 뜬다.
확인을 끝마쳤으니 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를 만드는 방법에 대해 설명하도록 하겠다.
'프로그래밍 > 라즈베리파이' 카테고리의 다른 글
Raspberry Pi GPIO 활용하기 (파이썬, Python) (0) | 2017.04.16 |
---|---|
Raspberry Pi GPIO 활용하기 (쉘 스크립트) (0) | 2017.04.11 |
Raspberry pi와 pi camera를 활용한 Time-lapse 비디오 만들기 (1) | 2017.04.09 |
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 2 (0) | 2017.04.02 |
Openweathermap을 사용하여 7개 도시의 현재 날씨와 온도를 프린트하기 (0) | 2017.03.23 |