Raspberry Pi 4 + VPNで外出先からカメラ映像をスマホで見る方法

## **必要なもの**

- **Mac**  (初期設定用)
- **USBキーボード**  (初期設定用)
- **USBマウス** (初期設定用)
- **モニター** (初期設定用)
- **Raspberry Pi 4 Model B 4GB**
- **Raspberry Pi Camera Module V2**
- **microSDカード** (32GB)
- **スマートフォン**

## **【第1段階】MacでSDカードの準備**

### 1-1. Raspberry Pi Imagerのインストール
Macで作業

1. Macで https://www.raspberrypi.org/software/ にアクセス
2. 「Download for macOS」をクリック
3. ダウンロードした.dmgファイルを開く
4. Raspberry Pi Imagerをアプリケーションフォルダにドラッグ

### **1-2. OSの書き込み（重要：Legacy 32-bit版を選択）**

Macで作業

1. microSDカードをMacに挿入
2. Raspberry Pi Imager**を起動
3. 「CHOOSE OS」をクリック
4. 「Raspberry Pi OS (other)」を選択
5. 「Raspberry Pi OS (Legacy, 32-bit)」を選択
6. 「CHOOSE STORAGE」 → microSDカードを選択
7. 「編集」をクリック（10分程度で完了）

一般設定

- ユーザー名: 任意（例：pi）
- パスワード: 覚えやすいもの（メモ必須）
- Wi-Fiネットワーク: 自宅のWi-Fi名
- Wi-Fiパスワード: 自宅のWi-Fiパスワード
- 地域設定: Japan

サービス設定

- SSH有効化:  チェック（後でTailscale設定時に便利）
- VNC有効化:  チェック（後でスマホ接続時に便利）

### Step 3: 保存して書き込み

1. 保存をクリック
2. 書き込みを実行
3. 完了後、SDカードを取り出す


## 【第2段階】Raspberry Pi 4の起動と基本設定

### **2-1. 機器の接続**

**Raspberry Piで作業**

1. Camera Module V2をRaspberry Pi 4のカメラポートに接続
2. SDカードをRaspberry Pi 4に挿入
3. HDMIケーブルでモニターに接続
4. キーボード・マウスをUSBポートに接続
5. 電源アダプターを最後に接続

![ラズパイ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256115/851d083d-dfd9-46f6-83cb-30bdc5ca7c07.jpeg)


### **2-2. 初回起動設定**

**Raspberry Piのデスクトップで作業**

1. 電源投入後、**初期設定ウィザード**が開始　
    1. スキップされて夕日の画面になることがある。そしたら第３段階にスキップ
2. **国/言語**: 日本/Japanese選択
3. **Wi-Fi設定**: 自宅のWi-Fiネットワークを選択してパスワード入力
4. **ユーザー設定**: ユーザー名とパスワードを設定
4. **更新**: 「Update Software」で最新状態にする（15分程度）
7. **再起動**完了後、デスクトップが表示される


## **【第3段階】Camera Module V2の設定**

### **3-1. カメラの有効化**

**Raspberry Piのターミナルで作業**

1. **Raspberry Piのデスクトップ**で**ターミナル**を開く（画面左上の黒いアイコン）
2. **Raspberry Piのターミナル**で以下を入力してEnter：
    
    ```bash
    sudo raspi-config
    
    ```
    
3. **矢印キー**で移動、**Enterキー**で選択
4. **「Interface Options」** → **「Legacy Camera」** → **「Yes」**
5. **「OK」** → **「Finish」** → 「Yes」で再起動

### **3-2. カメラ動作確認**

**Raspberry Piのターミナルで作業**
再起動後、**Raspberry Piのターミナル**で
```bash
vcgencmd get_camera
```

**supported=1 detected=1**と表示されればOK

---

## **【第4段階】カメラ映像プログラムの準備**

### **4-1. OpenCVのインストール**

右上のwifi設定でネット接続できているか確認する

**Raspberry Piのターミナルで作業：Raspberry Piのターミナル**で以下を**順番に**実行

```bash
sudo apt update

```

```bash
sudo pip3 install opencv-python==4.5.1.48
```

```bash
sudo apt install libatlas3-base
```

### **4-2. カメラテストプログラムの作成**

**Raspberry Piのデスクトップで作業**

1. **Raspberry Piのデスクトップ**でホームフォルダ内で右クリック → **「Create Folder」** → フォルダ名「**camera**」
2. **camera**フォルダをダブルクリックで開く
3. フォルダ部分で右クリック → **「Open Terminal Here」**

**Raspberry Piのターミナルで作業**
4. **Raspberry Piのターミナル**で以下を入力

```bash
nano camera_test.py
```

**nanoエディター内で作業**
5. **nanoエディター**で以下のコードを**コピー&ペースト**
```python
import cv2

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))

while True:
    ret, frame = cap.read()
    if not ret:
        break

    cv2.imshow("Camera", frame)
    key = cv2.waitKey(1)

    # Escキーで終了
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows()

```

