SlideShare a Scribd company logo
五感を見える化!
楽しい可視化 LEDテープを使って人間の五感を拡張しよう! 静電容量センサと、外部デバイスのための
デバイスドライバを使った制御方法について示します。 計測サーバとして、グラフ描画をWebで行いま
す。
LEDテープを使おう!
デコレーションのためのLEDテープには、最近シリアル信号で個別に色を制御することができるものが
出てきました。これを使い、センサーの可視化実験をしてみます。まずはLEDテープだけで、簡単に色を
流してみるところからはじめましょう。
材料
LEDテープ 50cm~1m
Arduino あるいは互換機
Raspberry Pi、ブレッドボード、ブレッドワイヤー
ACアダプタ、DCJACK
はんだ、配線材
330μF電解コンデンサ x 3
DCJACK ブレッドボードアダプター
材料解説
LEDテープ 「フルカラーシリアルLEDテープ」として販売されているものです。
「シリアル」という言葉がついているものにしてください。Adafruit NeoPixel という種類のものが、3
つの線で動かすタイプで、この種類のものを使います。今回はNeoPixel互換のものを「ちっちゃい
ものくらぶ」
http://tiisai.dip.jp/
から入手しました。
好きな位置でカットして、またつなぎなおすこともできます。
写真は、端に電源とコントロールの3線をつなげた状態です。
ACアダプタ、DCJACK
LEDテープは結構消費電力が大きく、1mごとに最大5V3~4A程度必要になるようです。
今回は5V 4Aのものを使い、DCJACKを使って電力供給します。
DCJACKは秋月電子の「ブレッドボード用DCジャックDIP化キット」 ¥100 を使いました。
Arduino あるいは互換機
フルカラーシリアルLEDテープは制御のタイミングが難しく、Linux では苦手とする分野です。なの
でRaspberry Piの周辺機器として、タイミングを正確にコントロールできるマイコンを接続します。
ここでも、Arduino互換機としてLIBLOAVRを使いました。
作り方
LEDテープはDIがある端面に赤,黒、白の線をはんだづけします。
白はジャンパーケーブルで、赤、黒は電流を多く流せるように太めの線を使います。1mのLEDテープを動
かすためには太さの規格としてAWG24ぐらい、またはそれ以上のものが必要です。はんだづけはフィル
ムが表面を被っているので、カッターなどでごりごりやってからはんだづけします。
ブレッドボード用DCジャックアダプタは、はんだづけしてこのように組み立てます。
ブレッドボードにこのように配置して、330μFの電解コンデンサを3つつけます。
LIBLO AVRをこのように立ててブレッドボードに差し込みました。スケッチを書き込むときは一旦ブレッド
ボードから外して書き込み、チェックなどを行ってください。
白の線はArduino のD6に、ArduinoのRXとRaspberry PiのTXを接続します。
<<プログラム>>
まず、Arduino のスケッチを作ります。
https://github.com/adafruit/Adafruit_NeoPixel#adafruit-neopixel-library
より、NeoPixelのライブラリをダウンロードし、インストールをします。「Download ZIP」ボタンからダウンロ
ード、解凍して出てきた’Adafruit_NeoPixel-master’フォルダを ‘Adafruit_NeoPixel’ という名前に変更し、
ライブラリフォルダにコピーします(ライブラリインストール方法は巻末を参照してください)。
その後、以下のスケッチをArduino/互換機に書き込みます。
# i n c l u d e < A d a f r u i t _ N e o P i x e l . h >
# d e f i n e P I N 6
/ / P a r a m e t e r 1 = n u m b e r o f p i x e l s i n s t r i p
/ / P a r a m e t e r 2 = A r d u i n o p i n n u m b e r ( m o s t a r e v a l i d )
/ / P a r a m e t e r 3 = p i x e l t y p e f l a g s , a d d t o g e t h e r a s n e e d e d :
/ / N E O _ K H Z 8 0 0 8 0 0 K H z b i t s t r e a m ( m o s t N e o P i x e l p r o d u c t s w / W S 2 8 1 2 L E D s )
/ / N E O _ K H Z 4 0 0 4 0 0 K H z ( c l a s s i c ' v 1 ' ( n o t v 2 ) F L O R A p i x e l s , W S 2 8 1 1 d r i v e r
s )
/ / N E O _ G R B P i x e l s a r e w i r e d f o r G R B b i t s t r e a m ( m o s t N e o P i x e l p r o d u c t s
)
/ / N E O _ R G B P i x e l s a r e w i r e d f o r R G B b i t s t r e a m ( v 1 F L O R A p i x e l s , n o t v
2 )
A d a f r u i t _ N e o P i x e l s t r i p = A d a f r u i t _ N e o P i x e l ( 6 0 , P I N , N E O _ G R B + N E O _ K H Z 8 0 0 ) ;
/ / I M P O R T A N T : T o r e d u c e N e o P i x e l b u r n o u t r i s k , a d d 1 0 0 0 u F c a p a c i t o r a c r o s s
/ / p i x e l p o w e r l e a d s , a d d 3 0 0 - 5 0 0 O h m r e s i s t o r o n f i r s t p i x e l ' s d a t a i n p u
t
/ / a n d m i n i m i z e d i s t a n c e b e t w e e n A r d u i n o a n d f i r s t p i x e l . A v o i d c o n n e c t i n g
/ / o n a l i v e c i r c u i t . . . i f y o u m u s t , c o n n e c t G N D f i r s t .
# d e f i n e M A X P I X E L 6 0
i n t s t r i p R [ M A X P I X E L ] ;
i n t s t r i p G [ M A X P I X E L ] ;
i n t s t r i p B [ M A X P I X E L ] ;
u i n t 3 2 _ t c o l ;
S t r i n g s = " " ;
v o i d s e t u p ( ) {
i n t i ;
f o r ( i = 0 ; i < M A X P I X E L ; i + + ) {
s t r i p R [ i ] = 0 ;
s t r i p G [ i ] = 0 ;
s t r i p B [ i ] = 0 ;
}
s t r i p . b e g i n ( ) ;
s t r i p . s h o w ( ) ;
S e r i a l . b e g i n ( 9 6 0 0 ) ;
S e r i a l . p r i n t l n ( " R e a d y " ) ;
}
v o i d l o o p ( ) {
c h a r c ;
i n t i = 0 ;
i n t v a l u e ;
s = " " ;
w h i l e ( i < 2 5 6 ) {
i f ( S e r i a l . a v a i l a b l e ( ) > 0 ) {
c = S e r i a l . r e a d ( ) ;
i f ( 1 0 = = c ) {
b r e a k ;
}
s + = c h a r ( c ) ;
}
}
i f ( ' R ' = = s . c h a r A t ( 0 ) ) {
S e r i a l . p r i n t l n ( " R " ) ;
v a l u e = s . s u b s t r i n g ( 1 ) . t o I n t ( ) ;
S e r i a l . p r i n t l n ( v a l u e ) ;
i n t w r i t e V a l u e = 0 ;
f o r ( i = M A X P I X E L - 1 ; i > = 0 ; i - - ) {
i f ( i = = v a l u e ) {
w r i t e V a l u e = 2 0 0 ;
}
s t r i p R [ i ] = w r i t e V a l u e ;
}
}
i f ( ' G ' = = s . c h a r A t ( 0 ) ) {
S e r i a l . p r i n t l n ( " G " ) ;
v a l u e = s . s u b s t r i n g ( 1 ) . t o I n t ( ) ;
S e r i a l . p r i n t l n ( v a l u e ) ;
i n t w r i t e V a l u e = 0 ;
f o r ( i = M A X P I X E L - 1 ; i > = 0 ; i - - ) {
i f ( i = = v a l u e ) {
w r i t e V a l u e = 2 0 0 ;
}
s t r i p G [ i ] = w r i t e V a l u e ;
}
}
i f ( ' B ' = = s . c h a r A t ( 0 ) ) {
S e r i a l . p r i n t l n ( " B " ) ;
v a l u e = s . s u b s t r i n g ( 1 ) . t o I n t ( ) ;
S e r i a l . p r i n t l n ( v a l u e ) ;
i n t w r i t e V a l u e = 0 ;
f o r ( i = M A X P I X E L - 1 ; i > = 0 ; i - - ) {
i f ( i = = v a l u e ) {
w r i t e V a l u e = 2 0 0 ;
}
s t r i p B [ i ] = w r i t e V a l u e ;
}
}
N e o P i x e l B a r ( ) ;
}
v o i d N e o P i x e l B a r ( ) {
i n t i ;
f o r ( i = 0 ; i < M A X P I X E L ; i + + ) {
c o l = s t r i p . C o l o r ( s t r i p R [ i ] , s t r i p G [ i ] , s t r i p B [ i ] ) ;
s t r i p . s e t P i x e l C o l o r ( i , c o l ) ;
}
s t r i p . s h o w ( ) ;
}
これを実行して、Arduino IDEから「ツール」-「シリアルモニタ」で、LFのみ、9600 baud を選択します。上の
窓にR10と打って「送信」とするとLEDが赤色に10個分光ればスケッチの動作確認はOKです。
さて、ここまでうまく動いたら、Raspberry Pi からコントロールしてみましょう。
第4章で使用した、sendserial.pyを使い、以下のように操作します。
sudo python3 sendserial.py R4 (4個のLEDの赤成分を光らせる)
sudo python3 sendserial.py G7 (7個のLEDの緑成分を光らせる)
sudo python3 sendserial.py B15 (15個のLEDの青成分を光らせる)
うまくできたでしょうか。
5感を見える化!
次に、光センサー、音センサーなどいろんなセンサーを使って、その結果をLEDテープでわかりやすく表
示してみましょう。
材料
2.7MΩ 1/4W抵抗 x 1、 100Ω 1/4W抵抗 x 7
トランジスタアレイ TD62783APG
ADコンバータ MCP3008
330μF 電解コンデンサ x 2
においセンサ
圧電スピーカ
CDS
アルミホイル、アクリル板、両面テープ
材料解説
2.7MΩ 1/4W抵抗 x 1、 100Ω 1/4W抵抗 x 7
本書で使用する標準の抵抗値とは別の、特別な値の抵抗をこのレシピでのみ使います。
においセンサ
秋月電子の「においセンサ TGS2450」 (¥300)を使います。
アルミホイル、アクリル板、両面テープ
アクリル板は数センチ角でOKです。アルミホイルは10cmぐらい、両面テープは10mmないし15mm
幅程度のものを用意してください
まずは音からはじめてみましょう。圧電スピーカは、音センサとして使うことができます。
このようにつなげます。ずらっと並んだ22kΩ抵抗は、使わないチャンネルを0に固定するものです。
以下のプログラムを作成して実行します。
mcp3008-8ch.py
import wiringpi2 as w
import time
REF=3.3 # 5.0 or 3.3
w.wiringPiSPISetup(0,1000000)
def MCP3008(channel):
register = 0x80
buff=(1 << 16) +(register<<8)+(channel<<12)
buff=buff.to_bytes(3,byteorder=’big’)
w.wiringPiSPIDataRW(0,buff)
return (((buff[1]&3)*256)+buff[2])
channel = 0
while 1:
print ()
time.sleep(1)
for channel in [0,1,2,3,4,5,6,7]:
data=MCP3008(channel)
print (channel,”:”,data,” “,end=”” )
このプログラムは、8チャンネルのデータを1秒ごとに計測して表示します。
圧電スピーカはチャンネル0に接続しているので、圧電スピーカの前で手を叩くと値が変わります。0か0
でないかというレベルの反応です。圧電スピーカの種類によって感度が異なるので、反応が悪い場合
は直接叩いてみてください。
この次に、触覚としてタッチセンサーを作ります。アクリル板にアルミ箔を両面テープで貼ります。これと
は別にジャンパーワイヤーにアルミ箔を巻き、更にジャンパーの先を曲げておきます。それを先のアルミ
箔に結んでセロテープで留めておきます。
できたタッチセンサーを下のようにつないでみましょう。
同じプログラムで、今度はチャンネル1で反応します。
指で、センサをなぞってみて、数字がどうなるか確認してみましょう。
タッチすると電気が流れて検出します。押す強さでも光の強さが変わりますね。
タッチセンサがうまくいけば、同じセンサを使って味覚を測ることも試してみましょう。
味覚は、舌で五種類の別々の味を知覚します。それぞれの味は表のような意味があります。
塩味 塩化ナトリウム 溶液の電気伝導度
すっぱさ 酸性かどうか PHセンサー
甘さ 糖分があるかどうか 糖度センサー
苦さ 灰分やアルカロイドなど PHセンサーなど
うまさ アミノ酸があるかどうか ニンヒドリン反応後色センサー
それぞれ、別々のはたらきで味がするようになっていて、いろんなセンサーを使うとそのものではないで
すが似た測定ができます。
ここでは簡単に、塩味のセンサーとして、このタッチセンサーを使ってみましょう。
醤油をかけてみました。指よりももっと反応が高いです。抵抗を変更して、測りたい塩味にうまく反応す
るように調節してみてください。
□発展 
塩味がなくても、感度を上げた状態では普通の水も検出できます。雨などのセンサーにも応用できます
ね。
視覚センサー
明るさを測ります。第2章で使ったCDSを使いましょう。
チャンネル2で測定します。
残りは嗅覚ですね。用意した匂いセンサですが、実はこのセンサはけっこうコツがいります。内部にヒー
ターが
あって、それを温めないといけないのですが温めすぎるとすぐに壊れてしまいます。タイミング良くコント
ロールするためにここでもArduino互換機を使ってみました。
匂いセンサーの出力を、アナログでMCP3008に渡すようにして、あたかもアナログセンサーのように使う
ことができます。
においセンサ用Arduinoスケッチ
c o n s t i n t a n a l o g I n P i n = A 0 ;
i n t s e n s o r V a l u e = 0 ;
i n t o u t p u t V a l u e = 0 ;
i n t i ;
v o i d s e t u p ( ) {
S e r i a l . b e g i n ( 9 6 0 0 ) ;
p i n M o d e ( 2 , O U T P U T ) ;
p i n M o d e ( 3 , O U T P U T ) ;
d i g i t a l W r i t e ( 2 , L O W ) ;
}
v o i d l o o p ( ) {
f o r ( i = 1 ; i < 4 ; i + + ) {
d e l a y ( 2 3 8 ) ;
d i g i t a l W r i t e ( 3 , H I G H ) ;
d e l a y ( 3 ) ;
s e n s o r V a l u e = a n a l o g R e a d ( a n a l o g I n P i n ) ;
d e l a y ( 2 ) ;
d i g i t a l W r i t e ( 3 , L O W ) ;
d i g i t a l W r i t e ( 2 , H I G H ) ;
d e l a y ( 8 ) ;
d i g i t a l W r i t e ( 2 , L O W ) ;
}
S e r i a l . p r i n t ( " s e n s o r = " ) ;
S e r i a l . p r i n t ( s e n s o r V a l u e ) ;
S e r i a l . p r i n t l n ( ) ;
a n a l o g W r i t e ( 5 , s e n s o r V a l u e / 6 ) ;
d e l a y ( 2 ) ;
}
これを実行し、Raspberry Piには先のMCP3008のチャンネル4に接続します。アルコールや、ニンニクの匂
いなどに反応しますので試してみてください。
LEDテープを使ってセンサを可視化する
今までの、センサとLEDテープを組み合わせて、センサの値をLEDテープで表示するようにしてみました。
LEDテープのRGBの3チャンネルの値を使いますので、今回はセンサーを音、タッチセンサ、光センサの3
つを接続してみました。先の作例の配線を同時にすると、このようになります。
プログラムを、trisense.pyとして作成します。
# ! / u s r / b i n / e n v p y t h o n 3
i m p o r t w i r i n g p i 2 a s w
i m p o r t t i m e
i m p o r t s e r i a l
w . w i r i n g P i S P I S e t u p ( 0 , 1 0 0 0 0 0 0 )
d e f M C P 3 0 0 8 ( c h a n n e l ) :
r e g i s t e r = 0 x 8 0
b u f f = ( 1 < < 1 6 ) + ( r e g i s t e r < < 8 ) + ( c h a n n e l < < 1 2 )
b u f f = b u f f . t o _ b y t e s ( 3 , b y t e o r d e r = ' b i g ' )
w . w i r i n g P i S P I D a t a R W ( 0 , b u f f )
r e t u r n ( ( ( b u f f [ 1 ] & 3 ) * 2 5 6 ) + b u f f [ 2 ] )
d e f s e n d s e r i a l ( s ) :
b = l i s t ( s )
f o r x i n b :
s e r . w r i t e ( x . e n c o d e ( " u t f - 8 " ) )
s e r . w r i t e ( b '  x 0 a ' )
c h a n n e l = 0
s e r = s e r i a l . S e r i a l ( ' / d e v / t t y A M A 0 ' , 9 6 0 0 )
w h i l e 1 :
p r i n t ( )
t i m e . s l e e p ( 0 . 1 )
d a t a = M C P 3 0 0 8 ( 0 )
p r i n t ( " R : " , d a t a , " " , e n d = " " )
s e n d s e r i a l ( " R " + s t r ( d a t a ) )
d a t a = M C P 3 0 0 8 ( 1 ) / / 1 0
p r i n t ( " G : " , d a t a , " " , e n d = " " )
s e n d s e r i a l ( " G " + s t r ( d a t a ) )
d a t a = M C P 3 0 0 8 ( 2 ) / / 2 0 - 2 0
p r i n t ( " B : " , d a t a , " " , e n d = " " )
s e n d s e r i a l ( " B " + s t r ( d a t a ) )
センサの値にょって、data の割る数などは調整してください。
how to five sense with raspberry pi

