Локализуйте вашу доску с помощью SMS
Компоненты и расходные материалы
| × | 1 |
Об этом проекте
Примечание. Это руководство может быть устаревшим, перейдите здесь для более актуальной версии .
Цель этого проекта - показать, как использовать сотовую локализацию Arduino MKR GSM 1400. Для этого мы реализовали простое приложение, которое позволяет вам повторно определять широту и долготу MKR GSM при отправке SMS с проверкой безопасности. письмо получено. Номер отправителя восстанавливается из полученного SMS, и создается ответ с соответствующей ссылкой на Google Maps, дополненной координатами, предоставленными службами определения местоположения, предоставляемыми модулем u-blox.
Что вам нужно
Проект основан на Arduino MKR GSM 1400, антенне, аккумуляторной батарее LiPo, смартфоне и одной SIM-карте для передачи данных.
- Arduino MKR GSM 1400 выполняет эскиз и поддерживает соединение GSM, что позволяет выполнять функции локализации, необходимые для нашего проекта;
- Антенна и аккумулятор соответственно используются для подключения к сотовой сети передачи данных с хорошим сигналом и для питания устройства, когда другие источники питания недоступны;
- Смартфон необходим для отправки SMS на MKR GSM 1400 и запроса локализации GPRS;
- SIM-карта необходима для доступа к сети передачи данных и обеспечения работы сети;
- Для подключения к сети передачи данных требуются PIN-код, APN и учетные данные.
Настройка оборудования
Этот проект не требует ничего особенного. Подключите к плате антенну, вставьте SIM-карту и подключите LiPo аккумулятор к разъему JST.
Батарея LiPo не является обязательной, но она позволяет справляться с пиковыми токами, которые могут потребоваться модулю GSM в определенных условиях плохого покрытия.
Как это работает
В этом проекте используется библиотека MKRGSM для управления SMS-сообщениями и географической привязкой на основе ячеек.
При получении SMS-сообщения его содержимое проверяется на наличие буквы «L». Только в этом случае скетч переходит к локализации и отправке СМС. С помощью этого решения любой номер может запросить местоположение системы, но только тот, кто знает пароль («секретное письмо») получит ответ. Это строка, которая проверяет if (c! =76)
76 - это ASCII-код буквы "L". Вы можете изменить значение, чтобы изменить распознанную букву.
В модуле GSM нет приемника GPS, но у производителя есть база данных местоположения каждой соты сети GSM, и поэтому он предоставляет координаты для каждого предоставленного идентификатора соты. Эта система довольно точна в городских условиях, где каждая ячейка покрывает небольшой участок. В сельской местности покрытие каждой соты намного больше, а местоположение указано с более грубым приближением.
Чтобы создать ссылку для Google Maps, мы используем стандартный URL-адрес, где мы просто объединяем правильные значения Long и Lat в конце. Этот URL выглядит как «https://www.google.com/maps/place/
Эскиз
После подробного описания Эскиза; первый раздел кода используется для включения библиотек, необходимых для приложения.
MKRGSM включает все функции подключения GSM, локализации и управления SMS, это доступно через объект GSMClient, GPRS, GSM и GSMLocation, API управления SMS доступны через объект GSM_SMS , заголовок ArduinoLowPower импортировать API, которые позволяют управлять модулем платы с низким энергопотреблением.
Если вы загрузите код из веб-редактора, вы найдете arduino_secrets.h файл, содержащий важные данные, такие как PIN-код, APN, пользователь и пароль . В веб-редакторе вы должны ввести разумные данные на вкладке "Секреты".
// включаем библиотеку GSM # include #include "ArduinoLowPower.h" char PINNUMBER [] =SECRET_PINNUMBER; char GPRS_APN [] =SECRET_GPRS_APN; char GPRS_LOGIN [] =SECRET_GPORD_LOGIN [] =SECRET_GPORD_LOGIN [] =SECRET_GPORD_LOGIN; ] =SECRET_GPRS_PASSWORD; // инициализировать экземпляры библиотеки GPRS gprs; GSM gsmAccess; GSM_SMS sms; GSMLocation location;
measureLocation () запрашивает у модуля повторную попытку определения координат по сотовой сети, если доступны новые координаты, он присваивает ее глобальной переменной, в противном случае запрашивает еще раз 45 секунд, если нет доступных мер, которые соблюдают ограничения точности, он возвращает последние хорошие
// глобальная переменная, используемая для управления местоположениемString GSMlatitude ="0.000000"; String GSMlongitude ="0.000000"; // Эта функция использует API местоположения для получения координат устройства и обновления переменной globa, если все требования выполнены выполнено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 () функция использовать API smAccess.begin и gprs.attachGPRS для подключения платы к сети передачи данных; используются учетные данные PIN-код , apn , пользователь и пройти назначается объявлениями в arduino_secrets.h.
// функция connectNetwork () используется для подключения данных платыvoid connectNetwork () {bool status =false; // установить глобальный тайм-аут AT-команды, это позволяет восстановить связь через uart // замораживание между модулем samd и ublox module.gprs.setTimeout (100000); gsmAccess.setTimeout (100000); // Запуск GSM-соединения при (status ==false) {if ((gsmAccess.begin (PINNUMBER) ==GSM_READY) &(gprs.attachGPRS (GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) ==GPRS_READY)) {status =true;} else {delay (1000);}}} Раздел настройки, позволяющий инициализировать все объекты, используемые скетчем, называется функцией connectionNetwork () для установки данных соединение и начало структуры локализации. // Раздел кода, используемый для инициализации подключения к данным и объекта локализацииvoid setup () {connectNetwork (); location.begin ();}
Секция последнего кода - это функция цикла, в которой реализованы управление SMS и измерение местоположения, каждый раз, когда доступно новое SMS, плата отвечает rsender с помощью SMS с координатами платы, чтобы уменьшить потребление, плата завершает работу модуля и погружается в глубокий сон на 60 секунд.
void loop () {int c; Строковый ответ; String messager =""; measureLocation (); беззнаковый длинный таймаут =millis (); while (millis () - timeout <5000) {if (sms.available ()) {// проверяем наличие SMS char senderNumber [20] ={"0"}; sms.remoteNumber (senderNumber, 20); // Получить удаленный номер int c =sms.read (); if (c! =76) {sms.flush (); break;} // объединить строковое сообщение, которое будет отправлено удаленному numberString txtMsg ="https:// www.google.com/maps/place/ "+ GSMlatitude +", "+ GSMlongitude; // отправляем сообщения ms.beginSMS (senderNumber); sms.print (txtMsg); sms.endSMS (); break;}} // Выключите модуль GSM, чтобы получить минимальное энергопотребление платы во время сна gsmAccess.shutdown (); LowPower.sleep (60000); // включить низкое энергопотребление на 60 секунд и после повторной попытки подключения платы connectNetwork (); // включаем модуль и повторно подключаемся к сети передачи данных}
Как это использовать
Настройте оборудование, как описано выше, персонализируйте эскиз с вашими учетными данными, загрузите эскиз на плату и дождитесь установления соединения с сетью GSM. Это может занять 30 секунд.
После того, как соединение будет установлено, просто отправьте SMS-сообщение на номер SIM-карты MKRGSM с буквой «L» в качестве текста:это запустит процесс локализации, и плата ответит SMS-сообщением, содержащим ссылку на Google Maps с запрошенной позицией.
Код
Ардуино
Производственный процесс
- Делайте большие успехи или идите домой с новым дизайном продукта
- Присоединяйтесь к IOT со своей метеостанцией - CWOP
- Использование PSoC 6 Pioneer Board с Pioneer IoT Add-on Shield
- Использование QR-кодов с вашей CMMS:шаг за шагом
- Обновите свой багаж с помощью наборов для багажа из углеродного волокна
- Рационально расходуйте свой доллар Интернета вещей
- Вебинар:автоматизируйте свой процесс с помощью робота Techman
- 7 способов снизить стоимость печатной платы
- Расширьте свои операции с помощью технического обслуживания фермы
- Что делать с бывшим в употреблении оборудованием