2019年1月26日土曜日

ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(1)~VNC編

1. はじめに

Raspberry Piは名刺サイズの超小型コンピュータですが、ディスプレイを接続して利用するとRaspberry Piの省スペース性が犠牲になるという問題があります。

そこで、本ページではタイトルにあります通り、「Raspberry Piにディスプレイ・マウス・キーボードを接続せずに利用する」ことを目指します。

本サイトではその方法として「VNCを用いる方法」と「SSHを用いる方法」の2つを紹介しますが、本ページは「VNCを用いる方法」を解説します。Linuxのコマンド操作にはまだ慣れていない、という方にはわかりやすい方法です。

具体的には、下記のように一つのネットワークにRaspberry PiとPCが属しており、PCからRaspberry Piを利用する、というスタイルになります。


この図だけ見ると、本書の9章や10章で行ったように「PCのブラウザからRaspberry Piの回路にアクセスする」方法とあまり変わらないように思えるかもしれません。

9章や10章と異なるのは、Raspberry Piにディスプレイ、マウス、キーボードを一切接続せず、「プログラムの作成」、「プログラムの実行」、「Raspberry Piのシャットダウン」などをすべてPCから行う、ということです。

この際、PCのデスクトップの外観は下図のようになります。Windowsのデスクトップの上にウインドウがあり、その中にRaspberry Piのデスクトップが表示されていますね。

以下、この動作を実現する方法を解説していきます。Windowsを用いて解説しますが、macOSでも同じことが可能であると思います。


2. Raspberry Piでの準備

まず、当面はRaspberry Piにディスプレイ、マウス、キーボードを接続して設定を行っていきます。

メニューの「設定」→「Raspberry Piの設定」→「『インターフェイス』タブ」のVNCと言う項目の「有効」をチェックし、「OK」ボタンを押して「Raspberry Piの設定」を終了してください。


そうすると、下図のようにRaspberry Piのデスクトップの右上に、VNCが起動していることを示すアイコンが現れます。


この状態にすることで、外部のPCからVNC接続が可能になります。

3. WindowsなどのPCでの設定

次に、WindowsやmacOSのようなPCのブラウザでVNC Viewerのダウンロードサイトに移動します。

そして、WindowsまたはmacOS用のVNC Viewerをダウンロードしてください。執筆時に、Windowsの場合「VNC-Viewer-6.19.107-Windows.exe」というファイルがダウンロードされました。

ダウンロードが完了したらダブルクリックしてインストールを行います。ほぼデフォルトの設定通りにインストールして良いのですが、念のため注釈を加えていきます。

言語は、下記のようにEnglishのままで構いません。


License Agreementの画面が出たら、ライセンスを確認した上で「I accept the terms in the License Agreement」にチェックを入れてから「Next」をクリックします。


インストールの設定ですが、「Desktop Shortcut」の部分をクリックして、「Will be installed on local hard drive」を選択しましょう。デスクトップにVNCのアイコンが現れるようになります。


あとは設定の変更なくボタンをクリックしていくとインストールが始まり、下図のようなアイコンが保存されます。


このアイコンをダブルクリックしてVNCを起動すると、まず下図のような確認画面が現れますので、「GOT IT」ボタンをクリックします。「Send anonymous usage data to help imporve VNC Viewer(VNC Viewerの改善のために匿名の利用データを送る)」のチェックはお好みで外しても構いません。


そうすると、接続先を指定する画面が現れます。下図の下線部に、Raspberry PiのIPアドレスを記入して接続するわけです。


IPアドレスとは、ネットワーク接続時に割り振られるアドレスで、x.x.x.x の形式をしているのでした(xはそれぞれ0から255の数字)。Raspberry PiのIPアドレスを知る方法は、本書の9章で解説しました。

しかし、本ページの目的は「ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する」ことですから、その方法は使えません。

この「どのアドレスに接続すればよいかわからない」問題を解決するには、以下の2つの方法があります。
  • 赤線部にIPアドレスではなく「raspberrypi.local」と記入する:RaspbianのバージョンがJessie以降であり、WindowsにiTunesがインストールされている必要がある(iTunesに含まれるBonjourというソフトウェアが必要なため)。これは本書の付録Eで解説されています。接続できない場合、WindowsからiTunesとBonjourを一旦アンインストールし、再びiTunesをインストールし直すと改善する場合があります。
  • Raspberry PiのIPアドレスを固定し、赤線部に毎回そのIPアドレスを記入する:「Raspberry PiのIPアドレスを固定する」にその方法がまとめられています
iTunesをインストール済の方はこのうちの1つめ、すなわち上図赤線図に「raspberrypi.local」と記入するのが簡単です。

ただし、私が試したところ(環境のためかソフトウェアのためか)、「raspberrypi.local」と記述してもなかなか接続に成功しないことがありました。何回に一回かは成功するという状態です。同じ問題に遭遇した方は、上の選択肢の2つめ、すなわち「IPアドレスを固定する」方法を用いた方が安定して接続できると思います。

さて、上図赤線部に「raspberrypi.local」または「Raspberry PiのIPアドレス」を記入してEnterキーを押します。Raspberry Piで動作しているVNC Serverへの接続に成功すると、下図のようなWindowsが開きますので、「Continue」ボタンをクリックします。


すると、下図のような画面が現れますので、ユーザー名とパスワードを記し、「OK」ボタンをクリックします。 なお、ユーザー名とパスワードは、古い OS ではデフォルトで「pi」と「raspberry」でしたが、現在ではこれらは OS の初回起動時に自分で決定するようになっていますので、そこで設定した値を入力します。


