Raspberry Piに
何かつないで遊ぼう
2013年7月13日オープンハードセミナー(仮称)2013 3Q
Yasuhiro ISHII
イチから始めるRaspberry Pi
13年7月13日土曜日
自己紹介
•石井 康寛
•組み込み業界でソフト開発してます
•出身 : 三重県度会郡度会町
•趣味 : 電子工作、旅行、などなど
•Twitter : yishii
•Facebook :
•http://facebook.com/ishiiy...
Raspberry Pi(RPi)とは?
ARM11 700MHz(Max1GHz)
メモリ 512Mバイト
HDMI、オーディオ、
ビデオ出力(コンポジット)、
LAN、USB(2ports)、
SDカードスロットを搭載したマイコンボード
2...
Raspberry PiのOS
・OSが用意されています。主に、Linuxベースや
BSD等。
・Linuxは複数ディストリビューション用意されてい
る。(Debianベース、ArchLinux、Fedoraベース等)
・オススメ(かつ一般的)...
Raspbian "wheezy"
• 公式オススメ
• Debianのカスタマイズ版
• デスクトップ環境はLXDE(マイコンボードというより、殆どパソコン
感覚)
• 開発ツールも搭載(クロス環境はもちろん、RPi自身でも
ビルド可能(=セ...
RPi用ソフト開発環境の例
コード作成
ビルド
ダウンロード
実行
HDMIでテレビと接続
USBでキーボードと接続
コード作成
ビルド
実行
クロス開発 セルフ開発
13年7月13日土曜日
RPiことはじめ
13年7月13日土曜日
準備
•テレビやPCモニター
•コンポジットビデオ入力または
HDMI、DVI-D(I)を搭載したもの
•USBキーボード・マウス
•2GB以上のSDカード
•USB電源
13年7月13日土曜日
起動用SDカードの作成
Raspbian "wheezy"を使って起動する
1. 公式サイトよりイメージファイルをダウンロード
http://www.raspberrypi.org/downloads
zipを展開すると、イメージファイルが出て...
2. イメージファイルをSDカード(>2GB)に書き込む
Linux・MacOSX
Windows
$ sudo dd if=XXXX.img of=デバイス名 bs=1m
起動用SDカードの作成
Win32 Disk Imagerを使う
13...
簡単な方法-NOOBS
1.SDカードをFATでフォーマット
2.NOOBSのzipファイルを展開して4GB以上の
SDカードにコピー
3.RPiに挿入し電源ON
13年7月13日土曜日
簡単な方法-NOOBS
使いたいOSをクリック
13年7月13日土曜日
簡単な方法-NOOBS
13年7月13日土曜日
簡単な方法-NOOBS
13年7月13日土曜日
ボードの立ち上げ方
2. 起動後、初期設定する
HDMIまたはCVBSで
テレビと接続
Raspberry Piの電源が入っていないことを
確認し、SDカードを挿入する。
次にMicroUSB端子(電源給電用端子)
に電源を接続する
13年7月...
ログイン
Debian GNU/Linux 7.0 raspberrypi tty1
raspberrypi login :
と出たら、
ユーザー名 : pi
パスワード : raspberry
でログイン出来ます
13年7月13日土曜日
RPiと外部機器を繋ぐ
•USBポートがついていて、手軽に接続
可能
•ピンヘッダに各種組み込み機器で使わ
れる一般的なインターフェース搭載
お手軽な方法は、以下の2つがあります
13年7月13日土曜日
USBでの機器接続
・USB-WiFiアダプタでネット接続
・USB-BTアダプタでBT機器接続
・USB WebCamでライブ配信
・USB 3Gドングルで3G通信
・USB センサー機器でセンシング
等、既製or自作USB機器との接続
はサ...
ピンヘッダでの接続
ピンヘッダとは?
13年7月13日土曜日
RPiのピンヘッダ
R2.0のみ
13年7月13日土曜日
ピンヘッダ詳細(R2.0)
I2C-1
I2C-0
SPI
UART
GPIO_GENxはGPIO。
赤枠部もGPIOとして使
用可。
PWM
I2S
13年7月13日土曜日
GPIO
•GPIO = General Purpose Input/
Output(汎用入出力)
•LEDの点灯をしたり、スイッチの入力
を読み取ったり出来る
13年7月13日土曜日
UART• Universal Asynchronous Receiver Transmitter
• 通常1対1で使用
• RS-232C通信出来る。以下は使用例
• USBシリアル変換チップ経由でPCからコンソール操作
• Arduinoと...
SPI
• Serial Peripheral Interface
• MISO、MOSI、SCLK、SS(その他の名称の場合もあり)の4本で接続
• 1対多で通信可能(通信相手数分、SS信号が必要)
RPi
有機EL
EEPROM
NFCデバ...
I2C
• Inter-Integrated Circuit
• 2本の信号線で複数の機器と接続可能
• 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(ス
レーブアドレス)を持つ。
RPiモータードライバ
モジュール
電流・...
RPiでラジコンを作ってみる
I2Cモータードライバ 2
13年7月13日土曜日
モータードライバ
DRV8830(TI)
I2C制御
電源 2.75∼6.8V
連続1A出力
秋月 170円ストロベリーリナックス
567円
13年7月13日土曜日
接続する
RPi
モータ
ドライバ
モータ
ドライバ
I2C1-SCL
I2C1-SDA
13年7月13日土曜日
ソフト
Linux input
subsystem
(/dev/input/event0等)
ラジコン
メインプログラム
キーイベント
I2Cデバドラ
(/dev/i2c-1等)
モータードライバ
制御コマンド
13年7月13日土曜日
I2Cデバドラオープン
	
  	
  int	
  fd;
	
  	
  printf("radicon	
  startn");
	
  	
  fd	
  =	
  open("/dev/i2c-­‐1",O_RDWR);	
  //	...
キーイベント取得
#include	
  <linux/input.h>
while(1){
	
  	
  	
  	
  read(0,&event,sizeof(event));
	
  	
  	
  	
  if(event.type...
モータードライバ制御
int	
  DRV8830::control(int	
  power,int	
  type)
{
	
  	
  unsigned	
  char	
  buff[2];
	
  	
  int	
  result;...
実演
https://github.com/yishii/RaspberryPi_Radicon/
ソースコード(github)
RPiでのビルド方法
$ g++ drv8840.cpp radicon.cpp -o radicon
13年7月...
太陽電池の充電状態をネットにアップする装置
I2C
USB3Gドングル
その他製作例1
13年7月13日土曜日
その他製作例2
現在地の
GoogleMapsや
StreetViewを表示す
る装置
UART
地
図
デ
ー
タ
13年7月13日土曜日
ソフトウェア作成
便利なライブラリの使用
•bcm2835ライブラリを使用する
•http://www.airspayce.com/mikem/
bcm2835/
•Cや各種スクリプト言語(Ruby等)から
呼び出しが容易
13年7月13日土曜日
•Arduino APIスタイルで制御する場
合、WiringPiを使用する
• https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/
pinMode (...
•詳細は以下のページに説明あります。
• http://elinux.org/RPi_Low-level_peripherals
ソフトウェア作成
便利なライブラリの使用
13年7月13日土曜日
さらにI/Oを使いたい
RPiのI/O数・種類は多いとは言えません。
足りない場合、ポートエキスパンダを使う方法が
あります。ADしたければI2CのADCなど。
お手軽にやるなら、RPiにArdiunoを繋いで
外部機器接続はArduino側に...
I/OにArduinoを使うFirmataはArduino IDEに標準で組み込まれているプログラム。
Arduinoに書き込み、RPiとUSBやシリアル接続するだけで、
Arduinoの端子がRPiの言いなりなって動いてくれる。
C/C++で...
ありがとうございました
13年7月13日土曜日
Upcoming SlideShare
Loading in...5
×

20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう

1,551

Published on

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,551
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう

  1. 1. Raspberry Piに 何かつないで遊ぼう 2013年7月13日オープンハードセミナー(仮称)2013 3Q Yasuhiro ISHII イチから始めるRaspberry Pi 13年7月13日土曜日
  2. 2. 自己紹介 •石井 康寛 •組み込み業界でソフト開発してます •出身 : 三重県度会郡度会町 •趣味 : 電子工作、旅行、などなど •Twitter : yishii •Facebook : •http://facebook.com/ishiiyasu •ブログ : 日曜エレクトロニクス(日エレ) •http://projectc3.seesaa.net/ 13年7月13日土曜日
  3. 3. Raspberry Pi(RPi)とは? ARM11 700MHz(Max1GHz) メモリ 512Mバイト HDMI、オーディオ、 ビデオ出力(コンポジット)、 LAN、USB(2ports)、 SDカードスロットを搭載したマイコンボード 2012年2月29日発売 US$35(日本のショップで4∼5000円?)と安価 英国生まれの安価な組み込みLinuxマイコンボード 13年7月13日土曜日
  4. 4. Raspberry PiのOS ・OSが用意されています。主に、Linuxベースや BSD等。 ・Linuxは複数ディストリビューション用意されてい る。(Debianベース、ArchLinux、Fedoraベース等) ・オススメ(かつ一般的)は、Raspbian "wheezy" http://www.raspberrypi.org/downloads 13年7月13日土曜日
  5. 5. Raspbian "wheezy" • 公式オススメ • Debianのカスタマイズ版 • デスクトップ環境はLXDE(マイコンボードというより、殆どパソコン 感覚) • 開発ツールも搭載(クロス環境はもちろん、RPi自身でも ビルド可能(=セルフビルド)) • (当然)パッケージマネージャapt-get等入っているので、簡単にモジ ュール追加出来る。ex) $ sudo apt-get install ruby • POSIX環境用のオープンソースのコードを利用したプロジェクトの作 13年7月13日土曜日
  6. 6. RPi用ソフト開発環境の例 コード作成 ビルド ダウンロード 実行 HDMIでテレビと接続 USBでキーボードと接続 コード作成 ビルド 実行 クロス開発 セルフ開発 13年7月13日土曜日
  7. 7. RPiことはじめ 13年7月13日土曜日
  8. 8. 準備 •テレビやPCモニター •コンポジットビデオ入力または HDMI、DVI-D(I)を搭載したもの •USBキーボード・マウス •2GB以上のSDカード •USB電源 13年7月13日土曜日
  9. 9. 起動用SDカードの作成 Raspbian "wheezy"を使って起動する 1. 公式サイトよりイメージファイルをダウンロード http://www.raspberrypi.org/downloads zipを展開すると、イメージファイルが出てくる 13年7月13日土曜日
  10. 10. 2. イメージファイルをSDカード(>2GB)に書き込む Linux・MacOSX Windows $ sudo dd if=XXXX.img of=デバイス名 bs=1m 起動用SDカードの作成 Win32 Disk Imagerを使う 13年7月13日土曜日
  11. 11. 簡単な方法-NOOBS 1.SDカードをFATでフォーマット 2.NOOBSのzipファイルを展開して4GB以上の SDカードにコピー 3.RPiに挿入し電源ON 13年7月13日土曜日
  12. 12. 簡単な方法-NOOBS 使いたいOSをクリック 13年7月13日土曜日
  13. 13. 簡単な方法-NOOBS 13年7月13日土曜日
  14. 14. 簡単な方法-NOOBS 13年7月13日土曜日
  15. 15. ボードの立ち上げ方 2. 起動後、初期設定する HDMIまたはCVBSで テレビと接続 Raspberry Piの電源が入っていないことを 確認し、SDカードを挿入する。 次にMicroUSB端子(電源給電用端子) に電源を接続する 13年7月13日土曜日
  16. 16. ログイン Debian GNU/Linux 7.0 raspberrypi tty1 raspberrypi login : と出たら、 ユーザー名 : pi パスワード : raspberry でログイン出来ます 13年7月13日土曜日
  17. 17. RPiと外部機器を繋ぐ •USBポートがついていて、手軽に接続 可能 •ピンヘッダに各種組み込み機器で使わ れる一般的なインターフェース搭載 お手軽な方法は、以下の2つがあります 13年7月13日土曜日
  18. 18. USBでの機器接続 ・USB-WiFiアダプタでネット接続 ・USB-BTアダプタでBT機器接続 ・USB WebCamでライブ配信 ・USB 3Gドングルで3G通信 ・USB センサー機器でセンシング 等、既製or自作USB機器との接続 はサクッと出来ちゃいます。 13年7月13日土曜日
  19. 19. ピンヘッダでの接続 ピンヘッダとは? 13年7月13日土曜日
  20. 20. RPiのピンヘッダ R2.0のみ 13年7月13日土曜日
  21. 21. ピンヘッダ詳細(R2.0) I2C-1 I2C-0 SPI UART GPIO_GENxはGPIO。 赤枠部もGPIOとして使 用可。 PWM I2S 13年7月13日土曜日
  22. 22. GPIO •GPIO = General Purpose Input/ Output(汎用入出力) •LEDの点灯をしたり、スイッチの入力 を読み取ったり出来る 13年7月13日土曜日
  23. 23. UART• Universal Asynchronous Receiver Transmitter • 通常1対1で使用 • RS-232C通信出来る。以下は使用例 • USBシリアル変換チップ経由でPCからコンソール操作 • Arduinoと接続して連携 • UART接続タイプのGPSモジュールを接続 • シリアルサーボを接続 13年7月13日土曜日
  24. 24. SPI • Serial Peripheral Interface • MISO、MOSI、SCLK、SS(その他の名称の場合もあり)の4本で接続 • 1対多で通信可能(通信相手数分、SS信号が必要) RPi 有機EL EEPROM NFCデバイス 接続例 13年7月13日土曜日
  25. 25. I2C • Inter-Integrated Circuit • 2本の信号線で複数の機器と接続可能 • 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(ス レーブアドレス)を持つ。 RPiモータードライバ モジュール 電流・電圧測定 モジュール LCD RTC EEPROM 13年7月13日土曜日
  26. 26. RPiでラジコンを作ってみる I2Cモータードライバ 2 13年7月13日土曜日
  27. 27. モータードライバ DRV8830(TI) I2C制御 電源 2.75∼6.8V 連続1A出力 秋月 170円ストロベリーリナックス 567円 13年7月13日土曜日
  28. 28. 接続する RPi モータ ドライバ モータ ドライバ I2C1-SCL I2C1-SDA 13年7月13日土曜日
  29. 29. ソフト Linux input subsystem (/dev/input/event0等) ラジコン メインプログラム キーイベント I2Cデバドラ (/dev/i2c-1等) モータードライバ 制御コマンド 13年7月13日土曜日
  30. 30. I2Cデバドラオープン    int  fd;    printf("radicon  startn");    fd  =  open("/dev/i2c-­‐1",O_RDWR);  //  RPi  rev1.0は/dev/i2c-­‐0    if(fd  <  0){        printf("i2c  open  errorn");        return(-­‐1);    } 13年7月13日土曜日
  31. 31. キーイベント取得 #include  <linux/input.h> while(1){        read(0,&event,sizeof(event));        if(event.type  ==  EV_KEY  &&  event.value  !=  0){            switch(event.code){            case  KEY_UP:              printf("UP  is  pressedn");              motor_l.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);              motor_r.control(MOTOR_POWER,DRV8830::MOTOR_FORWARD);                break;            case  KEY_DOWN:                  printf("DOWN  is  pressedn");                  motor_l.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);                  motor_r.control(MOTOR_POWER,DRV8830::MOTOR_REVERSE);                  break; 13年7月13日土曜日
  32. 32. モータードライバ制御 int  DRV8830::control(int  power,int  type) {    unsigned  char  buff[2];    int  result;    if(type  !=  MOTOR_STANDBY  &&          type  !=  MOTOR_REVERSE  &&          type  !=  MOTOR_FORWARD  &&          type  !=  MOTOR_BRAKE)  {        printf("Errn");        return  0;    }    //  set  slave  address  to  i2c  driver    ioctl(i2c_fd,I2C_SLAVE,i2c_slaveaddr);    //  create  data  to  send  to  DRV8830    buff[0]  =  0x00;    buff[1]  =  (unsigned  char)(power  <<  2)  |                        (unsigned  char)(type  &  0x03); 13年7月13日土曜日
  33. 33. 実演 https://github.com/yishii/RaspberryPi_Radicon/ ソースコード(github) RPiでのビルド方法 $ g++ drv8840.cpp radicon.cpp -o radicon 13年7月13日土曜日
  34. 34. 太陽電池の充電状態をネットにアップする装置 I2C USB3Gドングル その他製作例1 13年7月13日土曜日
  35. 35. その他製作例2 現在地の GoogleMapsや StreetViewを表示す る装置 UART 地 図 デ ー タ 13年7月13日土曜日
  36. 36. ソフトウェア作成 便利なライブラリの使用 •bcm2835ライブラリを使用する •http://www.airspayce.com/mikem/ bcm2835/ •Cや各種スクリプト言語(Ruby等)から 呼び出しが容易 13年7月13日土曜日
  37. 37. •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月13日土曜日
  38. 38. •詳細は以下のページに説明あります。 • http://elinux.org/RPi_Low-level_peripherals ソフトウェア作成 便利なライブラリの使用 13年7月13日土曜日
  39. 39. さらにI/Oを使いたい RPiのI/O数・種類は多いとは言えません。 足りない場合、ポートエキスパンダを使う方法が あります。ADしたければI2CのADCなど。 お手軽にやるなら、RPiにArdiunoを繋いで 外部機器接続はArduino側にやらせる手が 簡単です。 13年7月13日土曜日
  40. 40. 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.html http://www.youtube.com/watch? feature=player_embedded&v=kCBxGZ9DPo4 Firmataを 書き込んでおく Arduino シールド 13年7月13日土曜日
  41. 41. ありがとうございました 13年7月13日土曜日
  1. A particular slide catching your eye?

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

×