ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

26
Raspberry Piピンヘッダで遊ぼう 201377日ものアプリハッカソン 勝手に支援イベント() Yasuhiro ISHII 1377日日曜日

description

RaspberryPiのI/Fの活用方法について説明した資料です。

Transcript of ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

Page 1: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

Raspberry Piのピンヘッダで遊ぼう

2013年7月7日ものアプリハッカソン 勝手に支援イベント(仮)Yasuhiro ISHII

13年7月7日日曜日

Page 2: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

自己紹介•石井 康寛

•組み込み業界でソフト開発してます

•趣味 : 電子工作、などなど

• Twitter : yishii• Facebook : http://facebook.com/ishiiyasu

•ブログ : 日曜エレクトロニクス(日エレ)

• http://projectc3.seesaa.net/13年7月7日日曜日

Page 3: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

Raspberry PI(RPi)とは?

ARM11 700MHz(Max1GHz)

メモリ 512MバイトHDMI、オーディオ、ビデオ出力(コンポジット)、LAN、USB(2ports)、SDカードスロットを搭載したマイコンボードUS$35(日本橋では4~5000円?)と非常に安価

英国生まれの安価な組み込みLinuxマイコンボード

13年7月7日日曜日

Page 4: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

Raspberry PiのOS・OSが用意されています。主に、LinuxベースやBSD等。・Linuxは複数ディストリビューション用意されている。(Debianベース、ArchLinux、Fedoraベース、RISC OS等)

・オススメ(かつ一般的)は、Raspbian "wheezy"

http://www.raspberrypi.org/downloads13年7月7日日曜日

Page 5: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

Raspbian "wheezy"• 公式オススメ

• Debianのカスタマイズ版

• デスクトップ環境はLXDE(マイコンボードというより、殆どパソコン感覚)

• 開発ツールも搭載(クロス環境はもちろん、RPi自身でも ビルド可能(=セルフビルド))

• (当然)パッケージマネージャapt-get等入っているので、簡単にモジュール追加出来る。ex) $ sudo apt-get install ruby

• POSIX環境用のオープンソースのコードを利用したプロジェクトの作

13年7月7日日曜日

Page 6: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

RPi用ソフト開発環境の例

コード作成ビルド

ダウンロード

実行

HDMIでテレビと接続

USBでキーボードと接続

コード作成ビルド実行

クロス開発 セルフ開発

13年7月7日日曜日

Page 7: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

RPiと外部機器を繋ぐ

• USBポートがついていて、手軽に接続可能

•ピンヘッダに各種組み込み機器で使われる一般的なインターフェース搭載

一般的な方法は、以下の2つがある

13年7月7日日曜日

Page 8: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

USBでの機器接続・USB-WiFiアダプタでネット接続・USB-BTアダプタでBT機器接続・USB WebCamでライブ配信・USB 3Gドングルで3G通信・USB センサー機器でセンシング等、既製or自作USB機器との接続はサクッと出来ちゃいます。

13年7月7日日曜日

Page 9: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ピンヘッダでの接続ピンヘッダとは?

13年7月7日日曜日

Page 10: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

RPiのピンヘッダ

13年7月7日日曜日

Page 11: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ピンヘッダ詳細I2C-1

I2C-0SPI

UARTGPIO_GENxはGPIO。赤枠部もGPIOとして使用可。

PWM

I2S

13年7月7日日曜日

Page 12: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

GPIO• GPIO = General Purpose Input/Output(汎用入出力)

• LEDの点灯をしたり、スイッチの入力を読み取ったり出来る

13年7月7日日曜日

Page 13: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

UART• Universal Asynchronous Receiver Transmitter

• 通常1対1で使用

• RS-232C通信出来る。以下は使用例

• USBシリアル変換チップ経由でPCからコンソール操作

• Arduinoと接続して連携

• UART接続タイプのGPSモジュールを接続

• シリアルサーボを接続

13年7月7日日曜日

Page 14: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

SPI• Serial Peripheral Interface

• MISO、MOSI、SCLK、SS(その他の名称の場合もあり)の4本で接続

• 1対多で通信可能(通信相手数分、SS信号が必要)

RPi

有機EL

EEPROM

NFCデバイス

接続例

13年7月7日日曜日

Page 15: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

I2C• Inter-Integrated Circuit

• 2本の信号線で複数の機器と接続可能

• 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(スレーブアドレス)を持つ。

RPiモータードライバモジュール電流・電圧測定

モジュール

LCD

RTC EEPROM

13年7月7日日曜日

Page 16: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

製作例1モーター2個を搭載した遠隔制御車

USB3Gドングル

I2Cモータードライバ×2

ネット経由での制御指令

13年7月7日日曜日

Page 17: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

製作例2太陽電池の充電状態をネットにアップする装置

I2C

USB3Gドングル

13年7月7日日曜日

Page 18: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

製作例3現在地のGoogleMapsやStreetViewを表示する装置

UART

地図データ

13年7月7日日曜日

Page 19: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ソフトウェアの作成1• SPI、UART、I2C、GPIO等はRaspbian "wheezy"にデバイスドライバが搭載されているので叩けば制御できる。

  fd = open("/dev/i2c-1",O_RDWR);  ioctl(fd,I2C_SLAVE,0x60);

  buff[0] = 0x00;  buff[1] = data;  result = write(fd,buff,2);

I2CでSlaveアドレス0x60のデバイスのアドレス0に変数dataの値を書き込む(C言語)

13年7月7日日曜日

Page 20: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ソフトウェアの作成2

• bcm2835ライブラリを使用する

• http://www.airspayce.com/mikem/bcm2835/

• Cや各種スクリプト言語(Ruby等)から呼び出しが容易

13年7月7日日曜日

Page 21: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ソフトウェアの作成3• Arduino APIスタイルで制御する場合、WiringPiを使用する• https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

pinMode (0, OUTPUT) ; // aka BCM_GPIO pin 17

for (;;) { digitalWrite (0, 1) ; // On delay (500) ; // mS digitalWrite (0, 0) ; // Off delay (500) ; }

13年7月7日日曜日

Page 22: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ソフトウェアの作成4•その他、詳細は以下のページに説明あります。

• http://elinux.org/RPi_Low-level_peripherals

13年7月7日日曜日

Page 23: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

さらにI/Oを使いたいRPiのI/O数・種類は多いとは言えません。足りない場合、ポートエキスパンダを使う方法があります。ADしたければI2CのADCなど。

お手軽にやるなら、RPiにArdiunoを繋いで外部機器接続はArduino側にやらせる手が簡単です。

13年7月7日日曜日

Page 24: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

I/OにArduinoを使うFirmataはArduino IDEに標準で組み込まれているプログラム。Arduinoに書き込み、RPiとUSBやシリアル接続するだけで、Arduinoの端子がRPiの言いなりに動いてくれる。

C/C++での操作https://github.com/anthonygclark/libarduino/

Ruby(日曜エレクトロニクス(日エレ))http://projectc3.seesaa.net/article/357559302.htmlhttp://www.youtube.com/watch?feature=player_embedded&v=kCBxGZ9DPo4

Firmataを書き込んでおく

Arduinoシールド

13年7月7日日曜日

Page 25: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

デモ

インターネット接続(WiFiドングル

or 3Gドングル経由) インターネット接続(WiFiドングル

or 3Gドングル経由)ラジコンコントローラー ラジコンカー

クラウドサーバー

13年7月7日日曜日

Page 26: ものアプリハッカソン勝手に支援イベント Raspberry Piのピンヘッダで遊ぼう

ありがとうございました

13年7月7日日曜日