おもちゃラボ

Unityで遊びを作ってます

Raspberry Pi Zero セットアップ入門(2017年度版)

Raspberry Pi Zeroを買ってみたものの、セットアップが大変そう・・・とか、有線マウスとキーボードなんて家にないよ・・・とか、結局はLinuxのセットアップ何でしょ・・・とか、どうも腰が重くていけません。

そこで、Raspberry Pi Zeroのセットアップに必要な手順をまとめておくことにします。Raspberry Pi Zeroであれば、追加でマウスやキーボードを用意しなくてもUSBケーブルさえあればセットアップができちゃいます。

f:id:nn_hokuson:20170807155151j:plain

今回の記事の内容は次のとおりです。

必要なもの

Raspberry Pi Zeroをセットアップするには次のものが必要になります。

Raspberry Pi Zero本体

いわずもがな、ラズパイの本体が必要です。これがなければ始まりません・・・・が販売開始から1年たった今でも手に入りにくい。Amazonはボッタクリなのでやめておきましょう・・・
www.switch-science.com

ラズパイ・ゼロ初心者向けセット

開発するときに必要になる、WifiモジュールやUSBハブ、ピンヘッダがセットになった入門キットです。バラバラで買うよりは、実績のあるものを買っておいたほうが安心です。
[asin:B01LZI7IAY:detail]

Micro SDカード

忘れがちですが、Raspberry PiのOSを動かすためにはMicro SDカードが必要になります。値段も大分下がってきたので16GB〜32GBのものを買っておけば大丈夫です。

マイクロUSBケーブル(A to microB)

これも忘れがちですが、Raspberry Pi ZeroをセットアップするにはマイクロUSBケーブルが必要になります。PS4のコントローラのケーブルでも代用可。


Raspberry Pi Zerof(W)はWifiとBluetoothモジュールが載った、高機能版Zeroです。こちらを使用する場合は、Wifiモジュールは不要です。
www.switch-science.com

OSのインストール

必要なものが揃ったところで、まずはOSのイメージファイルであるRASPBIAN JESSIEを次のサイトよりダウンロードします。

www.raspberryPi.org

ページ中央の「RASPBIAN JESSIE WITH DESKTOP」をダウンロードしておきましょう。

f:id:nn_hokuson:20170805080351j:plain:w440

続いてイメージをmicroSDカードにインストールするためのインストーラをダウンロードします。次のサイトより緑色の「Clone or Download」を押して、「Download ZIP」をクリックして下さい。

github.com


ダウンロードしたRaspbianイメージを解凍するためのアーカイバ(The Unarchiver)も合わせてダウンロードしてインストールしておいて下さい。

theunarchiver.com

ダウンロードしたイメージファイル(2017-xx-xx-raspbian-jessie.zip)をアーカイバにドラッグ&ドロップして解凍すると、2017-xx-xx-raspbian-jessie.imgというイメージファイルが作成されます。

続けて、このイメージファイルをSDカードにインストールしましょう。ターミナルを起動し、df -hと入力してインストールするSDカードのボリューム名を調べます。

f:id:nn_hokuson:20170817094940j:plain

ここでは、一番下の/dev/disk1s2がSDカードのディスクになります。ボリューム名がわかったところで、一旦SDカードをアンマウントして下さい。このとき、SDカードのアイコンをゴミ箱にドラッグするのではなく、コマンドからアンマウントして下さい。

$ sudo diskutil unmount /dev/disk1s1

これでインストールの準備が整いました。次のコマンドでRaspbianのイメージをSDカードに焼きます。ボリューム名の部分は「disk1s2」⇛「rdisk1」のように、先頭に「r」を付け、末尾の文字は削除します。

$ sudo dd bs=1m if=2017-07-05-raspbian-jessie.img of=/dev/rdisk1 conv=sync

しばらく(3分ぐらい?)無反応なので、ビビりますがラーメンでも茹でて待ちましょう。インストール出来ると次のように表示されます。

4445+1 records in
4446+0 records out
4661968896 bytes transferred in 252.899508 secs (18434077 bytes/sec)

MacとRaspberry Pi Zeroを直接つなぐ準備

ここから、少々ややこしいのですが、一旦MacとRaspberry Piを直接USBで接続してセットアップを行います。セットアップにはUSB経由でSSH接続を使用するため、設定ファイルを書き換えます。

