RaspberryPiからWio Node経由でLEDStrip(LEDテープ)を光らせる
前回のエントリーではRaspberryPiからWio Nodeに接続した温度センサーの値を取得しました。
ようやく手元にLEDStrip(俗にいうLEDテープ)が届いたのでテストしてみました。今回はクリスマスセールでSeeedさんの商品がかなり安く購入できたのでそれに含まれていた LEDテープを使用しています。(Groveコネクタもついているのでそのまま使えます。)これでNagoyaハッカソンのネタは自宅でできるようになりました。
このLEDテープなんですが、セット商品にしかついていないのが残念なので単独販売されるといいなと思います。 まあ作ればいいんですけど、最近は老眼が酷くて手元がおぼつかないのです。
このあたりはセンサー類だけでもお得なので購入おすすめ(12/28現在:クリアランスセールでセットで$24とかないよ…でも同梱されてるWio Linkは使っちゃダメなんで注意)
micro:bitのコネクター付のセットもいいかなと思います。(秋月ですし)
Wio Nodeに接続する
設定に関しては過去のエントリーを参照していただければと思います。接続操作は簡単で、OutputのカテゴリーにあるWS2812 LED Strip 60
を選択し、コネクタにドロップします。画面したに赤くConfrom Farmwareと出るのでそれも忘れずに押してください。
あとは画面左上のハンバーガーボタンを押してAPIの確認をします。
温度センサーの設定をそのままにしているので温度センサーのAPIに加えてLEDテープの設定が追加されています。 点灯・消灯のAPIはこのようになっています。
この設定では最大60個のLEDまでコントロールできるのですが、今回接続したものは30個なのでパラメータとしては30、後はRGBの16進6桁表記( #
や 0x
は不要です)でパラメータを送信すればOKです。
消灯する場合には000000
を指定すれば消灯します。
Curlでのアクセスは以下のようになります。
$ curl -k -X POST https://us.wio.seeed.io/v1/node/GroveLedWs2812D0/clear/30/aa00aa?access_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX {"result": "ok"}
点灯・消灯以外にもスタートインデックスを指定して、RGBパターンを連続して記述して、一つ一つのLEDの色を変えるようなこともできます。 また、 rainbow flowと呼ばれる色を変化させながら点滅するモードもあります。
RaspberryPiからアクセスしてみる
pythonからはこんな感じでアクセスできます。恒例のrequestsモジュールを使って、今回はPOSTメソッドでアクセスしています。 コマンドライン引数からパラメータをセットしています。joinを使ったほうがキレイにできると思いましたが、それは好みでということで。
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import requests argvs = sys.argv argc = len(argvs) length = '30' britness = '0' speed = '1' if(argc > 1): length = argvs[1] if(argc > 2): britness = argvs[2] if(argc > 3): speed = argvs[3] url = 'https://us.wio.seeed.io/v1/node/GroveLedWs2812D0/start_rainbow_flow/' + length + '/' + britness + '/' + speed payload = {'access_token': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'} r = requests.post(url, params=payload) print(r.text)
一応、うまくいったようです。
終わりに
Nagoyaハッカソンで使ったもののメモとしてはこれで終わりかなと思います。 それにしても、本当に老眼ではんだ付けがきつくなった自分にとってはGroveサマサマといった感じです。