More Related Content

Similar to how to five sense with raspberry pi

Gaming With the World
Gaming With the WorldGaming With the World
Gaming With the World
Volker Hirsch
 
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
Tatsuwo Moriyama
 
Economics of Apps - University of Oxford, 15 Oct 2010
Economics of Apps - University of Oxford, 15 Oct 2010Economics of Apps - University of Oxford, 15 Oct 2010
Economics of Apps - University of Oxford, 15 Oct 2010
Volker Hirsch
 
PBL1-v1-009j.pptx
PBL1-v1-009j.pptxPBL1-v1-009j.pptx
PBL1-v1-009j.pptx
NAIST
 
Virtual Goods Forum: Mobile + Social
Virtual Goods Forum: Mobile + SocialVirtual Goods Forum: Mobile + Social
Virtual Goods Forum: Mobile + Social
Volker Hirsch
 
[さるる勉強会] AWS IoTのい・ろ・は
[さるる勉強会] AWS IoTのい・ろ・は[さるる勉強会] AWS IoTのい・ろ・は
[さるる勉強会] AWS IoTのい・ろ・は
Daiki Mori
 

Similar to how to five sense with raspberry pi (7)

Gaming With the World
Gaming With the WorldGaming With the World
Gaming With the World
 
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
 
Economics of Apps - University of Oxford, 15 Oct 2010
Economics of Apps - University of Oxford, 15 Oct 2010Economics of Apps - University of Oxford, 15 Oct 2010
Economics of Apps - University of Oxford, 15 Oct 2010
 
