Hardware

Adafruit Gemma と導電糸で電子工作を始めよう

Adafruit Gemma (アダフルーツ ゲンマ) はAdafruit 社によって開発された Arudino 互換のマイクロコントローラで、小型の手作り電子機器やウェアラブルデバイスを作成できる小型チップです。

IMG_20150826_134147
このチップは、Arduino と同じように C 言語風の構文でプログラムを作成したプログラムを実行可能で、電子工作感覚でインタラクティブな振る舞いをするデバイスを簡単に作成することができます。Arduino との違いとして、導電糸(銅線の変わりに用いる、電気を通す特殊な糸)を用いることで、半田付けなどの必要なく、裁縫の感覚で安全に配線を行なうことができる特徴があります。

本記事では、Adafruit Gemma を用いて、LED を光らせるデバイスを作成できるようになるまでの手順を紹介します。

1. 用意するもの

左上から時計周りに、MicroUSB ケーブル、導電糸、NeoPixel Ring、Adafruit Gemma
IMG_20150919_132322

2. 開発環境を構築

Adafruit Gemmaのドライバをインストール
Windows 7の場合、Adafruit Gemmaのドライバをダウンロードし、インストールが必要です。(Macの場合はドライバのインストールの不要はありません)

Untitled02

Arduino IDEをダウンロード
Arduino ベースのプログラムの統合開発環境である、Arduino IDEをダウンロードします。

Untitled01

3. Adafruit Gemma と Neo Pixel Ring を導電糸で接続

以下写真のように、Gemma と Neo Pixel Ring を導電糸で接続します。この際、導電糸が他の導電糸や導電部分に接触しないように気をつけましょう。(もちろん、布に縫い付けてウェアラブルデバイスとすることもできます。)

IMG_20150905_174229

それぞれの接続する穴は以下です。以下の画像をクリックで拡大して確認できます。

Gemma 側 NeoPixel Ring 側 用途
GND GND アース用
Vout PWR 電源用
D0 IN データ通信用

Gemma 側
IMG_20150919_131941

NeoPixel Ring 側
IMG_20150919_131905

4. プログラムを作成

NeoPixel Ring のライブラリを読み込み
LED リングの NeoPixel Ring を使うにあたって、Adafruit NeoPixel Library を GitHub からダウンロードする必要があります。ページ右側の「Download ZIP」からレポジトリを丸ごとダウンロードします。

Picture1

Arduino IDE を起動し、「スケッチ」⇒「ライブラリを使用」⇒「Add Library」でダウンロードした ZIP ファイルを指定します。

Picture2

プログラムを入力
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 モードに変更します。

Picture5

Bootloader モードになると、LED が点滅するので、点滅中に、「ファイル」⇒「マイコンボードに書き込む」を選択して、マイコンボードにプログラムを書き込みます。

Picture3

6. 動作テスト

正常に書き込みが完了していると、以下の動画のように LED がじわじわと色を変えながら光ります。

まとめ

本記事では、Arduino ベースの小型ウェアラブルプラットフォーム、Adafruit Gemma を用いて LED (Neopixel Ring) を光らせるまでの手順を紹介しました。ケースに入れて簡単な室内用ライトとして使うこともできますね。次回以降は、各種センサーを用いたデバイスの作成方法を紹介したいと思います。