OSC Tokyo 2013 Spring JRPUG

2,602 views

Published on

OSC Tokyo/Spring 2013 のJapanese Raspberry Pi Users Group セミナー後半の資料です

Published in: Technology

OSC Tokyo 2013 Spring JRPUG

  1. 1. OSC 2013 Tokyo/Spring 超小型 & 超安価 ARM コンピュータ Raspberry Pi でできること ~応用編~ Raspberry Pi で温度計を作ってみる ( GPIO の初歩として ) Japanese Raspberry Pi Users Group あおしま ひでき( @azarashi55 )
  2. 2. 自己紹介● あおしま ひでき  – 某中小企業のシステムエンジニア (と言う名の何でも屋) – Twitter: @azarashi55 – こういうアイコンを見つけたら要注意 – Japanese Raspberry PI Users Group – 汎用制御装置 GVC の開発にも携わる 2
  3. 3. 今日の内容● GPIO (汎用入出力)端子の初歩● Arduino との違いについて● 今回使う I C プロトコルの簡単な説明 2● 今回作る温度計に使うデバイスと配線● Raspbian の準備と実際の温度計スクリプト
  4. 4. Raspberry Pi の魅力 -1-● CPU が(そこそこ)速い – GPU 性能は抜群● 安い(上位モデルの Model B で 35 米ドル)● 美味しい  ・・・かどうかは知りません  (´ ・ ω ・ `) – まじめに言うといろいろいじり甲斐がある – 応用がききます →ARM 系ボード界の牛丼!? 4
  5. 5. Raspberry Pi の魅力 -2-● GPIO (汎用入出力)ヘッダーがついている – 普通の PC と異なり GPIO 端子がついていること により、多種多様な外部デバイスを接続可能 ● I2C 、 SPI 、 UART 、 etc... – もちろん USB などの端子もあります → 普通の PC ではできないことができる! 5
  6. 6. GPIO ヘッダーを見てみよう● GPIO ヘッダー これです 6
  7. 7. GPIO の応用例● よくある使い方 – USB- シリアル変換( Model A で便利) – LCD キャラクターディスプレイ – GPS センサー – モーター制御   etc...● ワイルドな使い方 – FM 送信機(個人的にこういうバカっぽいネタは大好き) 7
  8. 8. Arduino との違い● Arduino は入出力電圧が 5V 、 Raspberry Pi は 3.3V → 接続したいデバイスの動作電圧に注意しましょう● Arduino と異なり Raspberry Pi は A/D 変換機能がない → アナログデータはデジタルで入出力しなければいけない → 場合によっては Arduino の併用が楽かもしれません● ピンヘッダーが Arduino ではメス、 Raspberry Pi ではオス 8
  9. 9. 温度計を作ろう● なぜ温度計か? – 使用するデバイス( TMP102 )が比較的安価( 600 円ぐら い)で入手しやすい( SWITCHSCIENCEなど) – Raspberry Pi の GPIO ヘッダーに I2C (あとで触れます) の端子がある – I2C 接続なのでデジタル入力で、かつ結線数が少ない →お手軽にできる  →GPIO 入門にはいいかと – I2C 接続以外では DS18B20 の利用例もあります 9
  10. 10. I C ってなんだろう 2● I2C とは – もともとは 1980 年代初期に開発されたもの →その後改訂を経て今に至る – シリアルデータ (SDA) とシリアルクロック (SCL) の2 本の信号線のみで通信できる →実際にはこの他に電源ラインが必要 →それでも電源ラインを含めて4本の結線で使える – すでに特許が失効しているので自由に使える – 1つのマスターと1つ以上のスレーブから構成される – Raspbian のデフォルトのカーネルで I2C が使える 10
  11. 11. 実際に配線してみよう● Fritzing で大体の見た目と配線図確認 TMP102 回路図 11
  12. 12. 実際にはこんな感じ● ブレッドボードのほんの一部しか使いません 12
  13. 13. 配線時の注意点● Raspberry Pi の電源を外しておく● 念のため LAN ケーブル等も外しておく● GPIO のピンヘッダーを扱う際には静電気に 要注意(空気の乾燥、衣服の種類などに気を 使い、事前に家具などの金属部に触れるとい いでしょう) → GPIO ピンヘッダーは CPU 直結なので注 意しましょう 13
  14. 14. Raspbian の準備 -1-● Raspbian ではイメージを SD カードに書き込んだままの状態では I2C モジュールが有効になっていません $ sudo nano /etc/modprobe.d/raspi-blacklist.conf (nano でなくてもいいですが最初から nano が入っているため )● 右のスクリーンショットのように blacklist i2c-bcm2708 の一行を コメントアウト – 行頭に#をつける 14
  15. 15. Raspbian の準備 -2-● 次に I C デバイスを使えるようにカーネルモジュ 2 ールを起動時に読み込むように設定します $ sudo nano /etc/modules● 右のスクリーンショットの ように i2c-dev の一行を追加し $ sudo reboot で再起動します 15
  16. 16. Raspbian の準備 -3-● 一旦 Raspberry Pi を再起動したら、 $ dmesg | grep i2c   ( $ dmesg | more でも OK) で以下の 3 行が出力されていることを確認します。 [ 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 16
  17. 17. TMP102 の動作確認準備● I C デバイスを操作するのに必要なパッケージをイ 2 ンストールします $ sudo apt-get install i2c-tools python-smbus● 今回使用している温度センサー TMP102 は前記の ように配線すると、 I2C アドレスが 0x49 となり ます 17
  18. 18. TMP102 の動作確認● 実際に i2cdetect というコマンドで確認してみます● 上記のように 0x49 の箇所に 49 が表示されれば正常に 通信できています → I2C のチャンネルが Rev.1 では 0 ですが、現在の Rev.2 では 1 に変更されていますのでご注意下さい● 具体的には、 i2cdetect コマンドの引数が異なります 18
  19. 19. Python のスクリプト● 今回は先ほどインストールした Python の SMBus モジ ュールを使いました。 → 極端にドキュメントが少ないです → google 先生にいくら尋ねても本当にドキュメントが なくて泣けます (私は情弱なのかしら)● 本当はクラスとか使ってきちっと書くのですが、スラ イドなので簡略版 19
  20. 20. というわけでスクリプト#!/usr/bin/env pythonimport smbus# TMP102 の I2C アドレスは 0x49addr = 0x49# SMBus の引数は Rev.1 の場合 0 、 Rev.2 の場合 1# 何度もハードコーディングしてスイマセン、スイマセン、スイマセンi2c = smbus.SMBus(0)# TMP102 から2バイト読み込みますtemp = i2c.read_i2c_block_data( addr, 0 ,2)# 最後に、 TMP102 のデータシート通りに温度を計算して、画面表示しますprint temp[0] + (temp[1] >> 4) * 0.0625 20
  21. 21. スクリプト動作結果● I C デバイスを操作するには root 権限が必要 2 なので sudo コマンドを使って実行します 21
  22. 22. 温度計はほんの一例● 今回ご紹介した Raspberry Pi で温度計は、 あくまでほんの一例に過ぎません● GPIO のみではなく、有線 LAN 、無線 LAN 、 USB などとの組み合わせで応用範囲 は無限大です● ぜひ” Raspberry Pi で楽しみましょう” 22
  23. 23. ご清聴ありがとうございました● 展示ブースにて、同じ回路で、きちんとソー スコードを書いて、さらに Open JTalk を使 った ”しゃべる温度計” のほか、当 Users Group 有志の展示があり ますので、ぜひお越しください 23

×