フィジカルコンピューティング用 I/Oボード紹介 〜Arduino UNOからRPi3, Touch Boardまで〜

# I/Oボードとは？
簡単に言うと「電気信号のInputやOutputを行えるマイコンボード」のことです。
今有名なのはArduinoやRaspberry Piあたりですね。
特にRaspberry Piは今年になりRaspberry Pi 3が発売され、Wi-fi・Bluetooth標準装備、CPU性能UP等々、より使いやすくなりました。

# 具体的に何ができるの？
プログラムを書き込むことで、電気信号のInput/Outputの制御をします。

Inputとしては、

* 感圧センサから荷重値を読み取る
* 人感センサで人が居るかどうかを確認する

などなど、センサからの電気信号を読み取ることが可能です。

Outputでは、

* LEDを光らせる
* モーターの制御信号を送る
* ON/OFFのスイッチングをする

等々のことが出来ます。

# I/Oボード紹介
本題に入ります。紹介に当たってのポイントとしては、

* 入門者向けの一般的なボード
* 知っていると便利なボード
* これは楽しい！夢が広がるボード

ってところ。
今回紹介するのはこのボードたち。

1. [Arduino UNO R3](#1-arduino-uno-r3)
2. [Raspberry Pi 3 Model B](#2-raspberry-pi-3-model-b)
3. [LilyPad Arduino 328](#3-lilypad-arduino-328)
4. [FLORA, GEMMA](#4-flora-gemma)
5. [8pino](#5-8pino)
6. [Touch Board](#6-touch-board)

これらのボードは、おおかたAmazonか[スイッチサイエンス](https://www.switch-science.com)で購入できます。

## 1. Arduino UNO R3
Arduinoの最も一般的なモデルです。安価な互換ボード([びんぼうでいいの](http://www.aitendo.com/product/10793)等)も続々と発売されています。

見た目はこんな感じ。

![789_201602_102.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/ab9b2a35-0fe5-d470-6fd3-dea9b3318075.jpeg)
出典：[スイッチサイエンス](https://www.switch-science.com)

デジタル入出力ピンが14本(うち6本はアナログ出力が可能)、アナログ入力ピンが6本あります。

Arduino UNOの場合、ボードとPCをUSB A-Bのケーブルで接続します。miniBやmicroBではなく、ただのBです。
そしてArduino系のボードは、PCより[Arduino IDE](https://www.arduino.cc/en/Main/Software)というソフトウェアからプログラムが書き込まれます。

<img width="200" alt="スクリーンショット 2016-12-19 21.13.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/130506/3ad7e073-856f-5e90-b0ca-e7778263a388.png">

これで各々のピンの挙動等をセッティングします。
基本的に、プログラムはC言語を基としたArduinoの独自言語で記述されます。詳しくは[Arduino 日本語リファレンス](http://www.musashinodenpa.com/arduino/ref/)を参照してください。
設定によってはpython等でも書けるらしい。

Arduinoを使って遊んでみたい場合は、オライリーの[Prototyping Lab](https://www.oreilly.co.jp/books/9784873114538/)を読むことをオススメします。
良い導入書であると同時に、使えると楽しいセンサ等の電子部品もがっつり紹介されており、長く愛読できる本となっています。

(余談ですがR3とはRevision 3のことで、[UNOは今までに3回のアップグレードがされています。](http://trac.switch-science.com/wiki/Arduino-diff))

## 2. Raspberry Pi 3 Model B
ArduinoはPC経由でプログラムを書き込みましたが、Raspberry Piはそれ自体がPCみたいなものなのでそんな必要はありません。

見た目はこんな感じ。

![Pi3_01.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/c7265fe6-d83e-85b5-e353-43554d87c4e9.jpeg)
出典：[Raspberry Pi Shop by KSY](https://raspberry-pi.ksyic.com/main/index)

ただArduinoと違ってセットアップが面倒くさい。詳しくは「[Raspberry Pi 3にRaspbianをインストール(Mac OS X を使用)](http://qiita.com/onlyindreams/items/acc70807b69b43e176bf)」をご参考ください。
上記に習ってOSを入れてしまえばもうLinux PCと大差ありません。ちなみにRaspbianはDebian系です。
近年では[windows10のRaspberry Pi用OSが出ている](http://pc.watch.impress.co.jp/docs/column/nishikawa/1007948.html)みたいなので、そちらを入れても面白いと思います。

Raspberry PiとArduino、操作方法はだいぶ違いますがどちらもI/Oボードとして利用が可能です。
そしてRaspberry PiはWi-FiとBluetooth、イヤホンジャックにHDMIまで標準で積んでいるので、そういう遊び方をしたいときはArduinoよりも使い勝手が良いかもしれません。

しかしRaspberry Piにはアナログ入力ピンが存在せず、アナログ(PWM)出力ピンも1つしかないので、「センサから値を読み取る」「複数のモータの挙動を制御する」等のことはArduinoの方が簡単に出来ます。
また、イヤホンジャックはそのまま使用すると随分ノイズが乗るので、対策が必要です。

後述の[おまけ](#おまけarduinoとraspberry-piの簡単な比較)にてArduinoとRaspberry Piの簡単な比較を行います。

## 3. LilyPad Arduino 328
さて、ここからはちょっと便利な変形Arduinoボードの紹介になります。

![13342-01.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/be6f8d46-8a9f-80b0-e434-8fe2c7556640.jpeg)
出典：[スイッチサイエンス](https://www.switch-science.com)

直径50[mm]厚さ0.8[mm]というサイズ感のボードで、布地に縫い付けて使用することを主目的としています。薄いですね。
なので、[通電糸](https://www.switch-science.com/catalog/911/)や[LilyPad用のモジュール類](https://www.switch-science.com/catalog/list/53/)を組み合わせて服やバック等を楽しく加工することができます。

![415c9e654f038f2521e8c6308c3678a4.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/05b69e9f-ed85-9052-cf22-d81482f83f83.jpeg)
出典：[DFROBOT](http://www.dfrobot.com.cn/goods-188.html)

上は使用例。通電糸で縫いつけているようです。

Arduino IDEでプログラムを書き込むには、[変換アダプタ](https://www.switch-science.com/catalog/1032/)とmicroBケーブルが必要となります。
[変換アダプタの必要ないタイプ](https://www.switch-science.com/catalog/1962/)もありますが、ピンの数がぐっと少なくなってしまいます。使用例の写真のボードはコレですね。


## 4. FLORA, GEMMA
これらは[Adafruit](https://www.adafruit.com)のボードになります。

![flora_logo.png](https://qiita-image-store.s3.amazonaws.com/0/130506/c18c6c98-57bc-5fa0-4fc7-7ff100606b97.png)
FLORA
![little_gemma.png](https://qiita-image-store.s3.amazonaws.com/0/130506/c2c262d1-efd0-028b-a50d-5722adcfb845.png)
GEMMA

出典：[Adafruit](https://www.adafruit.com/category/65)

FLORAは直径45[mm]厚さ7[mm]、GEMMAは直径28[mm]厚さ7[mm]です。LilyPadに比べサイズは小さいですが、厚みがあります。
使用用途はLilyPadと似たような感じで布に縫い付けて使用することが多いようです。
また、PCとの接続に変換アダプタが必要でなく、microBのケーブルさえあれば通信を行えます。

こちらも[専用のモジュール類](https://www.switch-science.com/catalog/list/515/)があります。しかしFLORA用のモジュールはGEMMAでは使えないこともあるので注意してください。
(例えば、FLORA用のGPSモジュールはGEMMAだとピンが足りず使用できません。)

## 5. 8pino
これはすごい！日本発の超々小型Arduino互換ボードです。

![2108_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/e27cfa92-83c6-dcd2-6da7-aed58b2abbb5.jpeg)
出典：[スイッチサイエンス](https://www.switch-science.com)

幅8[mm]厚さ0.8[mm]と、とても小さいです。
しかもmicroBポートに基盤が直接ささります。これもArduino IDEでプログラムを書き込めます。
また、サイズから価格からピンの数まですべて**8**で統一されており、そういう凝りようも半端じゃないです。

詳しくは、開発者さまの記事「[Arduinoを自作して量産して販売する(超小型Arduino互換機 8pinoを例に)](http://qiita.com/akichika/items/4c282c638b38681050d9)」へ。

## 6. Touch Board

各ポートがタッチセンサとして機能するArduino互換ボードです。これはなかなか楽しいですよ。

![IMG_0098_Hero-480x321.jpg](https://qiita-image-store.s3.amazonaws.com/0/130506/072d5d38-80e4-37bb-e65f-c051b491591b.jpeg)
(基板は画像下の白いヤツ)
出典：[BARE CONDUCTIVE](https://www.bareconductive.com/shop/touch-board/)

このBARE CONDUCTIVE社、[通電インクペン](https://www.switch-science.com/catalog/1529/)で結構有名なんです。
上の画像のインクもコレですね。

まあしかし、そもそも、Arduinoでも静電容量式のタッチセンサは簡単に作ることはできます。(参考：[INTER-ARTEQ](http://inter-arteq.com/2014/11/13/arduinoを使ってタッチセンサー/)、[建築発明工作ゼミ](http://kousaku-kousaku.blogspot.jp/2008/10/arduino.html))
[このようなArduino用のシールド](https://www.switch-science.com/catalog/2240/)まで販売されています。

ではこのボードは何がすごいのか、

* なんら拡張せずともmicroSDが入りイヤホンジャックもあるので、「タッチすると音が出る」ものを簡単に作れる
* 測距センサを取り付けなくとも「ピンに取り付けた導電体」と「モノ」との距離がざっくり測定できる

ということなんです。機能を特化させ見事にモジュール化していますね。
(詳しくは[BARE CONDUCTIVE](https://www.bareconductive.com/shop/touch-board/)のチュートリアルへ・・・)


下はこのTouch Boardの使用例の動画です。
クリックするとYoutubeに飛びます。

[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/1WRXwZoSDU4/0.jpg)](http://www.youtube.com/watch?v=1WRXwZoSDU4)

[少々お高い](https://www.switch-science.com/catalog/1998/)ですが、それに見合うくらいの機能性はあるかと思います。

# おまけ：ArduinoとRaspberry Piの簡単な比較
フィジカルコンピューティングをする上での比較を簡潔に。

|             |       メリット      |      デメリット      |
|:------------|:-------------------|:--------------------|
|Arduino      |・アナログ(PWM)入出力が同時に複数可能<br>・操作がとにかく簡単|・音楽再生やWi-Fi通信などには外付けのシールド等が必要<br>・ストレージがない(要拡張)<br>・メモリが小さい|
|Raspberry Pi |・Wi-Fi、Bluetooth、イヤホンジャック、HDMIが標準搭載<br>・microSDを挿入するためストレージがある<br>・メモリ1GB|・アナログ(PWM)入力を行うには別途ICチップが必要<br>・アナログ(PWM)出力ピンが1つしかない<br>・Linuxが面倒|