Adafruit Gemma (アダフルーツ ゲンマ) はAdafruit 社によって開発された Arudino 互換のマイクロコントローラで、小型の手作り電子機器やウェアラブルデバイスを作成できる小型チップです。
このチップは、Arduino と同じように C 言語風の構文でプログラムを作成したプログラムを実行可能で、電子工作感覚でインタラクティブな振る舞いをするデバイスを簡単に作成することができます。Arduino との違いとして、導電糸(銅線の変わりに用いる、電気を通す特殊な糸)を用いることで、半田付けなどの必要なく、裁縫の感覚で安全に配線を行なうことができる特徴があります。
本記事では、Adafruit Gemma を用いて、LED を光らせるデバイスを作成できるようになるまでの手順を紹介します。
1. 用意するもの
- Adafruit Gemma v2 (マイクロコントローラ)
- 導電糸 (ボビン1つ分で十分)
- NeoPixel Ring (ウェアラブルタイプの LED 12 連リング)
- Micro USB ⇔ USB ケーブル (※ 通信機能つきのケーブルであれば、スマートフォンの付属の充電ケーブルで代用可能です)
左上から時計周りに、MicroUSB ケーブル、導電糸、NeoPixel Ring、Adafruit Gemma
2. 開発環境を構築
Adafruit Gemmaのドライバをインストール
Windows 7の場合、Adafruit Gemmaのドライバをダウンロードし、インストールが必要です。(Macの場合はドライバのインストールの不要はありません)
Arduino IDEをダウンロード
Arduino ベースのプログラムの統合開発環境である、Arduino IDEをダウンロードします。
3. Adafruit Gemma と Neo Pixel Ring を導電糸で接続
以下写真のように、Gemma と Neo Pixel Ring を導電糸で接続します。この際、導電糸が他の導電糸や導電部分に接触しないように気をつけましょう。(もちろん、布に縫い付けてウェアラブルデバイスとすることもできます。)
それぞれの接続する穴は以下です。以下の画像をクリックで拡大して確認できます。
Gemma 側 | NeoPixel Ring 側 | 用途 |
---|---|---|
GND | GND | アース用 |
Vout | PWR | 電源用 |
D0 | IN | データ通信用 |
4. プログラムを作成
NeoPixel Ring のライブラリを読み込み
LED リングの NeoPixel Ring を使うにあたって、Adafruit NeoPixel Library を GitHub からダウンロードする必要があります。ページ右側の「Download ZIP」からレポジトリを丸ごとダウンロードします。
Arduino IDE を起動し、「スケッチ」⇒「ライブラリを使用」⇒「Add Library」でダウンロードした ZIP ファイルを指定します。
プログラムを入力
Arduino IDE にて、以下プログラムを入力します。このプログラムは、全ての LED を赤〜黄〜緑〜青〜紫のように色を変化させながら光らせるものです。なお、本プログラムは、Adafruit社の GitHub アカウントにて公開されているサンプルを一部参考に作成しました。
#include <Adafruit_NeoPixel.h> #define BUTTON_PIN 2 #define PIXEL_PIN 0 #define PIXEL_COUNT 12 Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); bool oldState = HIGH; int showType = 0; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); strip.begin(); strip.show() } void loop() { uint8_t wait = 1; // Red(255,0,0) to Yellow(255,255,0) for(uint32_t i = 0; i < 255; i++){ colorWipe(strip.Color(255, i, 0), wait); } // Yellow(255,255,0) to Green(0,255,0) for(uint32_t i = 255; i > 0; i--){ colorWipe(strip.Color(i, 255, 0), wait); } // Green(0,255,0) to Cyan(0,255,255) for(uint32_t i = 0; i < 255; i++){ colorWipe(strip.Color(0, 255, i), wait); } // Cyan(0,255,255) to Blue(0,0,255) for(uint32_t i = 255; i > 0; i--){ colorWipe(strip.Color(0, i, 255), wait); } /// Blue(0,0,255) to Purple(255,0,255) for(uint32_t i = 0; i < 255; i++){ colorWipe(strip.Color(i, 0, 255), wait); } // Purple(255,0,255) to Red(255,0,0) for(uint32_t i = 255; i > 0; i--){ colorWipe(strip.Color(255, 0, i), wait); } } void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); } delay(wait); }
5. Gemma にプログラムを書き込み
Gemma の中央部にあるボタンを押し、Bootloader モードに変更します。
Bootloader モードになると、LED が点滅するので、点滅中に、「ファイル」⇒「マイコンボードに書き込む」を選択して、マイコンボードにプログラムを書き込みます。
6. 動作テスト
正常に書き込みが完了していると、以下の動画のように LED がじわじわと色を変えながら光ります。
まとめ
本記事では、Arduino ベースの小型ウェアラブルプラットフォーム、Adafruit Gemma を用いて LED (Neopixel Ring) を光らせるまでの手順を紹介しました。ケースに入れて簡単な室内用ライトとして使うこともできますね。次回以降は、各種センサーを用いたデバイスの作成方法を紹介したいと思います。