Big Raspberry JAM TOKYO 2013 Hardware

44
1 Big Raspberry JAM TOKYO 2013 Hardware Raspberry Pi と GPIO お手軽 Physical Computing ~ LED チカチカと温度センサー Japanese Raspberry Pi Users Group あおしま ひでき (Hideki AOSHIMA) Sponsored by

Transcript of Big Raspberry JAM TOKYO 2013 Hardware

Page 1: Big Raspberry JAM TOKYO 2013 Hardware

1

Big Raspberry JAM TOKYO 2013 Hardware

Raspberry Piと GPIOお手軽 Physical Computing

~ LED チカチカと温度センサー ~Japanese Raspberry Pi Users Groupあおしま ひでき (Hideki AOSHIMA)      

Sponsored by

Page 2: Big Raspberry JAM TOKYO 2013 Hardware

2

自己紹介

● 某中小企業で何でも屋のエンジニア● Raspberry Pi は販売初期に入手

– 現在は結局5台所有( Model A x1, Model B x4 )● こういうアイコンで出没→● twitter: @azarashi55● OSC(Open Source Conference) で講演など

* http://www.ospn.jp/

Page 3: Big Raspberry JAM TOKYO 2013 Hardware

3

Agenda

● Raspberry Pi の紹介

● Raspberry Pi の GPIO

– 質疑応答、ディスカッションなど

● LED チカチカ(俗にいう L チカ)

– 質疑応答、ディスカッションなど・休憩

● 温度センサーを接続して温度測定

– 質疑応答、ディスカッションなど

Page 4: Big Raspberry JAM TOKYO 2013 Hardware

4

Raspberry Pi の紹介 -1-

● 超小型で超安価な ARM コンピューター

– The Raspberry Pi Foundation が開発● 代表は Eben Upton 氏( Broadcom 社 Director )

– コンピューター教育用途として開発– Model A( 約 $25) 、 Model B( 約 $35)– ちなみに小中高生( K12 )のお小遣いで買える価格を目指したそうです

– 大きさはちょうどクレジットカードサイズ

Page 5: Big Raspberry JAM TOKYO 2013 Hardware

5

Raspberry Pi の紹介 -2-

● なぜ” Raspberry Pi” ?

– ” コンピューター会社の名前にはフルーツの名前をつけるのが一般的” by Eben 氏

– Pi は Python に由来● 本セミナーではシェルスクリプトと Python を使用● もちろん他の言語も使えます

Page 6: Big Raspberry JAM TOKYO 2013 Hardware

6

Raspberry Pi の紹介 -3-

● Raspberry Pi の主な仕様– SoC: Broadcom BCM2835

● CPU: ARM1176JZF-S(ARM11)● GPU: Broadcom VideoCore IV

– OpenGL ES2 がかなり高速で動く– I/O: USB2.0 、 Audio 、 HDMI 、 RCA Video 、 GPIO– Storage: SD カード

– 電源 : 基本的に microUSB から入力( 5V )

Page 7: Big Raspberry JAM TOKYO 2013 Hardware

7

Raspberry Pi の紹介 -4-

● Model A と Model B– Model A (より低消費電力な廉価版)

● LAN ポート無し、 USB x 1 、 256MB メモリ

– Model B (こちらが主流)● LAN ポート有り、 USB x 2 、現在は 512MB メモリ● Rev.1 と Rev.2(256MB メモリ ) 、

Rev.2(512MB メモリ ) が存在します

Page 8: Big Raspberry JAM TOKYO 2013 Hardware

8

Raspberry Pi の紹介 -5-

● cat /proc/cpuinfo– Revision: の欄を見る

● Model B Rev.1 : 0002● Model B Rev.2(RAM 256MB):0004,0005,0006● Model B Rev.2(RAM 512MB):000d,000e,000f● Model A : 0007,0008,0009

* http://elinux.org/RPi_HardwareHistory

Page 9: Big Raspberry JAM TOKYO 2013 Hardware

9

Raspberry Pi を使う上での Tips

● 電源は大事

– スマートフォン用充電器などが使えますが、供給可能電流が 1A以上あると動作が安定します(特にWi-Fi ドングル使用時)

● SD カード

– そこそこのブランドの SDHC カード class 10 、容量 4GB以上がオススメ

