Arduino Megaで写真撮影・Google Drive自動アップロード:PHPoC WiFiシールド活用
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Mega 2560 | 1 | メモリ余裕のためMega推奨 |
| PHPoC WiFi Shield 2 | 1 | WiFi・SSL・WebSocket対応 |
| Seeed Grove シリアルカメラキット | 1 | JPEG出力、UART接続 |
| Seeed Grove ベースシールド | 1 | Groveモジュール接続用 |
| タクトスイッチ | 1 | 撮影トリガー用 |
プロジェクト概要
デモンストレーション
ボタンを押すとカメラで撮影し、Google Driveに自動アップロードされます。
仕組み
- OAuth 2.0認証:PHPoCシールドのWeb UI経由でGoogleアカウントにログインし、
access_tokenを取得(IoTデバイスフロー) - 撮影・アップロード:ボタン押下でカメラからJPEG取得、
access_tokenを用いてGoogle Drive API(multipart upload)でアップロード
セットアップ手順
- Google Developer Consoleでプロジェクト作成、
GOOGLE_CLIENT_IDとGOOGLE_CLIENT_SECRETを取得 - Arduinoコード内のプレースホルダーを置換
login.phpをPHPoCシールドにアップロード(Web UI用)- Arduino IDEでコンパイル・アップロード
- シリアルモニターでPHPoCのIPアドレスを確認
- ブラウザで
https://にアクセスしGoogleログイン/login.php - ボタンを押して撮影→2秒後にGoogle Driveで確認
関数リファレンス(学習用)
Serial.begin/println、delay、millis、for/while/if-else、loop/setup、String操作(toInt, substring, indexOf, remove, equals)など基本関数を使用。
ソースコード
メイン:ArduinoGoogleDrive (Arduino)
PHPoCライブラリ、Arduino_JSONライブラリ、独自のgrove_camera.hを使用。主な処理:
googleDeviceOAuthLogin():デバイスコードフローでOAuth認証、WebSocketで進捗をWeb UIに通知cameraToGoogleDrive():カメラからJPEG取得、multipart/relatedでDrive APIにPOSTisButtonPressed():チャタリング除去付きボタン判定- WebSocketサーバーでブラウザからのログイン要求を受信
login.php (PHP)
PHPoCシールド上で動作するWeb UI。WebSocketでArduinoと通信し、Google認証URLとユーザーコードを表示。認証完了で成功メッセージ表示。
grove_camera.h (C/C++)
Groveシリアルカメラ制御ライブラリ。コマンド送信、JPEG撮影、パケット分割読み出し(512バイト/パケット)を実装。
回路図
配線図が提供されています。カメラはSerial1(TX1/RX1)接続、ボタンはD2、PHPoCシールドはSPI接続。
製造プロセス
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- 音声で家電を操作:GoogleアシスタントとBluetoothでArduino家電制御
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- Google、ADTに4.5億ドル投資しIoTセキュリティ普及を加速