Your SlideShare is downloading. ×
0
OSC 2013 Tokyo/Spring    超小型 & 超安価 ARM コンピュータ Raspberry Pi でできること ~応用編~    Raspberry Pi で温度計を作ってみる         ( GPIO の初歩として )...
自己紹介●   あおしま ひでき     –   某中小企業のシステムエンジニア        (と言う名の何でも屋)    –   Twitter: @azarashi55    –   こういうアイコンを見つけたら要注意    –   Ja...
今日の内容●   GPIO (汎用入出力)端子の初歩●   Arduino との違いについて●   今回使う I C プロトコルの簡単な説明          2●   今回作る温度計に使うデバイスと配線●   Raspbian の準備と実際の...
Raspberry Pi の魅力 -1-●   CPU が(そこそこ)速い    –   GPU 性能は抜群●   安い(上位モデルの Model B で 35 米ドル)●   美味しい  ・・・かどうかは知りません  (´ ・ ω ・ `) ...
Raspberry Pi の魅力 -2-●   GPIO (汎用入出力)ヘッダーがついている    –   普通の PC と異なり GPIO 端子がついていること        により、多種多様な外部デバイスを接続可能        ●   I...
GPIO ヘッダーを見てみよう●   GPIO ヘッダー    これです                 6
GPIO の応用例●   よくある使い方    –   USB- シリアル変換( Model A で便利)    –   LCD キャラクターディスプレイ    –   GPS センサー    –   モーター制御   etc...●   ワイ...
Arduino との違い●   Arduino は入出力電圧が 5V 、 Raspberry Pi は 3.3V    → 接続したいデバイスの動作電圧に注意しましょう●   Arduino と異なり Raspberry Pi は A/D 変換...
温度計を作ろう●   なぜ温度計か?    –   使用するデバイス( TMP102 )が比較的安価( 600 円ぐら        い)で入手しやすい( SWITCHSCIENCEなど)    –   Raspberry Pi の GPIO ...
I C ってなんだろう    2●   I2C とは        –   もともとは 1980 年代初期に開発されたもの            →その後改訂を経て今に至る        –   シリアルデータ (SDA) とシリアルクロック ...
実際に配線してみよう●   Fritzing で大体の見た目と配線図確認          TMP102                    回路図                             11
実際にはこんな感じ●   ブレッドボードのほんの一部しか使いません                           12
配線時の注意点●   Raspberry Pi の電源を外しておく●   念のため LAN ケーブル等も外しておく●   GPIO のピンヘッダーを扱う際には静電気に    要注意(空気の乾燥、衣服の種類などに気を    使い、事前に家具などの...
Raspbian の準備 -1-●   Raspbian ではイメージを SD カードに書き込んだままの状態では    I2C モジュールが有効になっていません    $ sudo nano /etc/modprobe.d/raspi-blac...
Raspbian の準備 -2-●   次に I C デバイスを使えるようにカーネルモジュ        2    ールを起動時に読み込むように設定します    $ sudo nano /etc/modules●   右のスクリーンショットの ...
Raspbian の準備 -3-●   一旦 Raspberry Pi を再起動したら、    $ dmesg | grep i2c   ( $ dmesg | more でも OK)    で以下の 3 行が出力されていることを確認します。 ...
TMP102 の動作確認準備●   I C デバイスを操作するのに必要なパッケージをイ    2    ンストールします    $ sudo apt-get install i2c-tools python-smbus●   今回使用している温...
TMP102 の動作確認●   実際に i2cdetect というコマンドで確認してみます●   上記のように 0x49 の箇所に 49 が表示されれば正常に    通信できています    → I2C のチャンネルが Rev.1 では 0 です...
Python のスクリプト●   今回は先ほどインストールした Python の SMBus モジ    ュールを使いました。    → 極端にドキュメントが少ないです    → google 先生にいくら尋ねても本当にドキュメントが    な...
というわけでスクリプト#!/usr/bin/env pythonimport smbus# TMP102 の I2C アドレスは 0x49addr = 0x49# SMBus の引数は Rev.1 の場合 0 、 Rev.2 の場合 1# 何度...
スクリプト動作結果●   I C デバイスを操作するには root 権限が必要    2    なので sudo コマンドを使って実行します                             21
温度計はほんの一例●   今回ご紹介した Raspberry Pi で温度計は、    あくまでほんの一例に過ぎません●   GPIO のみではなく、有線 LAN 、無線    LAN 、 USB などとの組み合わせで応用範囲    は無限大で...
ご清聴ありがとうございました●   展示ブースにて、同じ回路で、きちんとソー    スコードを書いて、さらに Open JTalk を使    った    ”しゃべる温度計”    のほか、当 Users Group 有志の展示があり    ま...
Upcoming SlideShare
Loading in...5
×

OSC Tokyo 2013 Spring JRPUG

2,016

Published on

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

Published in: Technology

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×