Page 10: Big Raspberry JAM TOKYO 2013 Hardware

10

Raspberry Pi の購入

● 発売当初は世界的に供給不足だったが今は供給が安定

● RS コンポーネンツ– 日本で唯一の公式 Reseller– http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi

– Blue Raspberry Pi のキャンペーン中

Page 11: Big Raspberry JAM TOKYO 2013 Hardware

11

Raspberry Pi のセットアップ -1-

● 最低限必要なもの( Model B の場合)

– 電源(スマートフォン用充電器など)– SD カード( SDHC カードがオススメ)、 SD カードリーダー /ライター

– LANケーブル

● Model Aや接続形態によって必要なもの

– USBキーボード、 USB マウス、ディスプレイ

– USB- シリアル変換ケーブル or アダプター( Model A の場合)

– Wi-Fi ドングル(多くの製品が Raspbian で使用可能)

* http://elinux.org/RPi_VerifiedPeripherals

Page 12: Big Raspberry JAM TOKYO 2013 Hardware

12

Raspberry Pi のセットアップ -2-

● SD カードに OS イメージファイルを書き込む– 本セミナーでは Raspbian ”Wheezy” 2013/2/9 版を使用

● 起動して初期設定● 必要に応じてユーザー追加・パスワード変更など● 詳細は Interface 12月号・同誌増刊号などをご参照下さい

– 基本的に Debian GNU/Linux “Wheezy” です

* Interface 12月号 P.50 ~、増刊号 P.22 ~

* http://www.raspberrypi.org/downloads

Page 13: Big Raspberry JAM TOKYO 2013 Hardware

13

Raspberry Pi の GPIO -1- *

● 百聞は一見にしかず

GPIO

Page 14: Big Raspberry JAM TOKYO 2013 Hardware

14

Raspberry Pi の GPIO -2-

● GPIO とは?– General Purpose Input/Output (汎用入出力)の略語

– Raspberry Pi の場合  13 ピン2列の 26 ピン

● GPIO で何ができるか?

– 単純な入出力機能だけでも LED チカチカ、ボタン押下検出など

– I2C 、 SPI 、 UART などで様々な外部デバイスを接続可能

–I2C については後ほど温度センサーでご説明します–UART は USB シリアル変換で使います

Page 15: Big Raspberry JAM TOKYO 2013 Hardware

15

Raspberry Pi の GPIO を扱う上での注意点● GPIO ピンは SoC に直結されています

– 静電気、過電圧、過電流により Raspberry Pi 本体に損傷を与える可能性があります

– 特に静電気(着衣、空気の乾燥など)、過電圧には注意しましょう● 入出力電圧は 3.3V です

– 5V を入出力できません( Arduino とは異なります)– 接続するデバイスも 3.3V で動作するものを選ぶ

Page 16: Big Raspberry JAM TOKYO 2013 Hardware

16

Raspberry Pi の GPIO -3-● Raspberry PiのGPIOピン配列 (Model B Rev.2 、Model A)

– 3.3Vと5VとGND が隣接しているので要注意

– Model B Rev.1は一部GPIOピンアサインが異なっているので注意して下さい

* http://www.orsx.net/blog/archives/4126

I2C で使います

Rev.1ではGPIO21

Page 17: Big Raspberry JAM TOKYO 2013 Hardware

17

Raspberry Pi の GPIO -4-

● Raspberry Leaf

* http://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html

Page 18: Big Raspberry JAM TOKYO 2013 Hardware

18

質疑応答・ディスカッション・休憩

Page 19: Big Raspberry JAM TOKYO 2013 Hardware

19

LED チカチカ -1-

● LED チカチカ(俗に L チカ)の利点– 回路が簡単– 動作結果が目で見てわかる– ブレッドボード(次にご説明します)を使えばハンダ付け不要でお手軽

– パーツが超安価

Page 20: Big Raspberry JAM TOKYO 2013 Hardware

20

LED チカチカ -2- * ブレッドボード● ブレッドボードとは?

– ブレッドボードの一例(色んな種類があります)

* http://akizukidenshi.com/catalog/g/gP-00315/

Page 21: Big Raspberry JAM TOKYO 2013 Hardware

21

LED チカチカ -3- * ブレッドボードの内部配線● ブレッドボードの内部配線