PBL1-v1-009j.pptx
PBL1-v1-009j.pptxPBL1-v1-009j.pptx
PBL1-v1-009j.pptx
 
Virtual Goods Forum: Mobile + Social
Virtual Goods Forum: Mobile + SocialVirtual Goods Forum: Mobile + Social
Virtual Goods Forum: Mobile + Social
 
[さるる勉強会] AWS IoTのい・ろ・は
[さるる勉強会] AWS IoTのい・ろ・は[さるる勉強会] AWS IoTのい・ろ・は
[さるる勉強会] AWS IoTのい・ろ・は
 
10 th Mark sheet_1
10 th Mark sheet_110 th Mark sheet_1
10 th Mark sheet_1
 

More from Yoshimasa Kawano

「寝ながら作るXojo」ハンズオンテキスト
「寝ながら作るXojo」ハンズオンテキスト「寝ながら作るXojo」ハンズオンテキスト
「寝ながら作るXojo」ハンズオンテキスト
Yoshimasa Kawano
 
20181220 pcba3days
20181220 pcba3days20181220 pcba3days
20181220 pcba3days
Yoshimasa Kawano
 
20181020 opticalsystem
20181020 opticalsystem20181020 opticalsystem
20181020 opticalsystem
Yoshimasa Kawano
 
