BunnyHopでラズパイカーを動かす ~ソフトウェアセットアップ編~

2018年2月14日

本記事と こちらの記事 で、BunnyHopでプログラミングして動かせるキャタピラカーの作り方を説明します。 このキャタピラカー(以下ラズパイカーと呼称)は、Raspberry Pi と呼ばれる、CPUが載った小型ボートを搭載しています。 BunnyHop でラズパイカーを動かすためには、BunnyHopで作ったプログラムを Raspberry Pi 上で実行する仕組みが必要になります。 本記事では、この仕組みを構築するための Raspberry Pi のセットアップ手順を説明します。

本記事の内容を実行した環境

  • PCのOS : Windows 7 64bit
  • Raspberry Pi の種類 : Raspbarry Pi 2 Model B
  • Raspberry Pi のOS : Raspbian 9.1 stretch

用意するもの

セットアップ用PCの他に用意すべきもの一覧です。 リンク先の商品はあくまで例です。 リンク先の物を購入しなければいけないわけではありません。 ただし、ラズパイのモデルは Raspbarry Pi 2 Model B *1 を使用してください。

手順一覧

1. Raspbian OSをインストールする

Raspberry Pi 上で動作する OS(Raspbian)をダウンロードし、SDカードに書き込むまでを説明します。

1.1. OSをダウンロードする

まず、 Raspbianダウンロードページ の「2017-11-29-raspbian-stretch.zip」を選択して、本記事のバージョンのRaspbianをダウンロードします。 最新版がほしい場合は、 ここの最新の日付のフォルダからダウンロードできます。

次に、ダウンロードしたzipファイルを解凍し、imgファイルを取り出します。 Windows 7 の標準の解凍ソフトでは、この圧縮ファイルの形式に対応していないので、 本記事では「7-zip」を使いました。

1.2. SDカードを初期化する

SDカードの初期化には、 SDメモリカードフォーマッター を使います。 ダウンロードページから「Windows用ダウンロード」を選択し、次のページの「同意します」を選択するとダウンロードが始まります。 ダウンロードしたexeファイルを実行するとインストーラが起動するので、初期設定のまま「次へ」を押していき「インストール」を選択します。 すぐにインストールが始まるので完了するのを待ちます。

SDメモリカードフォーマッターを実行すると以下のような画面が出てきます。 「カードの選択」部分でRaspbianをインストールするSDカードを選択した後、 「クイックフォーマット」を選択して、「フォーマット」を押せば初期化が完了します。 フォーマットしたSDカードの内容は消えてしまうので、SDカードの選択を間違えないように注意してください。

SDカード初期化

1.3. OSをSDカードへ書きこむ

OSの書き込みには、 DD for Windows を使います。 ダウンロードページからzipファイルをダウンロードし、解凍します。 解凍して出てきた「DDWin.exe」を右クリックし、「管理者として実行」を選択します。 書き込み手順は以下の通りです。

  1. 「ディスク選択」をクリックし、先ほど初期化したSDカードを選択します。
  2. 「ファイル選択」をクリックし、ファイル選択ダイアログ右下の拡張子選択欄を 「All files」にしてから1.1. OSをダウンロードするで出てきたimgファイルを選択します。
  3. 「書込」をクリックすると、確認メッセージが出るので全て「はい」を選択します。

アプリ画面下部に「書込が完了しました」と表示されればOSの書き込みは完了です。

DDForWin画面

2. SSH接続の設定をする

Raspberry Pi を起動し、PuTTYというソフトを使ってSSH接続するまでを説明します。 SSHとはネットワーク上のコンピュータを安全に操作するための技術です。 つまり、SSHでRaspberry Pi に接続できれば、PCからRaspberry Piの操作ができるようになります。 SSHをWindowsで使うためのソフトはPuTTY以外にもあるのですが、BunnyHopはPuTTYを使って Raspberry Piと通信するため、このセットアップでもPuTTYを使います。

2.1. Raspberry Pi を起動する

先ほどOSを書きこんだSDカードにsshという名前の空のファイルを作成します。 SDカードをRaspberry Pi に挿し込み、無線LANルーターとRaspberry Pi をイーサネットケーブルでつなぎます。 モバイルバッテリーとRaspberry Piをつなぐと自動で電源が入り、30秒ほどでOSの起動も完了します。

SSHファイル追加 Raspberry Pi 起動

2.2. Raspberry Pi のIPアドレスを調べる

Raspberry Pi のIPアドレス検索には、 Advanced IP Scanner を使います。 ダウンロードページからexeファイルをダウンロードします。 exeファイルを実行すると実行かインストールかを選択する画面が現れるので、 「実行」を選択し、画面右下の実行ボタンをクリックします。

