Мгновенное GPS-трекинг Arduino MKR GSM 1400 по SMS
Компоненты
- Arduino MKR GSM 1400 — 1 шт.
- GSM-антенна — 1 шт.
- LiPo-аккумулятор (JST) — 1 шт. (опционально, для пиковых токов GSM)
- SIM-карта с данными — 1 шт.
- Смартфон для отправки SMS — 1 шт.
О проекте
Внимание: Урок может быть устаревшим. Актуальную версию ищите на официальном сайте Arduino.
Проект демонстрирует базовую станцию (Cell ID) локализацию MKR GSM 1400. При получении SMS с буквой «L» (ASCII 76) плата определяет координаты через базу данных ячеек оператора (u-blox) и отвечает SMS со ссылкой на Google Maps.
Как это работает
- Библиотека
MKRGSM.hуправляет GSM, SMS, локализацией (GSMLocation). - Нет GPS-приемника! Координаты = положение базовой станции, обслуживающей модуль.
- Город: высокая точность (малая зона ячейки).
- Село: низкая точность (большая зона).
- Проверка пароля:
if (c != 76)— только символ «L» запускает локализацию. Меняйте 76 на другой ASCII-код для другой буквы. - Ссылка:
https://www.google.com/maps/place/.,
Скетч (ключевые части)
#include
#include
#include "arduino_secrets.h" // PIN, APN, LOGIN, PASSWORD
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";
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;
}
}
}
void connectNetwork() {
bool status = false;
gprs.setTimeout(100000);
gsmAccess.setTimeout(100000);
while (!status) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY &&
gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY) {
status = true;
} else delay(1000);
}
}
void setup() {
connectNetwork();
location.begin();
}
void loop() {
measureLocation();
unsigned long timeout = millis();
while (millis() - timeout < 5000) {
if (sms.available()) {
char senderNumber[20];
sms.remoteNumber(senderNumber, 20);
int 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(); // переподключение
}
Как использовать
- Соберите железо: антенна, SIM, LiPo (опц.).
- Заполните
arduino_secrets.h(PIN, APN, user, pass оператора). - Загрузите скетч, ждите подключения к GSM (~30 сек).
- Отправьте SMS на номер SIM-карты с текстом «L».
- Получите ответ с Google Maps ссылкой.
Особенности
- Глубокий сон (60 сек) между проверками — низкое потребление.
- Таймауты AT-команд увеличены (100 сек) для устойчивости связи.
- Точность зависит от плотности базовых станций.
Производственный процесс
- Почему слегка больший дизайн может ускорить инновации и снизить риски
- Интеграция метеостанции с CWOP: практическое руководство
- Освоение PSoC 6 Pioneer Board с IoT Add-On Shield: руководство разработчика
- Как внедрить QR-коды в CMMS: пошаговое руководство
- Почему чемоданы из углеродного волокна — лучший апгрейд для путешественников
- Максимизация ROI от IoT-инвестиций: практическое руководство
- Вебинар Techman Robot: продвинутые коботы и системы зрения для автоматизации производства
- 7 проверенных стратегий снижения затрат на производство печатных плат
- Повышение эффективности фермы за счет проактивного обслуживания
- Максимизация стоимости: стратегии продажи или перепрофилирования б/у тяжелой техники