2021年07月30日 更新

ラズパイでLEDスティック点灯

どうも、クラゲです。
今回はRaspberryPiでLEDスティックやLEDシリアルテープを点灯させます。

ArduinoではAdafruitのNeoPixelライブラリが有名でたくさん情報がありますが、ラズパイで点灯させるときの情報が少ないので、まとめました。

必要な部品

はじめに

LEDスティックやLEDシリアルテープの制御電圧が5V必要であることに対し、RaspberryPiのGPIO電圧は3.3Vであるため、直結はスペック上NGです。
本来であれば、以下のように間にロジックレベル変換ICを挟むべきです。

しかし、今回はプロトタイプという事で、実力で点灯できる直結での紹介を行います。

はんだ付け

3端子にジャンパー線をハンダ付けします。
ポイントとして、LEDスティックやLEDシリアルテープには入力と出力があります。基板の裏を見て、DINと書かれた端子がある側が入力で、DOUTと書かれた端子がある側が出力です。出力側はさらにLEDを連結させるための端子です。
今回のジャンパー線は入力側に付けないと点灯しませんのでご注意ください。

回路結線図

赤線は5V、黒線はGND、白線はGPIO18に接続します。

ライブラリのインストール

こちらのGitHubにあるライブラリを利用します。
https://github.com/jgarff/rpi_ws281x

まずはGitHubからダウンロード

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

このライブラリをビルドするためにsconsをインストールします。
sconsはmakeユーティリティの代替です。

sudo apt-get install scons

ダウンロードしたファイルをsconsでビルドします。

cd rpi_ws281x
sudo scons

試しに実行
レインボーに光ればOK。

sudo ./test

Pythonでプログラム記述できるようにする

先程のライブラリはC言語なので、Pythonでそのまま使えません。
そこでswigをインストールします。swigはC/C++ で書かれたプログラムやライブラリを、Python言語などに接続するためのオープンソースのツールです。

cd python
sudo apt-get install python-dev swig
sudo python ./setup.py install

pythonのサンプルを実行

cd examples
sudo python strandtest.py

strandtest.pyはLEDの数が16個想定なので、LEDスティックの場合は8個に変更した方がより正確なタイミングで光ります。

#LED_COUNT = 16
LED_COUNT = 8

アナログオーディオと併用する場合

現状のままだとアナログオーディオと併用できないので、接続ピンをGPIO18からGPIO21に変更する必要があります。

プログラムでもピンを変更する必要あります。

#LED_PIN = 18
LED_PIN = 21

ちなみにGPIO21を使うと、今度はI2Sなどが使えなくなるので注意が必要です。

以上、ラズパイでLEDスティック点灯でした!