Advanced IP Scanner が起動したら、「スキャン」を押します。すると、LAN上にある端末の情報一覧が表示されます。 この中で、「製造社」が「Raspberry Pi Foundation」になっている行が Raspberry Pi の情報です。 この行のIPアドレスが、SSH接続の際に必要なので覚えておきます。

2.3. PuTTYでSSH接続する

PuTTYダウンロードページ から、使っているWindowsのビット数 *3に応じた「PuTTY」をダウンロードします。 ダウンロードしたmsiファイルを実行するとインストーラが起動するので、初期設定のまま「Next」を押していき「Install」を選択します。 すぐにインストールが始まるので完了するのを待ちます。

コマンドプロンプト *4に「putty」と入力しPuTTYを起動します。 「Host Name (or IP address)」欄に2.2. Raspberry Pi のIPアドレスを調べる で調べたIPアドレスを入力し、「Open」をクリックします。

PuTTYコンフィグレーション

「login as: 」と表示されたPuTTYターミナルが出てきたら、そこに「pi」と入力します。「pi」はユーザー名です。 次にログインパスワードを聞かれるので「raspberry」と入力します。文字が表示されないので打ち間違いに注意してください。 ログインに成功すると「pi@raspberrypi」と表示されます。これでSSH接続は完了です。

Raspberry Pi ログイン

3. Raspberry Pi のネットワーク設定をする

Raspberry Pi と PC が Wi-Fiで通信できるようにします。 さらに、毎回同じIPアドレスで通信できた方が便利なので、IPアドレスを固定します。 *5

3.1. Wi-Fi接続を有効化する

以下のコマンドをPuTTYターミナルに入力し、元のWi-Fi設定ファイルのコピーをとっておきます。 本記事では、黒背景のコマンドは特に断りがない限りPuTTYターミナルに入力するものとします。

sudo cp /etc/wpa_supplicant/wpa_supplicant.conf{,.org}

続けて以下のコマンドを入力し、Wi-Fi設定ファイルを書き換えます。 その際、コマンドの「AP_NAME」の部分を自分のWi-FiのSSIDに変え、「SECR_KEY」の部分をそのWi-Fiのパスワードに変えます。 Wi-Fiのパスワードを忘れた場合は、このページが役に立つかもしれません。

wpa_passphrase AP_NAME SECR_KEY | grep -v \# | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf 

以下のコマンドを入力し、Wi-Fi設定ファイルが書きかえられたか確認します。 下の図のような内容が表示され、ssid= の右側が接続先の SSID になっていることと psk= の記述があることが確認できれば、Wi-Fi接続の有効化は完了です。 psk=の右側は気にしないでください。

sudo tail -4 /etc/wpa_supplicant/wpa_supplicant.conf 
無線LAN設定確認

SSIDやWi-Fiのパスワードを間違えた場合は、以下のコマンドを入力して元のWi-Fi設定ファイルに戻します。 そして、wpa_passphrase から始まる上記コマンドの入力からやりなおします。

sudo cp -f /etc/wpa_supplicant/wpa_supplicant{.conf.org,.conf}

3.2. Wi-Fiの省電力機能をOFFにする

Wi-Fiの省電力機能がONになっていると通信が途切れることがあるため、 以下のコマンドを入力してこの機能を無効にします。

echo "options 8192cu rtw_power_mgnt=0" | sudo tee -a /etc/modprobe.d/8192cu.conf

続けて、以下のコマンドを入力して Raspbian を再起動します。 再起動するとSSH接続が切れるため、30秒ほどまってから 2.3. PuTTYでSSH接続する を参考にもう一度SSH接続します。なお、シャットダウンコマンドは、「sudo poweroff」です。

sudo reboot

再起動後、以下のコマンドを入力し「0」と表示されればWi-Fi省電力機能の無効化は完了です。

cat /sys/module/8192cu/parameters/rtw_power_mgnt
Wi-Fi省電力機能OFF確認

3.3. IPアドレスを固定する

本記事では、現在 Raspberry Piに割り当てられている無線LANのIPアドレスを固定IPアドレスにします。 以下のコマンドを入力して、現在の無線LANのIPアドレスを調べます。 下の画像の赤枠部分がそのIPアドレスです。これは、実行環境によって異なります。

ip -4 addr show wlan0 | grep inet
固定化するIPアドレス

IPアドレスを固定化するためにDHCP設定ファイルを書き換えます。 以下のコマンドで、元の設定ファイルのコピーをとっておきます。

