秘密の本棚

気になることをなんでも書きます

Raspberry Piを購入してからリモートで動かすまで

Raspberry Piを購入しました

先日の記事nexusuica.hatenablog.jp
で、Google HomeとNature Remo miniを連携するところまでやったのですが、これだけではできることが限られていて、さらに進んだことをしようと思うとWebサーバが必要でした。そこでRaspberry Piを購入し、今回はそのセットアップ編です。全く下調べをせずにAmazonでポチったので悪戦苦闘しましたが、最終的には電源ケーブルだけで運用できるようにしました。ぜひお付き合いください。

f:id:nexusuica:20180817175342j:plain
ラズパイの最終形態

まずは開封

Raspberry Piにはいくつかのエディションがありますが、ホームオートメーション用途であればインターネットに繋がれば何でもいいのでAmazonで何も考えずにポチりました。

開封すると、ケース入りの本体と細々したパーツ、そして説明書が入っていました。
f:id:nexusuica:20180817175344j:plain
内容物
とりあえずヒートシンクとゴム足だけを取り付け、残りは放置しています。GPIOも使わないですかね。あとはセットアップ。ところが、まずここで躓きました。

説明書通りでは起動しない!!

同梱されていた説明書通りにセットアップを進めます。説明書に書かれていたステップは以下のようでした。

  • microSDカードをRaspberry PimicroSDカードスロットに挿入します。
  • USBキーボードとマウスをRaspberry PiのUSBスロットに接続します。
  • モニタの電源が入っていて、入力の選択が正しいことを確認します。
  • Raspberry PiとモニタをHDMIケーブルで接続します。
  • Micro USB電源を接続します。これにより、Raspberry Piが起動されます。

起動にmicroSDカードが必要なことすら知らなかった僕ですが、言われたとおりにカードの挿入と周辺機器の接続を行って電源を入れました。が、画面には何も表示されません。どうしたことやら…。

事前にSDカードにOSのインストールが必要

少し調べてみると、起動する前にSDカードにOSを入れておく必要があるらしいことが判明。それならそうと書いてくれ。というわけでWindows 10を使ってSDカードにOSを焼きます。手順は以下のとおりです。

  • SDカードをFAT32でフォーマット(「PC」でドライブを右クリックすれば「フォーマット」の項目があります)

f:id:nexusuica:20180817180531p:plain
SDカードのフォーマット

  • 公式サイトからOSをダウンロード(僕はCUIできない情報系なのでGUIで)

www.raspberrypi.org

f:id:nexusuica:20180817180533p:plain
ダウンロードサイト。左側がGUIあり、右側はCUIのみ。

  • ダウンロードした圧縮ファイルを解凍(僕はBandiZip派)

www.bandisoft.com

  • SDカードにOSを焼くためのソフト「Win32DiskImager」をインストール

sourceforge.net

  • Win32DiskImagerを起動し、SDカードにOSを書き込み


f:id:nexusuica:20180817180538p:plain
OSの書き込みで迷うところは特になし
ここまでやって、SDカードをRaspberry Piに挿して再度電源を入れると…?
f:id:nexusuica:20180817175347j:plainf:id:nexusuica:20180817175349j:plain
起動した!!泣いた!!

リモートで動かす

ここまでくればとりあえずRaspberry Pi(以下ラズパイ)は動いてくれますが、ラズパイ専用にキーボードやマウスを用意するのは大変だし、なにより配線がごちゃごちゃです。そこで、普段使っているWindowsから完全リモートで操作できるようにします。これができるとラズパイにつながっているのは電源ケーブルのみになって、かなりスッキリします。ただ、このセットアップがけっこう大変です。順を追って説明します。

ラズパイのipアドレスを固定する

まずはラズパイのipアドレスを固定する必要があります。ラズパイ上のコマンドで以下のように入力します(無線LANを想定。有線の場合はeth0です)。

$ ifconfig wlan0

すると、よくわからない出力が出てきます。

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.32  netmask 255.255.255.0  broadcast 192.168.3.255
…

後半は無視してよく、大事なのはinetの後ろに書いてるローカルIPアドレス(この場合は192.168.3.32)です。メモります。
あとは、このアドレスに固定するように設定ファイルを書き換えます。玄人の方

$ sudo vi /etc/dhcpcd.conf

としてファイルの末尾に以下を書き加えればよいです。

interface wlan0
static ip_address=(メモったIPアドレス)/24
static routers=(ルータのIPアドレス)
static domain_name_servers=(ルータのIPアドレス)

しかし、僕のような初心者にはviの扱いが難しいので、GUIに頼ります。ファイルマネージャを用いて/etcにあるdhcpcd.confを開き、先程の内容を最後に追加して保存します。これでIPアドレスが固定できました。
なお、ルータのIPアドレスWindowsではコマンドプロンプトで「ipconfig」と打ち込んで出てくるデフォルトゲートウェイの値です。

VNCサーバのインストール

次に、ラズパイにVNCサーバをインストールします。以下のコマンドを入力します。

$ sudo apt-get install realvnc-vnc-server

インストールが終わったらVNCを有効化します。
Raspberry Pi」の設定を開き、「インターフェイス」の中の「VNC」を「有効」にします。

f:id:nexusuica:20180817184908p:plain
Raspberry Piの設定」
そして、再起動を行います。
再起動すると右上にVNCのアイコンが出てくるので、右クリックして「Options」→「Troubleshooting」と選択してoption画面を立ち上げ、「direct capture mode」を有効にします。

画面解像度の固定

あとはクライアント側のパソコンからアクセスするだけですが、この際画面解像度が小さくなってしまうことがあるので予め設定しておきます。先ほどと同じく「Raspberry Piの設定」を開き、「システム」の中の「解像度を設定」をクリックし、所望の解像度(1920×1080など)に設定しておきます。これでラズパイ側の設定は完了です。

クライアントのダウンロードと接続

最後に、接続したいパソコンでの作業です。VNCクライアントをダウンロードしてインストールします。
www.realvnc.com
そしてCtril+Nを押して新しい接続先を追加します(「VNC Server」にメモったアドレスを入れます)。

f:id:nexusuica:20180817185409p:plain
VNC接続先の設定
これでOKを押すと、接続先が追加されます。あとはダブルクリックして接続し、ラズパイのユーザ名とパスワード(デフォルトは「pi」と「raspberry」)を入力すると接続できます。
f:id:nexusuica:20180817185714p:plain
お疲れ様でした!!

今後

これでラズパイのセットアップはひとまず終了。あとはNode.jsなどを動かして、Google Homeとの連携をやっていきたいと思います。