M5Cameraで定期撮影して、写真をGoogle Driveに自動アップロードする

#はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/2523150d-95d3-81ec-8134-382529d695b6.png)

200万画素(1600 x 1200)のカメラユニットを搭載しているM5CameraをArduinoでプログラムして、15秒に一回撮影し、Google Driveに自動アップロードするようにします。

M5Cameraについては下記を参照
[M5Camera - 通常レンズ (4MB PSRAM搭載)](https://docs.m5stack.com/#/ja/unit/m5camera)
[ESP32Cam/M5Camera クイックスタート](https://docs.m5stack.com/#/ja/quick_start/m5camera/m5camera_quick_start)
[M5Camera をレビューしてみた。分解したり、Arduino IDE でスマホに映したりする実験](https://www.mgo-tec.com/blog-entry-m5camera-arduino.html/3#title05)
#必要部材
| 製品       |      説明|    URL    |
|:-----------------|:-----------------|:------------------|
| M5Camera             |カメラユニット |http://ssci.to/5207     |
| Google Drive             |Googleが提供しているクラウドのファイル管理サービス|https://drive.google.com/drive/|

#参考サイト
[M5CameraでGoogle Driveにアップロードする](http://blog.nyancotech.online/2019/02/m5cameragoogle-drive.html)

#ソースコード

https://github.com/MypaceEngine/m5camera-arduino-googleDrive

参考サイトで掲載されているオリジナル版からの変更点は下記
- Googleの証明書が古く通信できない状態だったので新しくしました。
- Google Driveのフォルダへのアップロードに対応しました。
- 起動時にNTPサーバから時刻を取るようにしました。
- ファイル名に日付を入れるようにしました。
- 15秒ごとに定期撮影するようにしました。

#作成手順
##M5CameraとArduinoの準備
1. M5Cameraをパソコンにつなぎましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/fe84ec73-76f0-20a1-8029-98485b60ca6d.png)

2. Arduino IDEを開き、環境設定をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/b33f0cb1-ce74-460f-e799-b19ee0cd0a58.png)

3. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/8fd887e3-d2b1-91bb-c09f-500f745d6e92.png)をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/be7dfa2e-7c52-8e36-f6b6-a4190e00dc86.png)

4. 下記を入力して、OKを押す。
https://dl.espressif.com/dl/package_esp32_index.json
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/ab28a377-b63b-ebbe-540c-ea6da90d10f2.png)

5. OKをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/2f203ef8-d748-f7fc-64f1-b5fdcd5eea89.png)

6. [ツール]-[ボード]-[ボードマネージャ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/9d253d58-7a5e-b4bd-c3b8-4a57e157b55e.png)

7. 情報の読み込みに時間がかかるのでしばらくまつ。赤枠の部分で読み込みに処理が表示されなくなるまでまつ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/8d62219c-b14f-a625-08ae-68c403ebe457.png)

8. esp32と入力し、インストールをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/55e528e6-08d0-42b2-bc98-aa63ce914005.png)

9. 下の進捗が消え、インストール中が消えるまで待つ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/415eb4f2-4d5c-177d-8451-5d17519af17c.png)
下記のようになったら、[閉じる]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/792b618c-a4d2-29d5-9879-b762a0e614bc.png)


10. [ツール]-[ボード]-[ESP32 Wrover Module]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/685ed7a5-927c-9258-279c-bf1c7d9ebf8a.png)

11. [ツール]をクリックし、各項目を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/6d980074-474e-3e43-3158-7ce14b0b4517.png)

| 項目       |      設定 |
|:-----------------|:------------------|
| ボード            |ESP32 Wrover Module |
| Upload Speed      |              921600|
| Flash Frequency   |    80MHz |
| Flash Mode        |  QIO|
| Partition Scheme  |  Huge APP (3MB No OTA/1M APIFFS)|
| Core Debug Level|              なし|
| シリアルポート   |   ESP32 WROVER ( M5Camera )のUSBポート|
|書込装置           |              USBasp|

