라즈베리파이 프로젝트

라즈베리파이로 네오픽셀 led제어하기 (WS2812B)

난쏘공돌이 2021. 1. 5. 19:23

이번포스팅은 라즈베리파이에서 네오픽셀 led스트립을 제어하는 방법을 써보려고 한다.

led를 제어해서 모니터에 부작한 모습

일단 네오픽셀 led스트립은 

WS2812B 칩이 포함된 led스트립

이렇게 생겼으며, 이를 제어하기 위해서는 아두이노던, 라즈베리파이던 간에 라이브러리가 필요하다.

또한 라즈베리파이의 gpio핀과의 연결이 필요한데

 

먼저 gpio핀 연결에 대해 먼저 알아보도록 하자.

출처 https://wikidocs.net/3172

라즈베리파이는 3,4 버전 모두 위와 같은 gpio핀 배열을 가지고 있는데

led스트립은

5v, din, gnd 핀을 가지고 있으므로

 

5v 는 gpio의 5v출력핀과 연결

din은 아무 gpio와 연결해주면 된다. 본 포스팅에서는 12번에 위치한 GPIO 18과 연결하였다.

GND는 위의 사진의 GPIO에서의 아무 ground핀과 연결해 주면 된다.

 

최종적으로 GPIO에는 이렇게 연결했다

이제 연결을 다 끝냈으니 라이브러리를 설치할 때이다.

라이브러리설치 방법은

 

https://learn.adafruit.com/neopixels-on-raspberry-pi/python-usage

 

NeoPixels on Raspberry Pi

Learn how to install and use a Python library that lets you control NeoPixel/WS281x LEDs connected directly to a Raspberry Pi. No microcontroller needed!

learn.adafruit.com

먼저 해당사이트에도 나와있듯이 

 

Once that's done, from your command line run the following command:

  • sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel

  • sudo python3 -m pip install --force-reinstall adafruit-blinka

위의 두 명령어를 먼저 쳐주고 다음단계로 넘어가도록 하자. (밑에 나와있는 방법으로만 하면 오류 발생함.)

 

위 명령어를 잘 실행했다면,

다음으로

 

sudo apt-get update

sudo apt-get upgrade (선택사항)

sudo apt-get install build-essential python-dev git scons swig

git clone https://github.com/jgarff/rpi_ws281x.git


출처: https://makemonument.tistory.com/120 [Monument]

라이브러리를 설치하는 방법은 해당 사이트를 참고하였다.

 

이후 아래 명령어로 rpi_ws281x디렉토리로 이동하여 라이브러리를 컴파일한다

 

cd rpi_ws281x 디렉토리에서

$ scons 을 실행해 주고,

 

다음으로 python 폴더에 들어가서 setup.py를 실행한다.

cd python

$ sudo python3 setup.py install

 

그 다음 예제폴더로 들어가서 

cd examples

 

예제 파일을 실행한다.

$ sudo python3 strandtest.py

 

일단 여기까지 수행을 해서 불이 잘 나온다면 코드를 변경하여 자기 입맛에 맞게 변형하면서 사용법을 익히면 된다.

led가 생각하는 만큼 안들어오거나 제어가 이상한 것 같으면

 

 

$ sudo nano strandtest 로 접근해서,

 

이 부분을 잘 확인하기 바란다.

필자는 GPIO18번을 사용했기 때문에 18로 설정해 주었고, 또한 LED_COUNT는 제어할 led픽셀을 나타내는 것으로 각자 가지고 있는 led갯수대로 바꾸어주면 된다.