United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

Adafruit Floraで冬にマッチしたウェアラブル工作

Adafruit Flora NeoPixelで、殺風景なクリスマス用のプルオーバーをアップサイクリング

去年のクリスマス用のプルオーバーは柔らかくて暖かく、大好きでしたが、残念なことにあまり格好良くはありませんでした。白とグレーのパターンがあるだけで、数あるクリスマス用のプルオーバーの中で特に目立つものでもありませんでした。そこで私は、ウェアラブルテクノロジーの人気が高まっている今、自分自身でウェアラブルテクノロジーを作ってみようと思い立ちました。華やかなLEDでこの用のプルオーバーをアップサイクリングするのです。

今ではコンパクトなマイクロコントローラプラットフォームがたくさんあるため、自分自身のシンプルなウェアラブルを簡単に作ることができます。私は、Arduinoとの互換性のあるウェアラブル電子プラットフォーム、Adafruit Floraを選択しました。センサや周辺機器が多数揃っており、LiPoバッテリを使用することもできるため、ウェアラブルテクノロジーには最適です。

また、FloraスマートRGB NeoPixelも使用することにしました。スマートで個別に設定可能なRGB LEDと、WS2812、WS2811、及びSK6812 LED/ドライバをベースにしたストリップがあり、シングルワイヤプロトコルを使用できます。これらはチェーン接続と、個別/順番での設定が可能で、マイクロコントローラに接続するとNeoPixelの出力を、直接別のNeoPixelの入力に接続できます。

NeoPixelはArduinoライブラリにサポートされています。私は最初、NeoPixelの動作についてよく分かっていませんでした。データバスに直列に接続されているとはいえ、どのようにして個別に設定できるのか明確に理解してはいませんでした。しかし、Github repo for the NeoPixelにあるsimple.inoの例のコメントを見ることで、すぐに理解できました。複数のNeoPixelがデータピンに直列に接続されている場合、各NeoPixelにはセットアップ時に番号が割り当てられることがスケッチで規定されています。このことは、すべてが同一のデータピンに接続されている場合、各ピクセルを個別に制御できることを意味します。

Adafruit NeoPixel Überguideに説明してある通りに適切なライブラリをダウンロードした後、NeoPixelの動作を決める必要がありました。例としてサンプルのスケッチを一読し、カラーホイールの色で光がフェードするものを見つけました。冬らしく感じられる白と青を使えば、NeoPixelsが白から青へ、青から白へと色が優しくフェードしてとても素敵ではないかと考えました。

白は(127, 127, 127)、青は(0, 0, 255)だと分かっていたので、最初、白が青になるまでこれらの数値を増やしていきました。つまり、下記のように、赤と緑の数値は減らしていき、青の数値を増やす、という作業をしました。:

(127, 127, 127)
(126, 126, 128)
(125, 125, 129)
(124, 124, 130)
(123, 123, 131)

など

この方法では色が急に変わり、スムーズな色の変化は得られませんでした。私は、先に見たサンプルのようにスムーズにフェードさせたいと思っていました。下記は、レインボー機能を制御するコードのセクションです。私はこれに似たものを使用することで、1つの色から次の色に急に変化するのではなく、徐々にフェードさせることができるのではないかと考えました。

void rainbow(uint8_t wait) {
   uint16_t i, j;

   for(j=0; j<256; j++) {
     for(i=0; i        strip.setPixelColor(i, Wheel((i+j) & 255));
     }
     strip.show();
     delay(wait);
   }

私はForループを含めることを決めました。これによって、NeoPixelが青から白に徐々にフェードしていくはずです。

    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(count, count, 255-count), 60);

void loop() {
    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(count, count, 255-count), 60);
    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(127-count, 127-count, 127+count), 60);
}

動画では、撮影時の照明により、色の変化が分かりにくくなっています

3つのNeoPixelによるこのスケッチがうまく動作するようになったので、次は縫い付けです。どこに縫い付けるのが一番良いのかを考えたところ、プルオーバーの雪の結晶のデザインの中央にNeoPixelを配置すると、雪の結晶がキラキラと光るように見えて良いのではないかと思いました。このプルオーバーに色彩を加えて、複数の色が楽しめるアイディアが気に入りました。しゃれも効いています。このために必要なNeoPixelは7個でした。

まず、どのNeoPixelを最初に縫い付けるかを考えました。ショートしないように気を付ける必要があります。一番遠くのNeoPixelから始め、次にそこから一番近いものを縫い付けました。最初にすべてのデータピンを縫い付けます。導電糸で縫うのは普通の糸とはかなり違い、糸が太いため作業は大変です。まるで裸線のようで、ショートさせないようにするには骨が折れます。

すべてのデータ線の接続が済むと、次にFloraのGNDとVCCを縫い付けました。ここでもデータスティッチに近付きすぎないように気を付けました。糸を結んだところはマニキュア液で保護し、ほどけるのを防止しました。

 

部品はプルオーバー内部に取り付けようと決めていたため、Floraをカバーする必要がありました。これには、Floraのトップに被せることができ、下側に縫い付けたベルクロで固定/取り外しが可能なポーチを作ることで対応しました。この方法をLiPoバッテリにも使用し、LiPoバッテリを保護すると同時に、Floraにアクセスできるようにもしました。

最後の作業として、FloraをMicro USBでラップトップに接続し、Arduino IDEでスケッチをアップロードしました。これでNeoPixelを使用したクリスマス用のプルオーバーの完成です。思いつきで、しかも初めてのウェアラブルプロジェクトでしたが、とてもうまくいきました。

このプロジェクトでとても気に入っていることは、フェードする青と白のLEDにこだわる必要がないことです。また、状況に応じて、コードをいくつか変えることでNeoPixelの色を簡単に変えたり、点滅させることもできます。

Trainee Electronics Engineer, currently studying towards my degree in Electronic Engineering at the University of Hudderfsield. Completed my HND in Electrical & Electronic Engineering from Bradford College 2017. Love to try new things and build interesting projects!