読者です 読者をやめる 読者になる 読者になる

くろねこ日記

ソフトウェアに関する技術メモが多いです.

ディスプレイもキーボード無い状態でraspberrypiをつかってみた

はじめに

久々にraspberrypiで遊んでみました.raspberrypiはlinux環境がつかえてGPIOも扱える良いマシンだと思うのですが,ディスプレイとキーボードを外付けで用意するのがツラいという問題があります.

いくつかネットの記事を漁っていたところ,ディスプレイもキーボードも無い環境で接続する例が出てきており,なかなか良い方法だったので,メモしておきます.僕が見た限りではraspberrypi B+の話が多くA+などLANコネクタの無いraspberrypiでは試していなかったようでした.今回はmacbook proとraspberrypi A+の間で接続を行なったのでそのことについてメモします.

用意したもの

  • raspberrypi A+(zeroでも良いかもしれない)
  • USBケーブル(タイプAオス- マイクロタイプBオス)
  • USBタイプのEthernetアダプタ(使用したのはこれhttp://logitec.co.jp/products/lan/lantxu2h3a/index.php)
  • macbook pro Retina(2012)
  • Apple Thunderbolt - ギガビットEthernetアダプタ
  • SDカード(使用したのはclass10の32GBタイプのマイクロSDカード(変換アダプタつかわないとそのままmacbookproに挿せませんので注意))
  • LANケーブル

OSインストール手順

すでにSDカードにOSのインストールが完了しており,ssh環境も整っている人はスキップしてください.

raspberrypiではnoobsの使用を推奨しておりますが,noobsではディスプレイとキーボードが必要なため,raspbian wheezyを直接インストールすることにします.この記事ではraspbian wheezyを利用するものとします.

まずはSDカードをマシンに差しましょう.次にraspbian wheezyを取得しましょう.

公式のサイトからダウンロード可能ですがリンクがとても重たいため(僕が試したときには14時間かかると表示されました...),

↓に張ったjaistのミラーリンクを利用すると良いでしょう.

Index of /pub/raspberrypi/raspbian/images

jaistのサーバからOSのつまったzipファイルをダウンロードしたあとは,そのzipファイルを解凍して,imgファイルを取り出しましょう.

僕の環境では2016-05-10-raspbian-jessie.imgという名前imgが/path/to/に保存されていますので,その前提で話を進めます.

SDカードのデバイスがどのように認識されているかを確認するため次のコマンドを叩いて確認しましょう.

df -h

もしわからなければ,SDカードを挿す前と後でdf -hを叩いてその差分を見ましょう.

僕の場合

/dev/disk4

というのがSDカードデバイスでした.各マシンによって異なるので,そこは各自の値に沿って進めてください.ここでは/dev/disk4がSDカードのデバイスであるという前提で話を進めます.

デバイスがわかったらアンマウントしましょう.

diskutil umountDisk /dev/disk4

次にダウンロードして解凍済みのOSをSDカードに書き込む操作をします.注意して欲しいのはofにmacのストレージを指定しないください.ストレージを指定するとOSごとふっとぶ可能性があります.

僕の環境ではSDカードデバイスは/dev/disk4というものなので,OSを書き込む先では/dev/rdisk4になります.diskにrをつけてください.

それではddをつかって書き込みます.

cd /path/to
sudo dd bs=1M if=2016-05-10-raspbian-jessie.img of=/dev/rdisk4

このまま数分放置してください.うんともすんとも言いませんが,問題ありません.

終わると完了メッセージが表示されます.これでOSのインストールは終了です.

デバイスの接続

OSをインストールしたSDカードをraspberrypiに挿しましょう.

次のようにデバイスを接続してください(図1を参考に).

f:id:kuroneko0208:20160516005520p:plain 図1: デバイスの接続図

  • macApple ThunderboltのEthernetアダプタを挿します.

  • raspberrypiにEthernetアダプタを挿します.

  • macとraspberrpiにつながっているEthernetアダプタをLANケーブルで繋ぎます.

  • 一応この段階まで進んだら,システムの設定から共有を選択してインターネット共有のThunderbolt Ethernetも共有できるようにしましょう.

  • 次にraspberrypiの給電ポートにUSBケーブルを挿し,macbookproと繋げて電源を投入しましょう.

  • 電源がはいるとraspberrypiのLEDが点滅を繰替えします.

ssh接続

ifconfigを叩いてEthernetアダプタのIPを知りましょう.

叩くとbridge100というところにEthernetアダプタのブリッジのIPが表示されます.192.168.4.1から192.168.4.255の範囲に収まっていることがわかります.

また,statusがactiveになっており,問題なく接続ができていることがわかります.statusがinactiveのまましばらく変わらない場合は接続の仕方が悪いのかもしれませんので見直しましょう.

bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether ba:f6:b1:41:83:64
        inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.4.255
        inet6 fe80::b8f6:b1ff:fe41:8364%bridge100 prefixlen 64 scopeid 0x11
        Configuration:
                id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
                maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
                root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
                ipfilter disabled flags 0x2
        member: en4 flags=3<LEARNING,DISCOVER>
                ifmaxaddr 0 port 16 priority 0 path cost 0
        nd6 options=1<PERFORMNUD>
        media: autoselect
        status: active

デバイスの範囲を確認できたら,arp -aを叩いてその範囲にipが存在しているか確認しましょう.

ちなみに僕の環境では192.168.4.3でした.

IPがわかったらsshで繋ぎましょう.

ssh pi@192.168.4.3

こうすると反応があります.パスワードが聞かれたら「raspberry」と入力すればraspberrypiにアクセスできるはずです.

おまけ(i2cを有効化する)

raspberrypiセットアップしたあとsshでアクセスできたまでは良かったのですが,i2cがつかえなかったので,その設定も載せておきます.試行錯誤的に行なったので正しいかは自信ありません...

まずは/etc/modulesに以下を追記しました.

i2c-bcm2708
i2c-dev

もともとi2c-devは存在していたので追記するのはi2c-bcm2708だけで良さそうでした.ただしOSのバージョン?によっても微妙に異なるらしくi2c-devが記載されてないケースもありそうです.もしi2c-devが無ければ追記しておいてください.

次に/boot/config.txtに以下を追記してください(A+,B+のみらしい).

device_tree=bcm2708-rpi-b-plus.dtb
device_tree_param=i2c1=on
device_tree_param=spi=on

なお,この3行の設定はここの書き込みを参考にしました. Arch Linux ARM • View topic - Unable to enable i2c device

ここまでいったら

sudo reboot

してi2c-toolsを以下のようにインストールしましょう.

sudo apt-get install i2c-tools

インストールが終わったら

sudo i2cdetect -y 1

を叩いてみて,表のようなものがでればi2cが扱えるようになっているはずです.

まとめ

raspberrypi A+を動かすためにディスプレイもキーボードも不要な方法を紹介した.