ここでは次の3つの作業を行います。

  • cmdline.txtに追記
  • config.txtに追記
  • sshファイルの作成

cmdline.txtに追記

まずはbootフォルダ直下にあるcmdline.txtの中のrootwaitとquietの間に「modules-load=dwc2,g_ether」を入力して下さい。

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/rasPi-config/init_resize.sh quiet splash plymouth.ignore-serial-consoles

config.txtに追記

また、bootフォルダ直下のconfig.txtの末尾に"dtoverlay=dwc2"を追加して下さい。

・・・
# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
dtoverlay=dwc2

sshファイルの作成

最後に、Raspberry Pi ZeroにSSHでリモートログインして開発するためbootフォルダの直下にsshという空のファイルを作成して下さい。ターミナルの場合はbootフォルダ直下に移動して次のコマンドを打ちます。

$ touch /Volumes/boot/ssh

これで、sshという名前のファイルが作成されます。

MacとRaspberry Pi ZeroをUSBで接続する

MacとラズパイをUSBケーブルで接続してセットアップをしていきましょう。まずはマイクロSDカードをラズパイに差し込んで下さい。続いてUSBケーブルをラズパイの内側の端子に接続して下さい。

f:id:nn_hokuson:20170807145114j:plain:w480

しばらくラズパイのLEDが点滅するので、LEDが常時点灯になるまで待ちます。

f:id:nn_hokuson:20170807153259j:plain:w450

Macのインターネット共有を有効にする

続いてMacからRaspberry Pi zeroにSSH経由で接続し、セットアップを行います。そのため、Raspberry Pi zero側でもインターネットに接続出来ている必要があります。そこで、Macのインターネット共有を使ってラズパイをインターネットに接続しましょう。

環境設定→共有を選択し、共有する接続経路を「USB」、相手のコンピュータでのポートを「RNDIS/Ethernet」に設定して、インターネット共有のチェックボックスをONにして下さい。

f:id:nn_hokuson:20170806230527p:plain:w520

SSHを使ってRaspberry Piにリモートログインする

Macでターミナルを開き、次のコマンドを打って下さい。

$ sudo ssh pi@raspberrypi.local

パスワードを尋ねられるので「raspberry」と入力します。正しく接続できると次のような画面が表示されます。

f:id:nn_hokuson:20170807151001j:plain:w480

これでMacからUSB経由でRaspberry Pi Zeroへ接続することができました。

Wifiの設定を行う

最後にRaspberry Pi Zeroの開発をするときに、いちいちMacに接続しなくてもWifi経由でログインできるように設定します。

Wifiで接続するにはルータのSSIDとパスワードを設定ファイルに書き込む必要があります。Raspberry Piにログインした状態で次のコマンドを打って下さい。「SSID」と「PASS」の部分はお使いのルータで使用しているものに適宜書き換えて下さい

$sudo sh -c 'wpa_passphrase 「SSID」「PASS」 >> /etc/wpa_supplicant/wpa_supplicant.conf'

これでRaspberry Pi Zeroをルータに接続できるようになります。一旦ラズパイはシャットダウンして、Wifiアダプタを繋ぎます。ラズパイをシャットダウンするには次のコマンドを入力して下さい。

sudo shutdown -h now

シャットダウンして電源ランプが消えたことを確認してから、次図のようにUSBケーブルは外側に差し替えてください。この端子は単に電源供給用として使います。続いて、Wifiアダプタを内側のUSB端子に接続して下さい。

f:id:nn_hokuson:20170807150532j:plain:w500

上記のスターターキットを使用している場合はUSBハブを内側のUSB端子に接続し、そこにWifiアダプタを差し込みます。USBハブのスイッチは「3」にしておきましょう。

f:id:nn_hokuson:20170807153610j:plain

これで再度、Macのターミナルからssh接続して見て下さい。パスワードを入力してログインできたら、Wifi経由でSSH接続が可能になります。これでRaspberry Pi Zeroのセットアップは終了です!お疲れ様でした!

【Unity2017】IL2CPPを使ってAndroidビルドする方法

