GoPiGo3のRaspberryPiをPCから操作する


GoPiGoでロボットプログラミングを行うには、PCとGoPiGoのRaspberryPiを接続してPCからリモートで作業を行うようにすると楽です。PCとRaspberryPiを接続する方法としてはSSH接続とVNC接続があります。本記事ではその両方について解説していきます。

本記事ではGoPiGo3に搭載されているRaspberryPiとの接続を前提としていますが、基本的には通常のRaspberryPiとの接続と変わりません。(ただし、RaspverryPi側でSSH接続とVNC接続を有効に設定にしておく必要があります。)

# 環境
- PC
    - Windows10
- GoPiGo3
    - RaspberryPi model B
    - Ubuntu Mate

# 準備
- RaspberryPiとPCを同一LAN内に接続し、IPアドレス(又はホスト名)をメモしておきます。
- RaspberryPi側で、SSH接続とVNC接続を有効に設定しておきます。
    - ただし、GoPiGo3はデフォルトでSSH接続とVNC接続が有効になっているようです。
- PCにTera TermとVNC Viewerをインストールしておきます。
    - Tera Term：[OSDN Tera Term Home Page](http://ttssh2.osdn.jp/)
    - VNC viewer：[REALVNC VNC viewer](https://www.realvnc.com/en/connect/download/viewer/)

- RaspberryPiにtightvncserverをインストールしておきます。

```
$ sudo apt-get install tightvncserver
```

#SSH接続
1. PC側でTera Termを開き、ホスト欄にRaspberryPiのホスト名またはIPアドレスを入力します。
![ssh_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/b6d59d9e-2fc6-d404-2488-e972db30031e.png)

2. RaspberryPiのユーザ名(デフォルトではpi)とパスワードを入力します。
![ssh_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/d63376d0-8f51-1026-7b83-f068d6289025.png)

3. 成功すると、ターミナルからRaspverryPiの操作が可能になります。
![ssh_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/f35046c5-668b-6004-8410-c1362666453b.png)


# VNC接続
1. RaspberryPi側でtightvncserverを起動します。このとき、前述のSSH接続でPCから操作を行うか、あるいは後述の自動起動スクリプトを用いて起動します。

2. PCからVNC Viewerを起動します。ウィンドウの上の入力欄にRaspberryPiのIPアドレスとポート番号を入力します。ポート番号は大抵の場合5901又は5902です。(例:192.168.0.1:5901)
![vnc_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/eae04d27-e24e-c39b-16bc-82f21faa8c38.png)


3. 接続に成功すると、RaspberryPiのパスワードを求められるので、入力します。
![vnc_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/777086fe-16ed-50c5-49c7-be9b992ed1b2.png)


4. ログインすると、デスクトップが表示されます。
![vnc_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683349/9de458b9-a17b-72f2-4abd-3a7d6849b997.png)


# tightvncserverを自動で起動させる方法
RaspberryPi起動時に自動でtightvncserverを起動するようにするには、スクリプトを書いて設定します。
`/etc/init.d/`下にvncbootという名前のファイルを作成し、中身を以下のように編集します。ウィンドウサイズ等も好みに設定できます。
スクリプトはこちらのサイト[(Raspberry PiのVNCサーバーの自動起動の設定と自分のローカルIPの自動メール送信設定で捗るVNCライフ)](https://relativelayout.hatenablog.com/entry/2016/08/20/144804)からお借りしました。

```shell:vncboot
#! /bin/sh    

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

# /etc/init.d/vncboot

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
    start)
        echo "Starting VNC Server"
        #Insert your favoured settings for a VNC session
        su $USER -c '/usr/bin/vncserver :1 -geometry 1280x720 -depth 24'
        ;;

    stop)
        echo "Stopping VNC Server"
        su $USER -c '/usr/bin/vncserver -kill :1'
        ;;

    *)
        echo "Usage: /etc/init.d/vncboot {start|stop}"
        exit 1
        ;;
esac

exit 0
```

スクリプトの実行権限を変更し、自動起動するように設定します。

```bash
$ sudo chmod 755 /etc/init.d/vncboot
$ sudo update-rc.d vncboot defaults
```

RaspberryPiを再起動し、VNC Viewerから接続できれば完了です。

# 参考記事
[Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続する](https://qiita.com/mascii/items/7d955395158d4231aef6)

[Raspberry PiのVNCサーバーの自動起動の設定と自分のローカルIPの自動メール送信設定で捗るVNCライフ](https://relativelayout.hatenablog.com/entry/2016/08/20/144804)

[へたれオヤジのＧｏＰｉＧｏ３]
(https://qiita.com/fwakame/items/aa08d58c14c13adca691)