chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

RaspberryPiとNeoPixelを接続

Amazon EchoからAlexa->Lambda->AWS IoT-(MQTT)->LaspberryPiでLED点滅をさせているけど、赤色のLEDだけだとあまり楽しくないので、NeoPixcelを音声で動かしてみたい。

adafruit-circuitpython-neopixel が使えるらしい。。
以下がAdafruitのNeoPixcel解説ページ
Raspberry Pi Wiring | NeoPixels on Raspberry Pi | Adafruit Learning System
Python Usage | NeoPixels on Raspberry Pi | Adafruit Learning System


以下でラズパイに入れてみる

sudo python3 -m pip install adafruit-circuitpython-neopixel

正しい結線は、電源5Vを外部電源から取って、ラズパイからのGPIOは3.3Vなので5Vにレベルシフトする必要があるらしい。ラズパイ壊したくないので、5Vは外部電源から取って、GPIOの3.3Vは手抜きでそのまま使ってみる。
サンプルソースでは、GPIO18が制御信号なので、GPIOをNeoPixelの信号に接続する。多分、SPI等のクロック用信号線なんだろうと推測。

手持ちのNeoPixcelは24連の輪っかのやつなんだが、、前回ESP32で動かした時と同様にLEDの点灯が誤動作する。制御信号を3.3Vで操作しているからかもしれない。正しく5Vにレベルシフトして試すべきか。思ったようにNeoPixelが光らないと気分も萎えるのだが、、制御信号のまずさの可能性が高い。。信号の仕様が厳しいため、組み込み用マイコンを使って、よけいなOSの割り込みの入らないように組まないと安定動作しないという記事もある。

import board
import neopixel

N_OF_PIXELS=24

pixels = neopixel.NeoPixel(board.D18, N_OF_PIXELS)
pixels[0] = (1, 0, 0)

def erase():
    for i in range(N_OF_PIXELS):
        pixels[i] = (0,0,0)

def fill(r,g,b):
    for i in range(N_OF_PIXELS):
        pixels[i] = (r,g,b)
        
fill(1,0,0)

AVRでneopixel ringを光らせる | SIBYL System

3.3V->5VのレベルシフタTTLがどっかに行ってしまったので、、、5Vで動作するAVRでコントローラ作ってみるか。。AVRのライターもどこに行ったか分からない。。
Arduino Library Use | Adafruit NeoPixel Überguide | Adafruit Learning System