MKR GSM 1400で実現するリアルタイムIoT圧力監視:Arduino Cloud+Google Sheets連携
部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | センサ読取・前処理担当(計装リーダー) |
| Arduino MKR GSM 1400 | 1 | セルラー通信・クラウド連携担当(通信デバイス) |
| 圧力トランスデューサー(0-150 psi) | 1 | アナログ出力、産業用圧力測定 |
| Adafruit DHT22 温湿度センサ | 1 | 環境監視用 |
| DS3231 RTCモジュール | 1 | 高精度時刻保持 |
| Adafruit ロジックレベルコンバータ(BSS138、4ch) | 1 | I2C 3.3V/5Vレベル変換 |
| 3.7V LiPoバッテリ(2000mAh以上) | 2 | バックアップ電源 |
| 昇圧コンバータ | 1 | バッテリから5V/12V生成 |
| 基礎キット(LED、抵抗、配線等) | 1 | インジケータ等 |
| ブレッドボード | 1 | プロトタイピング用 |
使用アプリ・オンラインサービス
- Google Sheets(データ蓄積・解析・通知)
- Arduino IoT Cloud(デバイス管理・ダッシュボード)
- Arduino Web Editor / Arduino IDE(開発環境)
プロジェクト概要
セルラー回線を使い、遠隔地の産業機器圧力を低コストで監視するプロトタイプです。圧力トランスデューサー→Arduino UNO(アナログ→圧力変換)→シリアル→MKR GSM 1400(セルラーでクラウド送信)→Arduino IoT Cloud→Webhook→Google Sheets(解析・メール通知)というデータフローを構築しています。





ステップバイステップ実装ガイド
Step 1: 圧力トランスデューサー → Arduino UNO
トランスデューサーが圧力をアナログ電圧に変換。UNOがADCで読み取り、校正式でpsi換算します。変換式はYouTube動画(リンク)を参考。
Step 2: UNO → MKR GSM 1400(シリアル通信)
クロス接続(UNO TX→MKR RX、UNO RX→MKR TX、GND共通)。MKRはSerial1ピン(TX/RX)を使用(公式リファレンス参照)。
データ送信トリガー(3パターン)
| モード | 条件 | 頻度/条件 |
|---|---|---|
| 定期送信(NORMAL) | 無条件 | 30分毎(transmitFrequency) |
| 閾値トリガー(HIGH/LOW) | 圧力≤20psi または ≥40psi | 2分以上継続(dtLastTriggerLimit)で送信 |
| デマンドポーリング(DEMAND) | UNOピンA1がHIGH | 手動ボタン、またはMKR側ピンA3(クラウドから制御可)で即時送信 |
UNOスケッチ(InstrumentReader)は、圧力以外にも温湿度、電池電圧等を追加監視可能な構造です。シリアル通信実装ではArduinoフォーラムの「Serial Input Basics」(リンク)を参考にしています。
Step 3: MKR GSM 1400 → Arduino Cloud(セルラー経由)
MKRがUNOからシリアル受信し、Arduino IoT Cloudへ2変数で送信:
dataStringCloud:全データをカンマ区切り文字列でパッケージ化(Google Sheets側でパースしやすくするため)pinCloud:クラウドからMKRを制御するコマンド受信用(1=ローカルLED点灯、2=UNOへデマンドポーリング指示)