IL2CPP(ILはIntermidiate Languageの略でC#の中間言語、CPPはC Plus Plusのことです。)を使えば、C#をC++に変換してバイナリを生成するため、高速に動作させることができます(そのぶんビルド時間は伸びちゃいますけど・・・)。

ここでは、Android用ビルドの設定(Android StudioとJDK)は終わっているものとします。この方法はUnity5の教科書を参照ください。

NDKのインストール

Unity→Preferenceを選択し、External Toolsのタブを開いてください。NDKの横の「Downloadボタン」をクリックしてNDK(Native Development Kit)のパッケージをダウンロードします。

f:id:nn_hokuson:20170803192823p:plain:w360

ダウンロードした、android-ndk-r10e-darwin-x86_64.binが曲者で、ダブルクリックでは展開できない罠・・・

コマンドラインから開きます。上の.binファイルと同じ階層にcdで移動してから、次のコマンドを打ってください。

chmod a+x android-ndk-r10e-darwin-x86_64.bin 
./android-ndk-r10e-darwin-x86_64.bin 

実行すると展開が始まり、最後に「Everything is Ok」と出れば成功です。

f:id:nn_hokuson:20170803193023j:plain:w360

展開したフォルダを、適当なパスに配置してください。Unityに戻ってExternal ToolsのNDKの「Browsボタン」をクリックし、さきほど展開したNDKフォルダを配置したパスを指定してください。

f:id:nn_hokuson:20170803193125p:plain:w360

IL2CPPを使ってビルドするように設定する

これでIL2CPPを使う準備ができました。最後に、IL2CPPを使ってプロジェクトをビルドするよう設定しましょう。

Edit→Project Settings→Playerを選択し、インスペクタに表示されるOther Settingsの中から「Scripting Background」の項目を「IL2CPP」に変更してください。

f:id:nn_hokuson:20170803193142p:plain:w360

これで、通常通りビルドすればC++に変換されたバイナリが生成されるようになります。

なお、IL2CPPはプロジェクトパスに日本語名が入っているとビルドにミスるようなので気をつけてください!(20世紀かよ!と言いたい)

【Unity】水面の表現を無料で簡単に作る

池や海などの水面を作ろうとすると、シェーダを書いたり波動方程式を計算したり大変だ・・・!というイメージがありますが、Unityを使えば超簡単に無料で水面を作ることができます

f:id:nn_hokuson:20170802201618j:plain

地形を作る

まずは雰囲気を出すため(笑)地形を作っていきます。今回はAsset Storeで配布されている「Stones and buried treasure」というローポリのアセットを使わさせていただきました。

f:id:nn_hokuson:20170802181702j:plain:w400

いい感じに岩や木、石を組み合わせて池を作ります。箱庭みたいで楽しい・・・

f:id:nn_hokuson:20170802200138j:plain

このままでは、まだまだ池の雰囲気のかけらもありませんね。いま作った池に水を張っていきましょう〜。

水面のアセットをインポートする

池ができたところで水面のアセットをインポートします。水面のアセットはStandard AssetのEnvironmentに含まれています。

ツールバーからAsset→Import Package→Environmentを選択し、その中から、Waterに関するものだけをインポートしましょう。WaterとWater(Basic)を選択してください。

f:id:nn_hokuson:20170802200204p:plain:w350

インポートできたら、「Standard Assets/Environment/Water/Water/Prefabs/」の中にある「WaterProDaytime」をシーンビューにドラッグ&ドロップしてください。円形の水面が表示されます。これを池にフィットするように配置してください。

f:id:nn_hokuson:20170802175933j:plain

配置できたら、カメラの位置を調節して実行してみてください。水面に波紋のアニメーションが表示されましたね!

f:id:nn_hokuson:20170802201223g:plain

しかも、水面が揺れるだけではなく、周囲の岩が反射していたり、水中にある岩が揺らめいていたりと、なんともリアルです。

f:id:nn_hokuson:20170802201004j:plain

デフォルトでは水面の形状は円形ですが、インスペクタの「Water Plane Mesh」に任意の形状のメッシュを指定することで、好きな形の水面を作ることができます。ミッキーとかの形にもできますよ(笑)

f:id:nn_hokuson:20170802201509p:plain:w250

また、波のスケールや反射・透過光の屈折などもインスペクタから調節できるようになっています。至れり尽くせりですねー。

まとめ

今回は簡単にUnityで水面&波の表現を作る方法を説明しました。水面の表現は作ってみるととても簡単で、見た目の効果は大きいので何かと重宝します^^