##Google Driveのフォルダ準備
1. Google Driveに画像ファイルをアップするフォルダを作るため、下記にアクセスします。
https://drive.google.com/drive/
左上の![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/3ed302b2-a61d-f56f-0456-157f56484eb4.png)をクリックした後、フォルダをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/12897327-d900-7f9b-0fe8-1dc3dd799c01.png)

2. フォルダ名を入力して、作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/39422dc3-2977-3101-7293-53d04b3c71c4.png)

3.フォルダ(下記ではTest)をダブルクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/0cfb6887-4bae-409a-304b-9eb49464ab01.png)

4.https://drive.google.com/drive/u/1/folders/よりも後の文字列をメモしておきます。
文字列はメモ帳にでも貼っておいてください。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/3a360ca6-6f4d-609e-7be4-d623cd187a9f.png)

##ソースの用意　
1. 下記にブラウザ(chromeでOK)でアクセスして、[Clone or Download]をクリックして、[Download ZIP]をクリックする。
https://github.com/MypaceEngine/m5camera-arduino-googleDrive
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/9478fbae-4b65-c619-0adb-421a89eff2c7.png)
　
2. m5camera-arduino-googleDrive-master.zipを展開して、フォルダ名をm5camera-arduino-googleDrive-masterからm5camera-arduino-googleDriveにする。
　
3. [ファイル]-[開く]をクリックし、m5camera-arduino-googleDrive\m5camera-arduino-googleDrive.inoを選択
　
4. 57行目くらいにある設定を編集

| ソース       |       変更内容 |
|:--------------------|:-----------------|
| String ssid = "SSID";             |  あなたのWIFIのSSIDをSSIDの部分に置き換えてください |
| String pass = "PASSWORD";            | あなたのWIFIのパスワードをPASSWORDの部分に置き換えてください |
| String folderid="FOLDERID";             | Google Driveのフォルダ準備でメモした番号をFOLDERIDに書いてください。 |

##Google DriveへのM5Cameraでのアクセス設定
Google DriveにM5Cameraがアクセスするための設定が必要です。
1. Google Developers Consoleを開く
https://console.developers.google.com/
　
2. 左上のプロジェクトの選択をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/d34b77e4-3c46-66bc-54ca-9b48ea4134fd.png)
　
3. 右上の新しいプロジェクトをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/4503d7a5-74f0-91a7-37b3-5f24bdeb754f.png)
　
4. 好きなプロジェクト名を入力し、作成を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/d7631bb1-0582-1b11-4342-462d6a76405e.png)
　
5. [認証情報]をクリック、[認証情報を作成]-[OAuthクライアントID]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/1dc23fce-2f76-439d-f80c-20e92b85eba1.png)

6. [その他]を選択し、名前に好きな名前を設定して、作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/8536bda0-4da4-2fa7-2e12-6ed91b60dd43.png)

7. クライアントIDとクライアントシークレットをメモしておく。
メモ帳にでも貼っておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/485f7936-9821-9f22-b252-ddfe9b6dbc9d.png)

##書き込み
1. [スケッチ]-[マイコンボードに書き込む]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/93ca8af4-e643-6273-a63a-2fa0c05d96da.png)

##M5Cameraの設定
1. [ツール]-[シリアルモニタ]をクリック
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/b511f0d0-b789-42a3-6cc0-f66b5000a148.png)
2. Client ID?が表示されたら、先ほど取得したクライアントIDを入力して、リターンキーを押す。
3. Please access to https://accounts.google.com/o/oauth2/auth?client_id=が表示されたら
　https://accounts.google.com/o/oauth2/auth?client_id=で始まるURLにブラウザでアクセスして、許可をする。
4. Code?が表示されているので、ブラウザ上に表示されたIDを入力をして、リターンキーを押す
5. Client secret?が表示されているので、先ほど取得したクライアントシークレットを入力して、リターンキーを押す。

#最後に
Google DriveとWIFIの設定があっていれば、Google Driveにファイルがアップされていくと思います。
Google DriveからGoogle Photoに画像をアップしたい場合は、[Google ドライブの写真や動画を Google フォトに追加する](https://support.google.com/photos/answer/6156103?co=GENIE.Platform%3DAndroid&hl=ja)を参照してください。