https://github.com/hzeller/rpi-rgb-led-matrix/ 여기서 제공하는 라이브러리를 이용하여 라즈베리파이로 LED Matrix를 구동하는 중인데, 나중에 참고하기 위해 설치과정을 정리해보았다.
하드웨어 환경
- LED Matrix: Adafruit나 알리익스프레스에서 구매 가능한데, 여기서는 2.5mm pitch를 가진 64×64 RGB LED Matrix를 사용하였다.
- 라즈베리파이: 상대적으로 더 얇은 라즈베리파이 제로 W를 사용했다. 배선을 깔끔하게 하기 위해 Adafruit의 RGB Matrix Bonnet for Raspberry Pi 를 사용하였으며, 핀헤더와 소켓은 right angle 타입을 사용하여 라즈베리파이와 좌우로 배치하여 더 얇게 만들 수 있도록 하였다.
소프트웨어 설정
라즈베리파이 설정
- Raspbian STRETCH LITE 설치: 이미지 다운로드, 이미지를 굽기위한 Etcher 다운로드
- raspi-config 를 통해 아래의 내용들 설정
- Network Options
- N1 Hostname: 여러대의 라즈베리파이를 한 네트웍에서 사용할것이고, 접속시 구분을 위해 hostname을 변경한다.
- N2 Wi-fi: SSID/Password 설정. (※ 패스워드에 특수문자가 포함되어 있다면, “로컬 셋팅”에서 “키보드 레이아웃”을 변경하고 재부팅 후 입력한다. 키보드 레이아웃에 따라 특수문자 위치가 다를 수 있는데, 패스워드 입력시엔 키보드 입력이 화면에 나타나지 않아서 잘못된 입력을 하게될 수 있다.)
- Localisation Setting
- I1 Change Locale: en_US.UTF-8 로 설정
- I2 Change Timezone: Asia/Seoul 설정
- I3 Change Keyboard Layout: Generic 105-key (Intl) PC, English (US), The Default for the keyboard layout, No compose key
- I4 Change Wi-fi Country: US 로 설정. 현재 ASUS 공유기 사용중인데, KR로 설정했을때 Wi-fi 가 안잡히는 현상이 있음.
- Interfacing Options
- I2C, 1-Wire 등을 Disable한다.
- LED구동하는데에 오디오 출력에서 사용중인 하드웨어 서브시스템 사용이 필요하므로,
- /boot/config.txt 에
dtparam=audio=off추가 - 아래와 같이 입력하여
snd_bcm2835를 disable 한다.
cat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
- 성능에 영향을 줄 수 있는 불필요한 라이브러리 제거
sudo apt-get remove bluez bluez-firmware pi-bluetooth triggerhappy pigpio
- rpi-rgb-led-matrix 빌드에 필요한 라이브러리 설치
sudo apt-get update sudo apt-get install libgraphicsmagick++-dev libwebp-dev -y
여기까지 하면 빌드를 위한 환경구성은 완료되었다.
이제, Adafruit 에서 나온 Adafruit RGB Matrix Bonnet/HAT 을 사용하는 경우엔 Adafruit 의 가이드(https://learn.adafruit.com/adafruit-rgb-matrix-bonnet-for-raspberry-pi/driving-matrices)를 참고하여 라이브러리를 설치 및 빌드하고,
본래의 라이브러리 페이지의 설명인 https://github.com/hzeller/rpi-rgb-led-matrix/blob/master/wiring.md 의 설명을 따라 연결하여 사용하는 경우엔 해당 README를 참고하여 git clone 후 lib과 example을 빌드한다.
아래는 Adafruit의 Bonnet 을 사용하는 경우의 설정과정이다.
rpi-rgb-led-matrix 다운로드 및 빌드
- 아래와 같이 설치 스크립트를 다운로드받는다.
curl -O https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/rgb-matrix.sh
- 해당 스크립트에서는
hzeller/rpi-rgb-led-matrix라이브러리의 특정 커밋을 다운로드 받도록 되어있는데, 최신버전을 받아도 무방하였다. 해당 라이브러리 제작자가 문서의 몇몇군데에서 adafruit 에서 fork한 라이브러리가 ‘super-ancient’라고 뭐라뭐라 하는것도 좀 찝찝하고… 설치 스크립트를 열어서, 아래와 같이 최신 커밋을 받도록 수정하자.
#COMMIT=58830f7bb5d~~~~~ COMMIT=master
- 설치 스크립트 실행
sudo bash rgb-matrix.sh
이후 나오는 질문에 적절히 답하면 되고, 중간에 “quality”와 “convenience” 중에 선택하라는 질문에서, 성능이 특히 떨어지는 라즈베리파이제로에서는 “quality”를 선택해야 깜빡임이 현저히 줄어드는것을 볼 수 있었다. (※ 이에 따라, GPIO4번과 GPIO18번을 서로 연결해야 함에 주의)
- Adafruit에서 제공하는 설치파일에서는 rpi-rgb-led-matrix/util 을 빌드하지 않으므로, 이것을 사용하려면 따로 빌드해줘야 한다. 아래와 같이 빌드한다.
cd rpi-rgb-led-matrix/util sudo make HARDWARE_DESC=adafruit-hat-pwm
만약, “quality/convenience” 질문에서 “convenience”를 선택했다면, 아래와 같이 빌드한다.
sudo make HARDWARE_DESC=adafruit-hat USER_DEFINES="-DDISABLE_HARDWARE_PULSES"
- LED 구동을 위한 설치와 빌드 완료. 다음과 같이 테스트하여 LED Matrix에 정상적으로 표시되는지 확인한다.
cd rpi-rgb-led-matrix/example-api-use sudo ./demo --led-rows=64 --led-cols=64 -D0```
그 외 소프트웨어 설치
LED 구동에 꼭 필요한것은 아니지만, 추후 작업에 필요한 내용들.
- Node.js 설치https://github.com/sdesalas/node-pi-zero 여기서 설치 스크립트를 받을 수 있다. LTS 버전을 설치하였다. 2018년 4월 현재기준으로 8.xx 버전이 설치된다.