Big Raspberry JAM TOKYO 2013 Hardware
-
Upload
hideki-aoshima -
Category
Technology
-
view
3.427 -
download
0
Transcript of 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
2
自己紹介
● 某中小企業で何でも屋のエンジニア● Raspberry Pi は販売初期に入手
– 現在は結局5台所有( Model A x1, Model B x4 )● こういうアイコンで出没→● twitter: @azarashi55● OSC(Open Source Conference) で講演など
* http://www.ospn.jp/
3
Agenda
● Raspberry Pi の紹介
● Raspberry Pi の GPIO
– 質疑応答、ディスカッションなど
● LED チカチカ(俗にいう L チカ)
– 質疑応答、ディスカッションなど・休憩
● 温度センサーを接続して温度測定
– 質疑応答、ディスカッションなど
4
Raspberry Pi の紹介 -1-
● 超小型で超安価な ARM コンピューター
– The Raspberry Pi Foundation が開発● 代表は Eben Upton 氏( Broadcom 社 Director )
– コンピューター教育用途として開発– Model A( 約 $25) 、 Model B( 約 $35)– ちなみに小中高生( K12 )のお小遣いで買える価格を目指したそうです
– 大きさはちょうどクレジットカードサイズ
5
Raspberry Pi の紹介 -2-
● なぜ” Raspberry Pi” ?
– ” コンピューター会社の名前にはフルーツの名前をつけるのが一般的” by Eben 氏
– Pi は Python に由来● 本セミナーではシェルスクリプトと Python を使用● もちろん他の言語も使えます
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 )
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 メモリ ) が存在します
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
9
Raspberry Pi を使う上での Tips
● 電源は大事
– スマートフォン用充電器などが使えますが、供給可能電流が 1A以上あると動作が安定します(特にWi-Fi ドングル使用時)
● SD カード
– そこそこのブランドの SDHC カード class 10 、容量 4GB以上がオススメ
10
Raspberry Pi の購入
● 発売当初は世界的に供給不足だったが今は供給が安定
● RS コンポーネンツ– 日本で唯一の公式 Reseller– http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi
– Blue Raspberry Pi のキャンペーン中
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
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
13
Raspberry Pi の GPIO -1- *
● 百聞は一見にしかず
GPIO
14
Raspberry Pi の GPIO -2-
● GPIO とは?– General Purpose Input/Output (汎用入出力)の略語
– Raspberry Pi の場合 13 ピン2列の 26 ピン
● GPIO で何ができるか?
– 単純な入出力機能だけでも LED チカチカ、ボタン押下検出など
– I2C 、 SPI 、 UART などで様々な外部デバイスを接続可能
–I2C については後ほど温度センサーでご説明します–UART は USB シリアル変換で使います
15
Raspberry Pi の GPIO を扱う上での注意点● GPIO ピンは SoC に直結されています
– 静電気、過電圧、過電流により Raspberry Pi 本体に損傷を与える可能性があります
– 特に静電気(着衣、空気の乾燥など)、過電圧には注意しましょう● 入出力電圧は 3.3V です
– 5V を入出力できません( Arduino とは異なります)– 接続するデバイスも 3.3V で動作するものを選ぶ
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
17
Raspberry Pi の GPIO -4-
● Raspberry Leaf
* http://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html
18
質疑応答・ディスカッション・休憩
19
LED チカチカ -1-
● LED チカチカ(俗に L チカ)の利点– 回路が簡単– 動作結果が目で見てわかる– ブレッドボード(次にご説明します)を使えばハンダ付け不要でお手軽
– パーツが超安価
20
LED チカチカ -2- * ブレッドボード● ブレッドボードとは?
– ブレッドボードの一例(色んな種類があります)
* http://akizukidenshi.com/catalog/g/gP-00315/
21
LED チカチカ -3- * ブレッドボードの内部配線● ブレッドボードの内部配線
溝の部分で絶縁されています
22
LED チカチカ -4- * LED の基礎知識● LED (発光ダイオード)
– ダイオードなので極性有り
● 足の長さや切欠きで区別
– Vf (順方向降下電圧)が3.3V 以下のものを選ぶ
– 電流制限抵抗を入れて LEDに過電流が流れないようにする
23
LED チカチカ -5- 配線図・回路図● 配線図・回路図(みんな大好き Fritzing )
* http://fritzing.org/
電流制限抵抗
24
LED チカチカ -6- * 実際の配線● 実際の配線
– 静電気に注意– 電源は抜いておく– 配線ミスに注意
– LED には極性があります
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
26
LED チカチカ質疑応答・ディスカッション・休憩
27
I2C 接続の温度計 -1-
● なぜ温度計か?– 使用する I2C 接続の温度センサー( TMP102 )が比較的安価– Raspberry Pi の GPIOヘッダーに I2C (後でご説明します)専用の端子がある
– I2C なのでデジタル入出力で結線数が少ない– 温度計が GPS とかより身近
* http://www.switch-science.com/catalog/258/ など
28
I2C 接続の温度計 -2- I2C について● I2C とは
– 1980年代初頭に開発されたプロトコル● その後改訂されて現在に至る
– シリアルデータ( SDA )とシリアルクロック( SCL )の 2 本の信号線によるシリアル通信
● 電源ラインを含めてもたった 4 本の結線で使用可能
– Raspbian のデフォルトのカーネルで I2C が使える
– 「アイ・スクエアド・シー」が正しい読み方
– ただ「アイ・ツー・シー」とも呼ばれる
29
I2C 接続の温度計 -3- I2C でのデバイスの接続● I2C でのデバイス接続方法
– 一つのマスターデバイス(今回は Raspberry Pi )にスレーブデバイス( 2 つ以上でも OK )を接続
– スレーブデバイスは I2C アドレス(大抵 7bit )を持ち、識別されます
30
I2C 接続の温度計 -4- TMP102● TMP102 の特徴
– I2C 接続で結線数が少ない(電源ライン込みで 4 本)
– 3.3V で動作し、消費電力が少ない
– 比較的安価
– 精度が 0.5℃(分解能は 0.0625℃)
– 使用例が多くWEB 上に情報が多い
31
I2C 接続の温度計 -5- * TMP102● TMP102 にピンヘッダーをハンダ付け
– ブレッドボードに仮固定するとうまくできます
32
I2C 接続の温度計 -6- 配線の確認● 事前に Fritzing で配線の確認
33
I2C 接続の温度計 -7- * 実際に配線● I2C 用ピンヘッダーの配置上、配線が1ヶ所に集中します
34
I2C 接続の温度計 -8- Raspbian の準備
● I2C モジュールの有効化(コメントアウトするだけ)
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
* Interface 誌増刊号 P.95 ~ 97
35
I2C 接続の温度計 -9- Raspbian の準備● i2c-dev モジュールを起動時に読み込ませる
$ sudo nano /etc/modules
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
37
I2C 接続の温度計 -11- I2C関連のパッケージをインストール●I2Cデバイスを操作するのに必要なパッケージをインストール$ sudo apt-get install i2c-tools python-smbus
●今回使用している温度センサーTMP102はさきほどのように配線すると、I2Cアドレスが0x49となります
●ちなみに、TMP102はI2Cアドレスを変えれば複数個接続出来ます– ADD0端子の接続先を変更するとI2Cアドレスが変わります
38
I2C 接続の温度計 -12- * TMP102 の動作確認● i2cdetect で確認
– 0x49 のところに 49 と表示されれば正常に通信できています
– なお、 Raspberry Pi Model B Rev.1 とそれ以外で i2cdetect の引数が異なります
39
I2C 接続の温度計 -13-
● 今回は I2C操作に SMBus モジュールを使います– ただし、ドキュメントが極端に少ないです
– Python3系列が必須ですが quick2wire-python-api というものもあります
● スライドの関係上クラス等は作りませんでした* https://github.com/quick2wire/quick2wire-python-api
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
41
I2C 接続の温度計 -15- *
● GPIO へのアクセスは root 権限が必要なので sudo コマンドを使います
42
I2C 接続の応用
● I2C 接続をマスターすると・・・– 様々なセンサー類をつなぐことができる
● 温度、湿度、大気圧、 GPS 、加速度など
– センサーの他にもいろいろつながります● LCD 、 A/D コンバータ、 RTC(Real Time Clock) など
– ぜひ TMP102 以外にもトライしてみて下さい
43
質疑応答・ディスカッション
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/)