溝の部分で絶縁されています

Page 22: Big Raspberry JAM TOKYO 2013 Hardware

22

LED チカチカ -4- *   LED の基礎知識● LED (発光ダイオード)

– ダイオードなので極性有り

● 足の長さや切欠きで区別

– Vf (順方向降下電圧)が3.3V 以下のものを選ぶ

– 電流制限抵抗を入れて LEDに過電流が流れないようにする

Page 23: Big Raspberry JAM TOKYO 2013 Hardware

23

LED チカチカ -5-  配線図・回路図● 配線図・回路図(みんな大好き Fritzing )

* http://fritzing.org/

電流制限抵抗

Page 24: Big Raspberry JAM TOKYO 2013 Hardware

24

LED チカチカ -6- *  実際の配線● 実際の配線

– 静電気に注意– 電源は抜いておく– 配線ミスに注意

– LED には極性があります

Page 25: Big Raspberry JAM TOKYO 2013 Hardware

25

LED チカチカ -7- *  シェルスクリプト● Raspbian の場合すごく簡単( rootユーザーで実行)

– GPIO7 の使用開始echo “7” > /sys/class/gpio/export

– GPIO7 を出力に設定echo “out” > /sys/class/gpio/gpio7/direction

– GPIO7 に3.3V を出力echo “1” > /sys/class/gpio/gpio7/value

– GPIO7への出力を止めるecho “0” > /sys/class/gpio/gpio7/value

– GPIO7 の使用終了echo “7” > /sys/class/gpio/unexport* Interface誌 P.70 ~72 、 Interface誌増刊号 P.48 ~50

Page 26: Big Raspberry JAM TOKYO 2013 Hardware

26

LED チカチカ質疑応答・ディスカッション・休憩

Page 27: Big Raspberry JAM TOKYO 2013 Hardware

27

I2C 接続の温度計 -1-

● なぜ温度計か?– 使用する I2C 接続の温度センサー( TMP102 )が比較的安価– Raspberry Pi の GPIOヘッダーに I2C (後でご説明します)専用の端子がある

– I2C なのでデジタル入出力で結線数が少ない– 温度計が GPS とかより身近

* http://www.switch-science.com/catalog/258/ など

Page 28: Big Raspberry JAM TOKYO 2013 Hardware

28

I2C 接続の温度計 -2-  I2C について● I2C とは

– 1980年代初頭に開発されたプロトコル● その後改訂されて現在に至る

– シリアルデータ( SDA )とシリアルクロック( SCL )の 2 本の信号線によるシリアル通信

● 電源ラインを含めてもたった 4 本の結線で使用可能

– Raspbian のデフォルトのカーネルで I2C が使える

– 「アイ・スクエアド・シー」が正しい読み方

– ただ「アイ・ツー・シー」とも呼ばれる

Page 29: Big Raspberry JAM TOKYO 2013 Hardware

29

I2C 接続の温度計 -3-  I2C でのデバイスの接続● I2C でのデバイス接続方法

– 一つのマスターデバイス(今回は Raspberry Pi )にスレーブデバイス( 2 つ以上でも OK )を接続

– スレーブデバイスは I2C アドレス(大抵 7bit )を持ち、識別されます

Page 30: Big Raspberry JAM TOKYO 2013 Hardware

30

I2C 接続の温度計 -4-   TMP102● TMP102 の特徴

– I2C 接続で結線数が少ない(電源ライン込みで 4 本)

– 3.3V で動作し、消費電力が少ない

– 比較的安価

– 精度が 0.5℃(分解能は 0.0625℃)

– 使用例が多くWEB 上に情報が多い

Page 31: Big Raspberry JAM TOKYO 2013 Hardware

31

I2C 接続の温度計 -5- *   TMP102● TMP102 にピンヘッダーをハンダ付け

– ブレッドボードに仮固定するとうまくできます

Page 32: Big Raspberry JAM TOKYO 2013 Hardware

32

I2C 接続の温度計 -6- 配線の確認● 事前に Fritzing で配線の確認

Page 33: Big Raspberry JAM TOKYO 2013 Hardware

33

I2C 接続の温度計 -7- * 実際に配線● I2C 用ピンヘッダーの配置上、配線が1ヶ所に集中します

Page 34: Big Raspberry JAM TOKYO 2013 Hardware