20181020 iotl tinshenzhen
20181020 iotl tinshenzhen20181020 iotl tinshenzhen
20181020 iotl tinshenzhen
Yoshimasa Kawano
 
20180414 shenzen 20180512
20180414 shenzen 2018051220180414 shenzen 20180512
20180414 shenzen 20180512
Yoshimasa Kawano
 
C89.360°映像システムをつくる
C89.360°映像システムをつくるC89.360°映像システムをつくる
C89.360°映像システムをつくる
Yoshimasa Kawano
 
20171124 startupweekendtokyo
20171124 startupweekendtokyo20171124 startupweekendtokyo
20171124 startupweekendtokyo
Yoshimasa Kawano
 
20170130 r114
20170130 r11420170130 r114
20170130 r114
Yoshimasa Kawano
 
20170914 wildlife
20170914 wildlife20170914 wildlife
20170914 wildlife
Yoshimasa Kawano
 
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Yoshimasa Kawano
 
20160227 de live-scratch
20160227 de live-scratch20160227 de live-scratch
20160227 de live-scratch
Yoshimasa Kawano
 
Scrirty conference20160410
Scrirty conference20160410Scrirty conference20160410
Scrirty conference20160410
Yoshimasa Kawano
 
20160218 devsumi
20160218 devsumi20160218 devsumi
20160218 devsumi
Yoshimasa Kawano
 