sudo cp /etc/dhcpcd.conf{,.org}

続けて、以下2つのコマンドを順番に入力し、DHCPの設定ファイルを書き換えます。 2番目のコマンドの192.168.10.102/24は上記手順で調べたIPアドレスに読み替えてください。

echo "interface wlan0" | sudo tee -a /etc/dhcpcd.conf
echo "static ip_address=192.168.10.102/24" | sudo tee -a /etc/dhcpcd.conf

以下のコマンドを入力し、DHCP設定ファイルが変更されているか確認します。 下の図の赤枠の2行が出てくれば完了です。 192.168.10.102/24は設定したIPアドレスに読み替えてください。

sudo tail -2 /etc/dhcpcd.conf
DHCP設定確認

失敗した場合は、以下のコマンドを入力して元のDHCP設定ファイルに戻します。 そして、echoから始まる上記コマンドの入力からやりなおします。

sudo cp -f /etc/dhcpcd{.conf.org,.conf}

3.4. Wi-Fi通信ができることを確認する

以下のコマンドを入力して Raspbian を再起動します。

sudo reboot

再起動するとSSH接続が切れるので再接続します。 このとき、先ほど固定化したIPアドレスを使って接続します。 接続手順は 2.3. PuTTYでSSH接続する と同じですが、 「Host Name (or IP address)」欄に固定化したIPアドレスを入力します。 接続時に警告が出た場合は「はい」を選択してください。 2.3. と同じようにログインできれば、Raspberry Pi のネットワーク設定は完了です。

4. その他の設定

Raspberry Pi のシリアルインタフェースの有効化と、BunnyHopとの通信プログラムのコピーを行います。

4.1. シリアルインタフェースを有効化する

回路同士が通信するためのインタフェースに、SPIやI2Cと呼ばれるものがあります。 Raspberry Piはこれらのインタフェースを使って外部の回路と通信ができます。 ハードウェア構築編で作るラズパイカーは、SPIを使うのでこのインタフェースを有効化します。 I2Cは今後の拡張に備えて有効化しておきます。

SPIの有効化

3.4. Wi-Fi通信ができることを確認する を参考にSSH接続を済ませ、以下のコマンドを入力します。

sudo raspi-config

PuTTYターミナルが下の図のような画面に変わるので、矢印キーで「5 Interfacing Options」を選択しEnterを押します。

SPI有効化1

次の画面で「P4 SPI」を選択しEnterを押します。さらに次の画面で「Yes」を選択しEnterを押します。 「The SPI interface is enabled」と表示されれば成功です。

SPI有効化2 SPI有効化3

I2Cの有効化

SPIの有効化と同じ手順でI2Cを有効化します。 「P4 SPI」を選択する代わりに「P5 I2C」を選択します。 I2Cインタフェースの有効化に成功すると、「The ARM I2C interface is enabled」と表示されます。

4.2. BunnyHop との通信プログラムをコピーする

BunnyHop から Raspberry Pi を動作させるためには、BunnyHop との通信プログラムを Raspberry Pi にコピーしなければなりません。 ここからそのプログラム一式をダウンロードし、解凍してください。 解凍したら、BhRaspberryフォルダの「Initialize.cmd」をメモ帳などのテキストエディタで開きます。 「set ip_addr=xxx.xxx.xxx.xxx」と書いてある行の xxx.xxx.xxx.xxx の部分を 以下の例のように、3.3. IPアドレスを固定する で固定化したIPアドレスに書き換えてから上書き保存します。

set ip_addr=192.168.10.102

「Initialize.cmd」をダブルクリックして実行します。 PuTTYターミナルに以下のコマンドを入力して、下の図のような表示がでれば制御プログラムのコピーは完了です。 なお、Initialize.cmd は BhRaspberry フォルダの下の BunnyHopフォルダを pi ユーザのホームディレクトリにコピーしてから、 BunnyHopフォルダの Setup.sh を実行しています。

ls -la ~/BunnyHop
通信プログラムコピー確認画像

最後に

以上で、BunnyHopでラズパイカーを動かすためのソフトウェアの設定は終了です。 次の記事では、ラズパイカーのハードウェアを作成します。


*1 Raspbarry Pi 3 Model B でもおそらく本記事のセットアップはできると思いますが、 推奨電源容量が Pi 2より増えているので電源選びに注意してください。
*3 bit数がわからない場合は32bit版を選択してください。
*4 コマンドプロンプトの起動方法は ここ ここ を参照してください。
*5 IPアドレスを固定しても条件によっては変わる可能性があります。