34

I2C 接続の温度計 -8-  Raspbian の準備

● I2C モジュールの有効化(コメントアウトするだけ)

$ sudo nano /etc/modprobe.d/raspi-blacklist.conf

* Interface 誌増刊号 P.95 ~ 97

Page 35: Big Raspberry JAM TOKYO 2013 Hardware

35

I2C 接続の温度計 -9-  Raspbian の準備● i2c-dev モジュールを起動時に読み込ませる

$ sudo nano /etc/modules

Page 36: Big Raspberry JAM TOKYO 2013 Hardware

36

I2C 接続の温度計 -10-  Raspbian の準備

● 一旦 Raspberry Pi を再起動してログを確認

$ dmesg | grep i2c

で以下の 3行が出力されていることを確認 (lsmod コマンドでもOK)

[ 4.686775] bcm2708_i2c bcm2708_i2c.0: BSC0     Controller at 0x20205000 (irq 79) (baudrate 100k)

[ 4.897084] bcm2708_i2c bcm2708_i2c.1: BSC1     Controller at 0x20804000 (irq 79) (baudrate 100k)

[ 14.220329] i2c /dev entries driver

Page 37: Big Raspberry JAM TOKYO 2013 Hardware

37

I2C 接続の温度計 -11-  I2C関連のパッケージをインストール●I2Cデバイスを操作するのに必要なパッケージをインストール$ sudo apt-get install i2c-tools python-smbus

●今回使用している温度センサーTMP102はさきほどのように配線すると、I2Cアドレスが0x49となります

●ちなみに、TMP102はI2Cアドレスを変えれば複数個接続出来ます– ADD0端子の接続先を変更するとI2Cアドレスが変わります

Page 38: Big Raspberry JAM TOKYO 2013 Hardware

38

I2C 接続の温度計 -12- *  TMP102 の動作確認● i2cdetect で確認

– 0x49 のところに 49 と表示されれば正常に通信できています

– なお、 Raspberry Pi Model B Rev.1 とそれ以外で i2cdetect の引数が異なります

Page 39: Big Raspberry JAM TOKYO 2013 Hardware

39

I2C 接続の温度計 -13-

● 今回は I2C操作に SMBus モジュールを使います– ただし、ドキュメントが極端に少ないです

– Python3系列が必須ですが quick2wire-python-api というものもあります

● スライドの関係上クラス等は作りませんでした* https://github.com/quick2wire/quick2wire-python-api

Page 40: Big Raspberry JAM TOKYO 2013 Hardware

40

I2C 接続の温度計 -14-  Python スクリプト#!/usr/bin/env python

import smbus

# TMP102のI2Cアドレスは0x49

addr = 0x49

# SMBusの引数はModel B Rev.1の場合0、Model B Rev.2、Model Aの場合1

i2c = smbus.SMBus(1)

# TMP102から2バイト読み込みます

temp = i2c.read_i2c_block_data( addr, 0 ,2)

# 最後に、TMP102のデータシート通りに温度を計算して、画面表示します

print temp[0] + (temp[1] >> 4) * 0.0625

Page 41: Big Raspberry JAM TOKYO 2013 Hardware

41

I2C 接続の温度計 -15- *

● GPIO へのアクセスは root 権限が必要なので sudo コマンドを使います

Page 42: Big Raspberry JAM TOKYO 2013 Hardware

42

I2C 接続の応用

● I2C 接続をマスターすると・・・– 様々なセンサー類をつなぐことができる

● 温度、湿度、大気圧、 GPS 、加速度など

– センサーの他にもいろいろつながります● LCD 、 A/D コンバータ、 RTC(Real Time Clock) など

– ぜひ TMP102 以外にもトライしてみて下さい

Page 43: Big Raspberry JAM TOKYO 2013 Hardware

43

質疑応答・ディスカッション

Page 44: Big Raspberry JAM TOKYO 2013 Hardware

44

ありがとうございました

『 Big Raspberry JAM TOKYO 2013 Hardware 』主催: Japanese Raspberry PI Users Group (http://www.RasPi.jp/)

後援:アールエスコンポーネンツ株式会社 (http://rs-components.jp/)

   株式会社 KDDI ウェブコミュニケーションズ (http://www.cloudcore.jp/)