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.

ロボットシステム学2015年第7回

5,573 views

Published on

Raspberry Piについて

Published in: Technology
  • Login to see the comments

ロボットシステム学2015年第7回

  1. 1. ロボットシステム学 第7回 上田隆一
  2. 2. 本日の内容 • Raspberry Pi – 背景 – 機能 Oct. 7, 2015 ロボットシステム学 2
  3. 3. Raspberry Pi • イギリスで開発された教育用の シングルボードコンピュータ • 動機・簡単な歴史 – 2006〜2008年: 構想・試作 • ケンブリッジ大の学生のコンピュータの腕が落ちてきた • コンピュータを触ると言ってもWord, Excel, HTMLくらいしかやっていない人が増えた • 安価でハードから扱えるようなシングルボードPCが作れないか? – 2009年: Raspberry Pi Foundation設立 • Raspberry Piを販売(2015年初めまでに500万台販売) Oct. 7, 2015 ロボットシステム学 3
  4. 4. • Raspberry Pi 2 Model Bで説明 • 主な入出力 – 電源入力: MicroUSB – ディスプレイへ出力: HDMI – ストレージ: MicroSDカードスロット – LAN – USB – 40ピンのブロック • 「GPIOピン」と呼ばれる – 他 • カメラの取り付け端子等 Oct. 7, 2015 ロボットシステム学 4
  5. 5. 40ピンの構成 • http://www.element14.com/community/docs/DOC- 73950/l/raspberry-pi-2-model-b-gpio-40-pin-block-pinout – USBと反対側が1番ピン(内側)と2番ピン(外側) • 電源: 3.3V, 5V • GND • GPIOピン: 26 – うち何本かがI2C、SPI、UART • I2C ID EEPROM用ピン • A/D変換機能は付いていない Oct. 7, 2015 ロボットシステム学 5
  6. 6. CPU・メモリ・ストレージ • 900MHz クアッドコア ARM Cortex-A7 • 1GB RAM • 8GBのMicroSDカードを挿してストレージとする – 8GBより大きなものを使う場合は自分で挑戦 Oct. 7, 2015 ロボットシステム学 6
  7. 7. ソフトウェア • 基本はRaspbian OSをインストールして使う • Raspbian OS – DebianからRaspberry Piのために派生したLinuxディス トリビューション – パッケージシステム: APT • apt-getでソフトウェアをインストール – インストール • このページから「NOOBS」というソフトをダウンロード・解凍 • PCでSDカードに解凍したものを放り込んで起動 • あとは指示に従う Oct. 7, 2015 ロボットシステム学 7
  8. 8. 最初のログイン • デフォルトのユーザとパスワード – ユーザ名: pi – パスワード: raspberry • piユーザはパスワードなしでsudo可能 – 他、色々特別なので、基本はこのユーザを使う – もちろん、グローバルIPでつなぐ時はパスワードを 複雑化するか鍵認証onlyに Oct. 7, 2015 ロボットシステム学 8
  9. 9. GPIOピン • general purpose input/output, 汎用I/O – CPUに付属する普通のディジタル入出力 (ラズパイ用語ではない) – Raspberry Pi2の場合3.3V • Arduinoのディジタル入出力ピンのように 機器との入出力をつかさどる • 操作方法 – ファイルシステムから – コマンドから – プログラミング言語から Oct. 7, 2015 ロボットシステム学 9
  10. 10. 例: LEDの点灯(ファイルシステム編) • /sys/class/の下にGPIO用のインタフェースが 準備されている – /sys/は擬似ファイルシステムで、OSが裏で字を出し入れ しておりストレージ上にはない Oct. 7, 2015 ロボットシステム学 10 pi@raspberrypi ~ $ ls -l /sys/class/gpio/ total 0 -rwxrwx--- 1 root gpio 4096 Jan 1 1970 export lrwxrwxrwx 1 root gpio 0 Jan 1 1970 gpiochip0 - > ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 -rwxrwx--- 1 root gpio 4096 Jan 1 1970 unexport
  11. 11. • $ sudo echo 18 > /sys/class/gpio/export – シンボリックリンクができてGPIO18番(12番ピン)が使えるようになる • $ sudo echo out > /sys/class/gpio/gpio18/direction – 入出力の方向を決める • $ sudo echo 1 > /sys/class/gpio/gpio18/value – 1(HIGH)を出力 • $ sudo echo 0 > /sys/class/gpio/gpio18/value – 0(LOW)を出力 • $ sudo echo 18 > /sys/class/gpio/unexport – リンクが消える Oct. 7, 2015 ロボットシステム学 11 pi@raspberrypi ~ $ ls -l /sys/class/gpio/ … lrwxrwxrwx 1 root gpio 0 Nov 5 14:17 gpio18 - > ../../devices/platform/soc/3f200000.gpio/gpio/gpio18 …
  12. 12. 例: LEDの点灯(コマンド編) • 「wiringPi」を使う – ライセンス: LGPL • wiringPiインストール手順 (ついでにPythonのライブラリもインストール) – $ sudo apt-get install python-dev python-setuptools – $ git clone https://github.com/Gadgetoid/WiringPi2-Python.git – $ cd WiringPi2-Python/ – $ sudo python setup.py install – $ cd WiringPi/ – $ ./build Oct. 7, 2015 ロボットシステム学 12
  13. 13. • 動作確認 – pi@raspberrypi ~ $ gpio -g mode 21 out – pi@raspberrypi ~ $ gpio -g write 21 1 Oct. 7, 2015 ロボットシステム学 13
  14. 14. LEDの点灯(C言語編) • WiringPiのライブラリを使うとArduinoと ほぼ同じ名前の関数でコーディング可能 • コードの例(回路は前ページのもの) – https://gist.github.com/ryuichiueda/29e9675e20e c75e09e32 – コンパイル • $ gcc wiringPiLedBlink.c –lwiringPi • SPI、I2Cも簡単に扱える – 後日 Oct. 7, 2015 ロボットシステム学 14
  15. 15. LEDの点灯(C言語編2) • マイコンのようにレジスタを直接操作する方法 – コード • https://gist.github.com/ryuichiueda/b5f1b5705f0d6bfff425 – デバイスドライバを書くときに使う – それ以外の場合、ライブラリを使う方法に比べると あまりメリットはない • Linuxの重要な仕組みが幾つか Oct. 7, 2015 ロボットシステム学 15
  16. 16. レジスタを操作する手順 • デバイスファイル/dev/memを開いて ファイル記述子と関連付け – /dev/memはメモリのアドレス0番地から順にデータを 持っているように見える – root権限でのみ可能 – ランダムアクセスするときは次ページの方法を使う Oct. 7, 2015 ロボットシステム学 16
  17. 17. • /dev/memをプロセスの仮想アドレス空間にマッピング – gpio_mmapはGPIOのレジスタの先頭アドレスに対応付けられる Oct. 7, 2015 ロボットシステム学 17 0x3f000000 0x3f000000 4096バイト 物理アドレス仮想アドレス空間 gpio_mmap
  18. 18. • アドレスを4バイトずつ扱う (32ビットごとに整理されているので) • 参考 – 宮城大学小嶋先生のページ Oct. 7, 2015 ロボットシステム学 18
  19. 19. • 使いたいGPIO(ここでは21番)の機能を設定 – 各ピン3ビットずつレジスタが割り当てられていて、 0x1(2進数で001)を書き込むとディジタル出力になる • 場所はgpio_base[2]の4〜6ビット目となる – 一つのgpio_baseの要素で10のGPIOを管理 – GPIO20に割り当てられている3ビットの隣 • コード中のmaskは、他のレジスタの変更防止に使用 Oct. 7, 2015 ロボットシステム学 19
  20. 20. • 出力の切り替え – HIGH/LOW共、レジスタの特定の場所に 1を書き込んで設定 Oct. 7, 2015 ロボットシステム学 20
  21. 21. 他の方法 • デバイスドライバ化 – 割り込みを受けない – 前の例の応用 • 後日扱います Oct. 7, 2015 ロボットシステム学 21
  22. 22. 次回 • 通信に詳しくないとLinuxは使いこなせないの で、イーサネットについて一般的な話 Oct. 7, 2015 ロボットシステム学 22

×