산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 MKR GSM 1400 즉석 GPS 추적: SMS로 위치 요청 및 수신

부품 및 소모품

아두이노 MKR GSM 1400 1개

프로젝트 소개

참고: 이 튜토리얼은 구버전일 수 있습니다. 최신 버전은 여기를 참조하세요.

아두이노 MKR GSM 1400의 셀룰러 기반 위치 파악 기능을 시연합니다. 보안 문자('L')가 포함된 SMS 수신 시 위도/경도를 구글 맵 링크로 회신하는 간단한 애플리케이션을 구현했습니다.

필요 물품

하드웨어 설정

특별한 조립 불필요. 보드에 안테나 연결, SIM 카드 삽입, 리포 배터리를 JST 커넥터에 연결하세요. 리포 배터리는 선택 사항이나, 커버리지가 나쁜 지역에서 GSM 모듈의 순간 전류 피크를 감당하는 데 도움이 됩니다.

아두이노 MKR GSM 1400 즉석 GPS 추적: SMS로 위치 요청 및 수신

작동 원리

MKRGSM 라이브러리로 SMS 관리와 셀 기반 지오레퍼런싱을 수행합니다.

  1. SMS 수신 시 내용에 문자 'L'(ASCII 76)이 있는지 확인. 일치할 때만 위치 측정 및 회신. (`if (c != 76)` 조건으로 구현, 값 변경 시 다른 문자로 변경 가능)
  2. GSM 모듈에 GPS 수신기는 없지만, 제조사가 GSM 셀 타워 위치 데이터베이스를 보유해 셀 ID 기반 좌표 제공. 도심(셀 반경 작음)에서 정확도 높음, 농촌(셀 반경 큼)은 근사치.
  3. 구글 맵 URL 형식: `https://www.google.com/maps/place/,` 형태로 생성. 표시 위치는 셀 타워 물리적 위치이며, 보드는 해당 셀 커버리지 반경 내에 존재.

스케치 상세

라이브러리 및 초기화

// GSM 라이브러리 포함
#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;

웹 에디터 사용 시 `arduino_secrets.h` 파일에 PIN, APN, 사용자, 비밀번호 입력 (Secrets 탭에서 설정).

위치 측정 함수 `measureLocation()`

// 전역 변수
String GSMlatitude = "0.000000";
String GSMlongitude = "0.000000";

// 셀룰러 네트워크로 좌표 조회, 정확도 300m 미만이고 0이 아닐 때 갱신, 45초 타임아웃
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;
    }
  }
}

네트워크 연결 함수 `connectNetwork()`

void connectNetwork() {
  bool status = false;
  gprs.setTimeout(100000);
  gsmAccess.setTimeout(100000); // AT 명령 타임아웃 설정 (UART 통신 동결 복구용)
  
  while (status == false) {
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & 
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
      status = true;
    } else {
      delay(1000);
    }
  }
}

Setup

void setup() {
  connectNetwork();  // 데이터 연결 수립
  location.begin();  // 위치 서비스 시작
}

메인 루프

void loop() {
  int c;
  String response;
  String messager = "";
  
  measureLocation();  // 위치 측정
  
  unsigned long timeout = millis();
  while (millis() - timeout < 5000) {  // 5초간 SMS 대기
    if (sms.available()) {
      char senderNumber[20] = {"0"};
      sms.remoteNumber(senderNumber, 20);  // 발신자 번호 획득
      int c = sms.read();
      
      if (c != 76) {  // 'L'이 아니면 무시
        sms.flush();
        break;
      }
      
      // 구글 맵 링크 생성 및 회신
      String txtMsg = "https://www.google.com/maps/place/" + GSMlatitude + "," + GSMlongitude;
      sms.beginSMS(senderNumber);
      sms.print(txtMsg);
      sms.endSMS();
      break;
    }
  }
  
  // 저전력 모드: GSM 모듈 종료 후 60초 딥슬립
  gsmAccess.shutdown();
  LowPower.sleep(60000);
  connectNetwork();  // 재연결
}

사용 방법

  1. 하드웨어 연결 (위 참조)
  2. 스케치에 접속 인증 정보 입력 후 업로드
  3. GSM 네트워크 연결 대기 (약 30초)
  4. MKR GSM 1400의 SIM 번호로 문자 'L' 전송 → 위치 링크 수신

제조공정

  1. 약간 더 큰 설계가 혁신을 가속화하고 위험을 줄이는 이유
  2. 기상 관측소를 CWOP와 통합하기: 실용 가이드
  3. PSoC 6 파이오니어 보드와 IoT 애드온 실드 마스터하기: 개발자 가이드
  4. CMMS에 QR 코드 구현하기: 단계별 가이드
  5. 여행자를 위한 궁극의 업그레이드, 카본파이버 러기지 세트
  6. IoT 투자 ROI 극대화: 실용 가이드
  7. 테크만 로봇 자동화 웨비나: 고급 코봇 및 비전 시스템으로 생산 자동화 구현
  8. PCB 생산 비용 절감을 위한 7가지 검증된 전략
  9. 농장 운영, 능동적 유지보수로 효율성 높이기
  10. 중고 중장비 가치 극대화: 매각 및 용도 전환 전략