接続に成功すると、下図のようにWindows上にRaspberry Piの画面が現れます。

この時点ではまだRaspberry Piにディスプレイを接続した状態だと思いますが、そのディスプレイを複製したウインドウになっているはずです。

このとき、下図の赤い矢印部に黒い横線があることに着目してください。


その近くにマウスを移動すると、下図のように設定アイコンが現れます。左端の「全画面表示」と右端の「接続終了」は知っておくと便利です。


さて、これでVNC接続できることがわかりましたので、次の目標は以下を実現することになります。

  • Raspberry Piの電源を切り、ディスプレイ、マウス、キーボードを取り外した状態で起動する
  • その状態でWindowsなどのPCからVNC接続する

しかし、そのまま実行すると、Windows上でVNC接続したRaspberry Piの画面が非常に狭い(解像度が低い)状態になってしまいます。

それを避けるためには、Raspberry Piの電源を切る前に、あらかじめ解像度を大きく設定しておく必要があります。下図のように「Raspberry Piの設定」アプリケーションで「システム」→「解像度を設定」で解像度をDMTの1280x720くらいにしておくと良いと思います。なお、最近の Raspberry Pi OS では、設定アプリケーションの「ディスプレイ」タブ→「ヘッドレス解像度 (Headless Resolution)」の設定が該当すると思います。




上記のどの設定も存在しない場合、以下のようにターミナル上で raspi-config コマンドを実行して設定することになります。
  1. ターミナル上でコマンド「 sudo raspi-config 」を実行し、設定画面を開く
  2. 「↓」キーを一回押して「2. Display Options」にフォーカスを合わせ、「Enter」
  3. 「↓」キーにより、「D1 Resolution」または「D5 VNC Resolution」にフォーカスがあわせ「Enter」
  4. 「↑」および「↓」キーを押し、設定したい解像度のフォーカスを合わせる
  5. 「TAB」キーを一回押し、「了解」または「Select」にフォーカスを合わせ、「Enter」
  6. 最初の画面に戻ったら、「TAB」キーを二回押し、「Finish」にフォーカスを合わせ、「Enter」
以上の解像度の設定をした後、上の目標を試してみましょう。

なお、うまく接続できるようになった後、Raspberry Piの電源を切りたい場合は、VNC内のRaspberry Piでメニューからシャットダウン(あるはコマンドで「sudo poweroff」)を実行してください。VNCの接続を切断しただけではRaspberry Piの電源は切れませんのでご注意ください。

もし起動したRaspberry PiにVNC Viewerで接続できないという場合、上で解説した「『raspberrypi.local』と記述してもなかなか接続に成功しない」という問題に当たっているかもしれません。

その場合、IPアドレスでの接続に切り替えてみると良いかもしれません。そのためには、再びRaspberry Piにディスプレイ・マウス・キーボードをつなぎ直すことになりますね。

安定して接続できる環境が整うまで苦労するかもしれませんが、安定すると便利に使える方法です。

4 件のコメント:

  1.  ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(1)~VNC編を参考にさせていただき,chromebook(Dell Chromebook 3100 2-in-1)で接続を試みているのですが,なかなかうまく接続できません。Chromebookでの接続の方法を教えていただけないでしょうか。
     また,Raspberry PiはHDMIケーブルからディスプレイの解像度を取得してデスクトップ画面に反映させているため、ディスプレイなしで起動すると、リモートからデスクトップ画面を表示できないという問題が起きるので、デスクトップ画面の解像度を指定することで、ディスプレイなしで起動してもリモートからデスクトップ画面を表示できるということですが,2021年11月にリリースされた最新のRaspberry Pi OS Bullseyeでは、こちらの設定ではうまく動作しないようです。何か良い方法がありませた教えていただけますか。

    返信削除
    返信
    1. 私は Chromebook を所有しておりませんので、以下の回答は検索して調べた上での
      予想に過ぎないことをご了承ください。

      また、上記と同じ理由で、今回の質問に対する回答はこれを最後とさせてください。

      まず、Chromebook 上の VNC アプリケーション(ビューアー)ですが、
      以前は提供されていた「VNC Viewer for Google Chrome」が公開停止になっているそうです。
      そのため、Chromebook 上で Android アプリケーションを実行する仕組みを利用し、
      Android アプリケーションである「VNC Viewer」を利用するのだそうです。

      また、解像度の設定ですが、Raspbery Pi のターミナル上で用いる raspi-config という
      設定ソフトウェアを用い、以下の手順で行うと良いのではないかと予想します。

      なお、以下の手順は Raspberry Pi Buster での手順ですが、
      Bullseye でもおおむね同じ手順で設定項目が見つかるのではないかと思います。

      (1) ターミナル上でコマンド「 sudo raspi-config 」を実行し、設定画面を開く

      (2) 「↓」キーを一回押して「2. Display Options」にフォーカスを合わせ、「Enter」

      (3) 「D1 Resolution」にフォーカスがあっているのでそのまま「Enter」

      (4) 「↑」および「↓」キーを押し、設定したい解像度のフォーカスを合わせる

      (5) 「TAB」キーを一回押し、「了解」にフォーカスを合わせ、「Enter」

      (6) 最初の画面に戻ったら、「TAB」キーを二回押し、「Finish」にフォーカスを合わせ、「Enter」

      削除
    2. (追記)
      Bullseye の場合、手順(3)が下記に変更になります。

      (3) 「↓」キーを三回押して「D5 VNC Resolution」にフォーカスを合わせ「Enter」

      削除
    3. さらに、Android アプリケーションの場合、「raspberrypi.local」での指定はできず、
      IPアドレスでの指定が必要になると思われます。

      削除