工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino MKR GSM 1400でSMS経由の即時GPS追跡

部品と用品

Arduino MKR GSM 1400 ×1

このプロジェクトについて

注意: このチュートリアルは古い可能性があります。最新版はこちらを参照してください。

Arduino MKR GSM 1400のセルラー網ベース位置特定機能をデモします。SMSで特定の文字 (デフォルト「L」) を受信すると、現在地の緯度・経度を含むGoogle Mapsリンクを返信します。

必要なもの

ハードウェアセットアップ

アンテナ接続、SIM挿入、LiPoバッテリーをJSTコネクタに接続するだけ。バッテリーは任意だが、電波弱い場所でのピーク電流対策に推奨。

仕組み

MKRGSMライブラリでSMS管理とセルラー位置特定を実装。SMS受信時、内容に「L」(ASCII 76) が含まれる場合のみ位置特定・返信を実行。パスワード機能で不正アクセス防止。

MKR GSM 1400にはGPS受信機がないが、u-bloxモジュールが基地局データベースを持ち、セルIDから座標を推定。都市部では高精度、郊外では基地局カバレッジが広いため粗い精度。

Google Maps URL形式: https://www.google.com/maps/place/<LAT>,<LONG>。表示位置は基地局の物理位置で、デバイスはその半径内に存在。

スケッチ詳細

ライブラリと初期化

#include <MKRGSM.h>
#include "ArduinoLowPower.h"

char PINNUMBER [] = SECRET_PINNUMBER;
char GPRS_APN[] = SECRET_GPRS_APN;
char GPRS_LOGIN [] = SECRET_GPRS_LOGIN;
char GPRS_PASSWORD[] = SECRET_GPRS_PASSWORD;

GPRS gprs;
GSM gsmAccess;
GSM_SMS sms;
GSMLocation location;

String GSMlatitude = "0.000000";
String GSMlongitude = "0.000000";

機密情報は arduino_secrets.h またはWeb EditorのSecretsタブで管理。

位置取得関数


void measureLocation() {
  unsigned long timeout = millis();
  while (millis() - timeout < 45000) {
    if (location.available() && location.accuracy() < 300 && location.accuracy() != 0) {
      GSMlatitude = String(location.latitude(), 6);
      GSMlongitude = String(location.longitude(), 6);
      break;
    }
  }
}

45秒以内に精度300m未満の測位が得られたらグローバル変数更新。得られなければ前回値を維持。

ネットワーク接続関数


void connectNetwork() {
  bool status = false;
  gprs.setTimeout(100000);
  gsmAccess.setTimeout(100000);
  while (status == false) {
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & 
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
      status = true;
    } else {
      delay(1000);
    }
  }
}

ATコマンドタイムアウトを長めに設定し、UARTフリーズから復旧可能に。

セットアップとメインループ


void setup() {
  connectNetwork();
  location.begin();
}

void loop() {
  int c;
  String response, messager = "";
  measureLocation();
  unsigned long timeout = millis();
  while (millis() - timeout < 5000) {
    if (sms.available()) {
      char senderNumber[20] = {"0"};
      sms.remoteNumber(senderNumber, 20);
      c = sms.read();
      if (c != 76) { sms.flush(); break; } // 'L'以外は無視
      String txtMsg = "https://www.google.com/maps/place/" + GSMlatitude + "," + GSMlongitude;
      sms.beginSMS(senderNumber);
      sms.print(txtMsg);
      sms.endSMS();
      break;
    }
  }
  gsmAccess.shutdown(); // GSMモジュール電源オフ
  LowPower.sleep(60000); // 60秒ディープスリープ
  connectNetwork(); // 再接続
}

使い方

  1. ハードウェア接続、認証情報をスケッチに反映、ボードに書き込み
  2. GSMネットワーク接続確立まで約30秒待機
  3. MKR GSMのSIM番号宛に「L」とだけ書いたSMSを送信
  4. 位置特定処理が走り、Google Mapsリンク付きSMSが返信される

製造プロセス

  1. CMMSへのQRコード導入:ステップバイステップガイド
  2. 中古重機の価値最大化:売却・再活用の戦略的アプローチ
  3. わずかに大きな設計がイノベーションを加速しリスクを減らす理由
  4. 気象観測ステーションをCWOPと統合:実践ガイド
  5. PSoC 6 Pioneer BoardとIoT Add-On Shieldを極める:開発者向けガイド
  6. 3Dプリントパーツを彫刻フィラーで素早くラベル付け:実証済みの簡単手法
  7. テックマン・ロボットのウェビナー:高度コボットとビジョンシステムで生産自動化を実現
  8. PCB製造コストを削減する7つの実証済み戦略
  9. 農場運営をプロアクティブメンテナンスで強化する
  10. IoT投資のROIを最大化する:実践ガイド
  11. カーボンファイバー製ラゲッジセット - 現代トラベラーの究極のアップグレード