Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Raspberry Piに
何かつないで遊ぼう
オープンソースカンファレンス関西@京都 2013
Yasuhiro ISHII
自己紹介
•石井 康寛(Yasuhiro ISHII)
•組み込み業界でソフト開発してます
•出身 : 三重県度会郡度会町
•趣味 : 電子工作、ソフト開発、海外旅
行、などなど
•Twitter : yishii
•Facebook :
•h...
RPiと外部機器を繋ぐ
•USBポートに接続する
•ピンヘッダに接続する
RPiと外部機器とを接続方法の内、お手軽
なものとして、以下の2つが考えられます。
USBでの接続
・USB-WiFi/3Gでネット接続
・USB-BTアダプタでBT機器接続
・USB WebCamでライブ配信
・USB センサー機器でセンシング
等
既製or自作USB機器(Arduinoや
PICマイコン等で作成出来る)との...
ピンヘッダでの接続
ピンヘッダとは?
RPiのピンヘッダ
R2.0のみ
ピンヘッダのピン機能アサイン
I2C-1
I2C-0
SPI
UART
GPIO_GENxはGPIO。
赤枠ピンもGPIOとして
使用可。
PWM
I2S
電源専用ピン
(制御に使用できない)
GPIO
•GPIO = General Purpose Input/
Output(汎用入出力)
•LEDの点灯をしたり、スイッチの入力
を読み取ったり出来る
UART
• Universal Asynchronous Receiver Transmitter
• 通常1対1の機器間通信に使用
• いわゆるRS-232C。
• USBシリアル変換チップ経由でPCからコンソール操作
• Arduinoと...
SPI
• Serial Peripheral Interface
• MISO、MOSI、SCLKに加え、接続対象デバイス数分のSSで接続
• 1対多で通信可能(通信相手数分、SS信号が必要)
RPi
有機EL
EEPROM
NFCデバイス
...
I2C
• Inter-Integrated Circuit
• 2本の信号線(SCL、SDA)で複数の機器と接続可能
• 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(ス
レーブアドレス)を持つ。
モータードライバ
モジュ...
実際にRPiを使用して
何か機器を作ってみよう!
▶ Raspberry Piでラジコンを作ってあそぼう
ラジコンの構成
I2Cモータードライバ 2
I2Cバス
USB
無線
ワイヤレスキーボード
モーター 2
準備物
タミヤ 楽しい工作シリーズ No.168
ダブルギヤボックス (左右独立4速タイプ)
882円 @Amazon
ストロベリー・リナックス
I2Cモータードライバ・モジュール DRV8830
@567円 2個
http://strawbe...
準備物
タミヤ 楽しい工作シリーズ No.101
トラックタイヤセット(36㎜径)
TRUCK TIRE SET (36mm DIA.)
Item No:70101 組立キット
378円(本体価格360円)
タミヤ 楽しい工作シリーズ No.9...
準備物
線材少し
USBモバイル
バッテリー
タミヤ 楽しい工作シリーズ No.144
ボールキャスター(2セット入)
BALL CASTER (2pcs.)
Item No:70144 組立キット
378円(本体価格360円)
モータードライバ
DRV8830(TI)
I2C制御 電源 2.75∼6.8V 連続1A出力
秋月電子通商
170円
ストロベリーリナックス
567円
→今回はストロベリーリナックスのものを使用します
接続概略図
RPi
モータ
ドライバ
モータ
ドライバ
I2C1-SCL
I2C1-SDA
・
・
USBコネクタ
経由でバッテリーへ
USBケーブル
経由でバッテリーへ
接続 実体配線図
VCC
SCL
SDA
GND
VCC
SCL
SDA
GND
車体の作成
ハードは完成です
ソフトの構成
Linux input
subsystem
(/dev/input/event0等)
ラジコン
メインプログラム
キーイベント
I2Cデバドラ
(/dev/i2c-1等)
モータードライバ
制御コマンド
I2Cを使用する準備
•/etc/modules
•i2c-dev を記載
•/etc/modprobe.d/raspi-blacklist.conf
•blacklist i2c-bcm2708 をコメントアウ
ト
I2Cデバイスドライバのオープン
	
  	
  int	
  fd;
	
  	
  //	
  RPi	
  Rev1.0使用時は	
  /dev/i2c-­‐0
	
  	
  fd	
  =	
  open("/dev/i2c-­‐1"...
メイン処理
(キーイベント取得+モーターへの指令)
while(1){
	
  	
  	
  	
  //	
  標準入力からイベント取り込み
	
  	
  	
  	
  read(0,&event,sizeof(event));
	
 ...
モータードライバ制御処理
int	
  DRV8830::control(int	
  power,int	
  type)
{
	
  	
  unsigned	
  char	
  buff[2];
	
  	
  //	
  制御対象デバ...
https://github.com/yishii/RaspberryPi_Radicon/
ソースコード(github)
RPiでのビルド方法
$ g++ drv8840.cpp radicon.cpp -o radicon
実行方法
$ s...
太陽電池の充電状態をネットにアップする装置
I2C
USB3Gドングル
その他製作例1
その他製作例2
現在地の
GoogleMapsや
StreetViewを表示す
る装置
UART
地
図
デ
ー
タ
ハードウェア制御用の
ライブラリの使用 1
•bcm2835ライブラリを使用する
•http://www.airspayce.com/mikem/
bcm2835/
•Cや各種スクリプト言語(Ruby等)から
呼び出し、容易に制御構築可能。
•Arduino APIスタイルに慣れている方
には、WiringPiもオススメ
• https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/
pinMode...
ありがとうございました
ブログ : 日曜エレクトロニクス(日エレ)
http://projectc3.seesaa.net/
Upcoming SlideShare
Loading in …5
×

20130804 OSC京都 Raspberry Piに何かつないで遊ぼう

9,938 views

Published on

Published in: Technology

20130804 OSC京都 Raspberry Piに何かつないで遊ぼう

  1. 1. Raspberry Piに 何かつないで遊ぼう オープンソースカンファレンス関西@京都 2013 Yasuhiro ISHII
  2. 2. 自己紹介 •石井 康寛(Yasuhiro ISHII) •組み込み業界でソフト開発してます •出身 : 三重県度会郡度会町 •趣味 : 電子工作、ソフト開発、海外旅 行、などなど •Twitter : yishii •Facebook : •http://facebook.com/ishiiyasu •ブログ : 日曜エレクトロニクス(日エレ) •http://projectc3.seesaa.net/
  3. 3. RPiと外部機器を繋ぐ •USBポートに接続する •ピンヘッダに接続する RPiと外部機器とを接続方法の内、お手軽 なものとして、以下の2つが考えられます。
  4. 4. USBでの接続 ・USB-WiFi/3Gでネット接続 ・USB-BTアダプタでBT機器接続 ・USB WebCamでライブ配信 ・USB センサー機器でセンシング 等 既製or自作USB機器(Arduinoや PICマイコン等で作成出来る)との 接続は簡単です。
  5. 5. ピンヘッダでの接続 ピンヘッダとは?
  6. 6. RPiのピンヘッダ R2.0のみ
  7. 7. ピンヘッダのピン機能アサイン I2C-1 I2C-0 SPI UART GPIO_GENxはGPIO。 赤枠ピンもGPIOとして 使用可。 PWM I2S 電源専用ピン (制御に使用できない)
  8. 8. GPIO •GPIO = General Purpose Input/ Output(汎用入出力) •LEDの点灯をしたり、スイッチの入力 を読み取ったり出来る
  9. 9. UART • Universal Asynchronous Receiver Transmitter • 通常1対1の機器間通信に使用 • いわゆるRS-232C。 • USBシリアル変換チップ経由でPCからコンソール操作 • Arduinoと接続して連携 • UART接続タイプのGPSモジュールを接続 • シリアルサーボを接続
  10. 10. SPI • Serial Peripheral Interface • MISO、MOSI、SCLKに加え、接続対象デバイス数分のSSで接続 • 1対多で通信可能(通信相手数分、SS信号が必要) RPi 有機EL EEPROM NFCデバイス 接続例
  11. 11. I2C • Inter-Integrated Circuit • 2本の信号線(SCL、SDA)で複数の機器と接続可能 • 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(ス レーブアドレス)を持つ。 モータードライバ モジュール 電流・電圧測定 モジュール LCD RTC EEPROM RPi LCD モーター ドライバ RTC スレーブ アドレス 0x10 スレーブ アドレス 0x11 スレーブ アドレス 0x12 I2C マスターI2C対応デバイスの例
  12. 12. 実際にRPiを使用して 何か機器を作ってみよう! ▶ Raspberry Piでラジコンを作ってあそぼう
  13. 13. ラジコンの構成 I2Cモータードライバ 2 I2Cバス USB 無線 ワイヤレスキーボード モーター 2
  14. 14. 準備物 タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス (左右独立4速タイプ) 882円 @Amazon ストロベリー・リナックス I2Cモータードライバ・モジュール DRV8830 @567円 2個 http://strawberry-linux.com/catalog/items? code=12030
  15. 15. 準備物 タミヤ 楽しい工作シリーズ No.101 トラックタイヤセット(36㎜径) TRUCK TIRE SET (36mm DIA.) Item No:70101 組立キット 378円(本体価格360円) タミヤ 楽しい工作シリーズ No.98 ユニバーサルプレートセット UNIVERSAL PLATE SET Item No:70098 組立キット 378円(本体価格360円)
  16. 16. 準備物 線材少し USBモバイル バッテリー タミヤ 楽しい工作シリーズ No.144 ボールキャスター(2セット入) BALL CASTER (2pcs.) Item No:70144 組立キット 378円(本体価格360円)
  17. 17. モータードライバ DRV8830(TI) I2C制御 電源 2.75∼6.8V 連続1A出力 秋月電子通商 170円 ストロベリーリナックス 567円 →今回はストロベリーリナックスのものを使用します
  18. 18. 接続概略図 RPi モータ ドライバ モータ ドライバ I2C1-SCL I2C1-SDA
  19. 19. ・ ・ USBコネクタ 経由でバッテリーへ USBケーブル 経由でバッテリーへ 接続 実体配線図 VCC SCL SDA GND VCC SCL SDA GND
  20. 20. 車体の作成 ハードは完成です
  21. 21. ソフトの構成 Linux input subsystem (/dev/input/event0等) ラジコン メインプログラム キーイベント I2Cデバドラ (/dev/i2c-1等) モータードライバ 制御コマンド
  22. 22. I2Cを使用する準備 •/etc/modules •i2c-dev を記載 •/etc/modprobe.d/raspi-blacklist.conf •blacklist i2c-bcm2708 をコメントアウ ト
  23. 23. I2Cデバイスドライバのオープン    int  fd;    //  RPi  Rev1.0使用時は  /dev/i2c-­‐0    fd  =  open("/dev/i2c-­‐1",O_RDWR);    if(fd  <  0){        printf("i2c  open  errorn");        return(-­‐1);    }
  24. 24. メイン処理 (キーイベント取得+モーターへの指令) while(1){        //  標準入力からイベント取り込み        read(0,&event,sizeof(event));        if(event.type  ==  EV_KEY  &&  event.value  !=  0){            switch(event.code){            case  KEY_UP:              //  左右モーターの前転              motor_l.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);              motor_r.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);                break;            case  KEY_DOWN:              //  左右モーターの後転                  motor_l.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);                  motor_r.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);                  break;      《中略》          } }
  25. 25. モータードライバ制御処理 int  DRV8830::control(int  power,int  type) {    unsigned  char  buff[2];    //  制御対象デバイスのスレーブアドレスをセット    ioctl(i2c_fd,I2C_SLAVE,i2c_slaveaddr);    //  コマンドを組み立ててデータ送出    buff[0]  =  0x00;    buff[1]  =  (unsigned  char)(power  <<  2)  |                        (unsigned  char)(type  &  0x03);        write(i2c_fd,buff,2);
  26. 26. https://github.com/yishii/RaspberryPi_Radicon/ ソースコード(github) RPiでのビルド方法 $ g++ drv8840.cpp radicon.cpp -o radicon 実行方法 $ sudo ./radicon < /dev/input/event0 (event0がキーボードの場合) 実演
  27. 27. 太陽電池の充電状態をネットにアップする装置 I2C USB3Gドングル その他製作例1
  28. 28. その他製作例2 現在地の GoogleMapsや StreetViewを表示す る装置 UART 地 図 デ ー タ
  29. 29. ハードウェア制御用の ライブラリの使用 1 •bcm2835ライブラリを使用する •http://www.airspayce.com/mikem/ bcm2835/ •Cや各種スクリプト言語(Ruby等)から 呼び出し、容易に制御構築可能。
  30. 30. •Arduino APIスタイルに慣れている方 には、WiringPiもオススメ • https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ pinMode (0, OUTPUT); for (;;) { digitalWrite (0, 1); delay (500); digitalWrite (0, 0); delay (500); } ハードウェア制御用の ライブラリの使用 2
  31. 31. ありがとうございました ブログ : 日曜エレクトロニクス(日エレ) http://projectc3.seesaa.net/

×