RGB LED Matrix 구동을 위한 라즈베리파이 제로 W 초기 설정

Title
RGB LED Matrix 구동을 위한 라즈베리파이 제로 W 초기 설정
Date
Apr 3, 2018
https://github.com/hzeller/rpi-rgb-led-matrix/ 여기서 제공하는 라이브러리를 이용하여 라즈베리파이로 LED Matrix를 구동하는 중인데, 나중에 참고하기 위해 설치과정을 정리해보았다.

하드웨어 환경

  1. LED Matrix: Adafruit나 알리익스프레스에서 구매 가능한데, 여기서는 2.5mm pitch를 가진 64×64 RGB LED Matrix를 사용하였다.
  1. 라즈베리파이: 상대적으로 더 얇은 라즈베리파이 제로 W를 사용했다. 배선을 깔끔하게 하기 위해 Adafruit의 RGB Matrix Bonnet for Raspberry Pi 를 사용하였으며, 핀헤더와 소켓은 right angle 타입을 사용하여 라즈베리파이와 좌우로 배치하여 더 얇게 만들 수 있도록 하였다.

소프트웨어 설정

라즈베리파이 설정

  1. Raspbian STRETCH LITE 설치: 이미지 다운로드, 이미지를 굽기위한 Etcher 다운로드
  1. 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한다.
  1. 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
  1. 성능에 영향을 줄 수 있는 불필요한 라이브러리 제거
    1. sudo apt-get remove bluez bluez-firmware pi-bluetooth triggerhappy pigpio
  1. rpi-rgb-led-matrix 빌드에 필요한 라이브러리 설치
    1. 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 다운로드 및 빌드

  1. 아래와 같이 설치 스크립트를 다운로드받는다.
    1. curl -O https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/rgb-matrix.sh
  1. 해당 스크립트에서는 hzeller/rpi-rgb-led-matrix 라이브러리의 특정 커밋을 다운로드 받도록 되어있는데, 최신버전을 받아도 무방하였다. 해당 라이브러리 제작자가 문서의 몇몇군데에서 adafruit 에서 fork한 라이브러리가 ‘super-ancient’라고 뭐라뭐라 하는것도 좀 찝찝하고… 설치 스크립트를 열어서, 아래와 같이 최신 커밋을 받도록 수정하자.
    1. #COMMIT=58830f7bb5d~~~~~ COMMIT=master
  1. 설치 스크립트 실행
    1. sudo bash rgb-matrix.sh
      이후 나오는 질문에 적절히 답하면 되고, 중간에 “quality”와 “convenience” 중에 선택하라는 질문에서, 성능이 특히 떨어지는 라즈베리파이제로에서는 “quality”를 선택해야 깜빡임이 현저히 줄어드는것을 볼 수 있었다. (※ 이에 따라, GPIO4번과 GPIO18번을 서로 연결해야 함에 주의)
  1. Adafruit에서 제공하는 설치파일에서는 rpi-rgb-led-matrix/util 을 빌드하지 않으므로, 이것을 사용하려면 따로 빌드해줘야 한다. 아래와 같이 빌드한다.
    1. 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"
  1. LED 구동을 위한 설치와 빌드 완료. 다음과 같이 테스트하여 LED Matrix에 정상적으로 표시되는지 확인한다.
    1. cd rpi-rgb-led-matrix/example-api-use sudo ./demo --led-rows=64 --led-cols=64 -D0```

그 외 소프트웨어 설치

LED 구동에 꼭 필요한것은 아니지만, 추후 작업에 필요한 내용들.
  1. Node.js 설치https://github.com/sdesalas/node-pi-zero 여기서 설치 스크립트를 받을 수 있다. LTS 버전을 설치하였다. 2018년 4월 현재기준으로 8.xx 버전이 설치된다.