MKRスケッチ(CommunicationsDevice)ではSerial1.read()でUNOから受信し、switch(pinCloud)でアクション分岐します。
Step 4: Arduino Cloud → Google Sheets(Webhook)
Google Apps ScriptのdoPost(e)でWebhook受信。設定手順:
- 新規Googleスプレッドシート作成
- ツール→スクリプトエディタで
doPost実装 - 公開→ウェブアプリとして導入:
バージョン「新規」、実行ユーザー「自分」、アクセス「全員(匿名含む)」 - 生成されたURLをArduino CloudのWebhook設定に貼り付け
参考プロジェクト:Arduino IoT Cloud Google Sheets Integration
Step 5: Google Sheetsでデータパース・重複排除・履歴管理
doPost内で:
- JSONペイロードからプロパティ名・値・タイムスタンプ抽出
- ヘッダ行にプロパティ名を動的追加(新規プロパティ自動対応)
- 重複メッセージ除外(タイムスタンプ比較、通信遅延120秒許容)
- 最新行をヘッダ下に挿入、古い行は削除(最大1440行=12時間/30秒間隔)
- 未更新プロパティは前回値を引き継ぎ(または「-」で埋める)
テスト用シート:公開シート(セル色でデータ来源を凡例表示)
Step 6: Google Sheetsでメール通知
2つ目の関数sendEmail()をトリガー(時間主導・毎分実行)で動作:
- 閾値外れ検知(
triggerMonitor= -1)で「Status Change Alert - Outside Setpoints」 - 正常復帰検知(
triggerMonitor= 1)で「Status Change Alert - Normal」 - 60分以上データ未更新で「Alert - Over 60 minutes Since Last Device Update」
- 再開検知で「Alert - Device Started Updating」
- 各アラート最大4回まで送信(スパム防止)

運用実績・コスト
| 項目 | 実績/見積 |
|---|---|
| バッテリ駆動時間 | 約24時間(ディスプレイ/非必須センサ削減で延長可能) |
| データ通信量 | 約0.7 MB/日(送信頻度・ペイロード削減で最適化可能) |
| 総コスト | 約241ドル(内訳:MKR GSM 1400 $70、UNO $22、LiPo×2 $30、ディスプレイ×2 $29、防水ボックス $22、圧力センサ $19、DHT22 $10、RTC $5、昇圧 $5、レベルコンバータ $4、雑費 $25) |
ハードウェア調達先
- Arduino公式ストア(store.arduino.cc)
- Adafruit(adafruit.com)
- Amazon、Harbor Freight、Home Depot
ソースコード
InstrumentReader(Arduino UNO用)
// 圧力読取・閾値判定・シリアル送信・OLED表示・SDカードログ(任意)を含む完全版
// ライブラリ: SPI, Wire, DS3231, DHT, U8glib (Velleman OLED用)
// 詳細は元記事コード欄参照
GoogleSheetsScript.js(Google Apps Script)
// doPost(): Webhook受信・パース・シート書込
// sendEmail(): 閾値/未更新検知メール送信(毎分トリガー)
// 詳細は元記事コード欄参照
CommunicationsDevice(MKR GSM 1400用)
元記事コード欄参照(Serial1使用、pinCloudスイッチ処理、Arduino Cloud変数同期)
回路図

結論
このプロジェクトは、「安価なマイコン2台分担+セルラー通信+ノーコード寄りのクラウド連携(Google Sheets Apps Script)」という、実用的で再現性の高いIoT監視システムのレシピを示しています。産業現場の遠隔圧力監視だけでなく、水位、流量、振動、ガス濃度など、アナログセンサで計測可能なあらゆるパラメータへ横展開可能です。バッテリ駆動時間と通信コストのトレードオフ、冗長性(デマンドポーリング)、データ重複対策、アラート抑制ロジックなど、実運用で直面する課題への具体的解答がコードレベルで示されている点が特に価値があります。
製造プロセス
- Raspberry Pi & HDC2010:I2C温湿度センサー完全セットアップガイド
- BMP180 I2C気圧センサー - Raspberry Pi統合ガイド
- Python/MicroPythonセンサーロガー:センサーデータをGoogleスプレッドシートにシームレス保存
- Raspberry Pi 2からAzure Event HubsへAdafruit 10DOF IMUデータを送信(Windows 10 IoT Core)
- Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
- UnifiedWater v1 - 完全なArduino水質センサーキット
- ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
- ESP32で作るIoT環境モニター:温湿度・気圧・CO2をWebダッシュボードで可視化
- DIY Arduino スマートウォッチ — Apple Watch 風腕時計を自作
- Arduino IoT CloudとAlexaでテレビを音声操作:ステップバイステップガイド
- ADLINKとGoogle Cloudが協業し、シームレスなIoTソリューションを提供