1. **Ctrl+X** → **Y** → **Enter**で保存してnanoエディターを終了

### **4-3. カメラ映像テスト**

**Raspberry Piのターミナルで作業：Raspberry Piのターミナル**で

```bash
python3 camera_test.py
```

- カメラ映像ウィンドウが表示されることを確認
- **Escキー**で終了

![IMG_8446.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256115/f95a1793-e6d4-4abe-a0cf-3818cc18e384.jpeg)

---

## **【第5段階】Tailscaleの設定**

### **5-1. Tailscaleアカウント作成**

**💻 Macで作業**

1. **Mac**で https://tailscale.com にアクセス
2. *「Get started for free」**をクリック

![CleanShot 2025-05-23 at 20.33.53@2x.png](attachment:01e275d1-f687-44e6-ab65-b984dced31fa:CleanShot_2025-05-23_at_20.33.532x.png)

**3. Googleアカウント**でサインアップ

1. アカウント作成完了

### **5-2. Raspberry PiにTailscaleインストール**

**Raspberry Piのターミナルで作業：Raspberry Piのターミナル**で：

```bash
curl -fsSL https://tailscale.com/install.sh | sh
```

```bash
sudo tailscale up
```

### **5-3. 認証**

**Raspberry Piのターミナルで作業：**

1. **Raspberry Piのターミナル**画面に表示される**URL**（https://login.tailscale.com/...）をコピー

**Macで作業：**
2. **Mac**のブラウザでそのURLにアクセス
3. Tailscaleアカウントでログイン
4. 「Authorize」をクリックしてRaspberry Piを承認

### **5-4. Raspberry PiのIPアドレス確認**

**Raspberry Piのターミナルで作業：Raspberry Piのターミナル**で

```bash
tailscale ip -4
```

表示されたIPアドレス（例：**100.64.1.2**）を**メモ**


## **【第6段階】VNCの設定**

### **6-1. VNCの有効化**

**Raspberry Piのターミナルで作業：Raspberry Piのターミナル**で：

```bash
sudo raspi-config
```

1. **「Interface Options」** → **「VNC」** → **「Yes」**
2. **「OK」** → **「Finish」**


## **【第7段階】スマホからアクセス**

### **7-1. スマホアプリのインストール**

**スマートフォンで作業：**

1. **Tailscaleアプリ**をインストール
    - **iPhone**: App Store「Tailscale」
    - **Android**: Google Play「Tailscale」
2. **VNC Viewerアプリ**をインストール
    - **iPhone**: App Store「VNC Viewer」
    - **Android**: Google Play「VNC Viewer」

### **7-2. Tailscale接続**

**スマートフォンのTailscaleアプリで作業**


1. **Tailscaleアプリ**を開く
2. 作成したアカウントでログイン
3. 自動的にRaspberry Piが表示される

### **7-3. VNC接続設定**

**スマートフォンのVNC Viewerアプリで作業**

**iPhone:**

1. **App Store**を開く
2. 「VNC Viewer」で検索
3. 「RealVNC Ltd」製のアプリをインストール
4. **VNC Viewerアプリ**を開く
5. +をタップ
6. **Address**: メモしたIPアドレス（例：100.64.1.2）
7. **Name**: RaspberryPi
8. **CREATE**をタップ

### **7-4. カメラ映像の確認**

**スマートフォンのVNC Viewerアプリで作業：**

1. 作成した接続をタップ
2. ラズパイのユーザー名・パスワードを入力
3. **ラズパイのデスクトップがスマホに表示**

![IMG_8450.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256115/742b762a-abc4-4437-b3f6-d6a4ae2f77de.png)

**スマートフォン上でRaspberry Piのターミナルを操作**
4. スマホ画面内のラズパイデスクトップでターミナルを開く
5. **スマホ上のRaspberry Piターミナル**で以下を実行


```bash
#カメラのディレクトリに移動
cd camera
#実行
python3 camera_test.py
```






1. **スマホにカメラ映像が表示された！**

![IMG_8451.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256115/1d2eee74-81e2-4f63-822f-11a7c0dbfd28.png)


## **【完了】外出先からの利用**

### **使用方法**

**スマートフォンで作業**

1. **スマホのTailscaleアプリ**を起動
2. **スマホのVNC Viewerアプリ**でRaspberryPiに接続
3. スマホ上でカメラプログラムを実行
4. **どこからでもカメラ映像を確認可能**

### **作業場所の凡例**

- **Mac**：あなたのMacコンピュータ
- **Raspberry Pi**：Raspberry Pi本体（モニター・キーボード接続）
- **スマートフォン**：iPhone/Androidスマホ
- **エディター**：nano等のテキストエディター内

### **構成図**
![CleanShot 2025-05-24 at 00.18.08@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256115/1ddfa0e2-a5fb-4812-b63a-733d5b73b10b.png)