20150919 raspistable (bis)
20150919 raspistable (bis)20150919 raspistable (bis)
20150919 raspistable (bis)
Yoshimasa Kawano
 
Pcb20140111
Pcb20140111Pcb20140111
Pcb20140111
Yoshimasa Kawano
 

More from Yoshimasa Kawano (18)

「寝ながら作るXojo」ハンズオンテキスト
「寝ながら作るXojo」ハンズオンテキスト「寝ながら作るXojo」ハンズオンテキスト
「寝ながら作るXojo」ハンズオンテキスト
 
20181220 pcba3days
20181220 pcba3days20181220 pcba3days
20181220 pcba3days
 
20181020 opticalsystem
20181020 opticalsystem20181020 opticalsystem
20181020 opticalsystem
 
20181020 iotl tinshenzhen
20181020 iotl tinshenzhen20181020 iotl tinshenzhen
20181020 iotl tinshenzhen
 
20180414 shenzen 20180512
20180414 shenzen 2018051220180414 shenzen 20180512
20180414 shenzen 20180512
 
C89.360°映像システムをつくる
C89.360°映像システムをつくるC89.360°映像システムをつくる
C89.360°映像システムをつくる
 
20171124 startupweekendtokyo
20171124 startupweekendtokyo20171124 startupweekendtokyo
20171124 startupweekendtokyo
 
20170130 r114
20170130 r11420170130 r114
20170130 r114
 
20170914 wildlife
20170914 wildlife20170914 wildlife
20170914 wildlife
 
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
 
20160227 de live-scratch
20160227 de live-scratch20160227 de live-scratch
20160227 de live-scratch
 
Scrirty conference20160410
Scrirty conference20160410Scrirty conference20160410
Scrirty conference20160410
 
20160218 devsumi
20160218 devsumi20160218 devsumi
20160218 devsumi
 
20150919 raspistable (bis)
20150919 raspistable (bis)20150919 raspistable (bis)
20150919 raspistable (bis)
 
De workshop text20150704
De workshop text20150704De workshop text20150704
De workshop text20150704
 
Ikuijxit20150701
Ikuijxit20150701Ikuijxit20150701
Ikuijxit20150701
 
実装機
実装機実装機
実装機
 
Pcb20140111
Pcb20140111Pcb20140111
Pcb20140111
 

how to five sense with raspberry pi