Raspberry Piの ピンヘッダで遊ぼう 2013年7月7日ものアプリハッカソン 勝手に支援イベント(仮) Yasuhiro ISHII 13年7月7日日曜日
Jun 11, 2015
Raspberry Piのピンヘッダで遊ぼう
2013年7月7日ものアプリハッカソン 勝手に支援イベント(仮)Yasuhiro ISHII
13年7月7日日曜日
自己紹介•石井 康寛
•組み込み業界でソフト開発してます
•趣味 : 電子工作、などなど
• Twitter : yishii• Facebook : http://facebook.com/ishiiyasu
•ブログ : 日曜エレクトロニクス(日エレ)
• http://projectc3.seesaa.net/13年7月7日日曜日
Raspberry PI(RPi)とは?
ARM11 700MHz(Max1GHz)
メモリ 512MバイトHDMI、オーディオ、ビデオ出力(コンポジット)、LAN、USB(2ports)、SDカードスロットを搭載したマイコンボードUS$35(日本橋では4~5000円?)と非常に安価
英国生まれの安価な組み込みLinuxマイコンボード
13年7月7日日曜日
Raspberry PiのOS・OSが用意されています。主に、LinuxベースやBSD等。・Linuxは複数ディストリビューション用意されている。(Debianベース、ArchLinux、Fedoraベース、RISC OS等)
・オススメ(かつ一般的)は、Raspbian "wheezy"
http://www.raspberrypi.org/downloads13年7月7日日曜日
Raspbian "wheezy"• 公式オススメ
• Debianのカスタマイズ版
• デスクトップ環境はLXDE(マイコンボードというより、殆どパソコン感覚)
• 開発ツールも搭載(クロス環境はもちろん、RPi自身でも ビルド可能(=セルフビルド))
• (当然)パッケージマネージャapt-get等入っているので、簡単にモジュール追加出来る。ex) $ sudo apt-get install ruby
• POSIX環境用のオープンソースのコードを利用したプロジェクトの作
13年7月7日日曜日
RPi用ソフト開発環境の例
コード作成ビルド
ダウンロード
実行
HDMIでテレビと接続
USBでキーボードと接続
コード作成ビルド実行
クロス開発 セルフ開発
13年7月7日日曜日
RPiと外部機器を繋ぐ
• USBポートがついていて、手軽に接続可能
•ピンヘッダに各種組み込み機器で使われる一般的なインターフェース搭載
一般的な方法は、以下の2つがある
13年7月7日日曜日
USBでの機器接続・USB-WiFiアダプタでネット接続・USB-BTアダプタでBT機器接続・USB WebCamでライブ配信・USB 3Gドングルで3G通信・USB センサー機器でセンシング等、既製or自作USB機器との接続はサクッと出来ちゃいます。
13年7月7日日曜日
ピンヘッダでの接続ピンヘッダとは?
13年7月7日日曜日
RPiのピンヘッダ
13年7月7日日曜日
ピンヘッダ詳細I2C-1
I2C-0SPI
UARTGPIO_GENxはGPIO。赤枠部もGPIOとして使用可。
PWM
I2S
13年7月7日日曜日
GPIO• GPIO = General Purpose Input/Output(汎用入出力)
• LEDの点灯をしたり、スイッチの入力を読み取ったり出来る
13年7月7日日曜日
UART• Universal Asynchronous Receiver Transmitter
• 通常1対1で使用
• RS-232C通信出来る。以下は使用例
• USBシリアル変換チップ経由でPCからコンソール操作
• Arduinoと接続して連携
• UART接続タイプのGPSモジュールを接続
• シリアルサーボを接続
13年7月7日日曜日
SPI• Serial Peripheral Interface
• MISO、MOSI、SCLK、SS(その他の名称の場合もあり)の4本で接続
• 1対多で通信可能(通信相手数分、SS信号が必要)
RPi
有機EL
EEPROM
NFCデバイス
接続例
13年7月7日日曜日
I2C• Inter-Integrated Circuit
• 2本の信号線で複数の機器と接続可能
• 1対多接続可能(I2Cバス上で、個々のデバイス毎がユニークな番号(スレーブアドレス)を持つ。
RPiモータードライバモジュール電流・電圧測定
モジュール
LCD
RTC EEPROM
13年7月7日日曜日
製作例1モーター2個を搭載した遠隔制御車
USB3Gドングル
I2Cモータードライバ×2
ネット経由での制御指令
13年7月7日日曜日
製作例2太陽電池の充電状態をネットにアップする装置
I2C
USB3Gドングル
13年7月7日日曜日
製作例3現在地のGoogleMapsやStreetViewを表示する装置
UART
地図データ
13年7月7日日曜日
ソフトウェアの作成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日日曜日
ソフトウェアの作成2
• bcm2835ライブラリを使用する
• http://www.airspayce.com/mikem/bcm2835/
• Cや各種スクリプト言語(Ruby等)から呼び出しが容易
13年7月7日日曜日
ソフトウェアの作成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日日曜日
ソフトウェアの作成4•その他、詳細は以下のページに説明あります。
• http://elinux.org/RPi_Low-level_peripherals
13年7月7日日曜日
さらにI/Oを使いたいRPiのI/O数・種類は多いとは言えません。足りない場合、ポートエキスパンダを使う方法があります。ADしたければI2CのADCなど。
お手軽にやるなら、RPiにArdiunoを繋いで外部機器接続はArduino側にやらせる手が簡単です。
13年7月7日日曜日
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日日曜日
デモ
インターネット接続(WiFiドングル
or 3Gドングル経由) インターネット接続(WiFiドングル
or 3Gドングル経由)ラジコンコントローラー ラジコンカー
クラウドサーバー
13年7月7日日曜日
ありがとうございました
13年7月7日日曜日