Этот проект предполагает создание собственного GPS-трекера с использованием микроконтроллера Xiao-ESP32-S3. Обычно для создания GPS-трекера требуются дополнительные компоненты, такие как SIM-карта, GSM-модуль и другие средства связи для передачи данных о местоположении на телефон или компьютер. Но создание GPS-трекера с помощью Seeed Studio XIAO никогда еще не было таким простым. Теперь это не проблема. Сервис Circuit Digest разработал эффективное решение для отслеживания местоположения под названием GeoLinker. С его помощью микроконтроллер может отправлять свои текущие GPS-координаты непосредственно на сервер GeoLinker, где местоположение может отображаться и отслеживаться на карте. Самое приятное? GeoLinker бесплатен, что делает его отличным инструментом для студентов, любителей и инженеров, которые хотят создавать и тестировать свои GPS-проекты без затрат и сложности GSM-модулей.
![]()
Это подробное руководство покажет вам, как создать полностью функциональный GPS-трекер с использованием платы Seeed Studio XIAO ESP32-S3 с расширенными функциями, такими как геозонирование и SMS-уведомления — без необходимости использования SIM-карты или дорогостоящего GSM-модуля. Ранее мы уже рассматривали проект GPS-трекера на ESP32 с визуализацией данных на карте. Что же делает этот проект особенным? В него добавлена функция, повышающая эффективность системы GPS-трекера. Хотите узнать, что это? Это геозона с активацией по SMS. Давайте углубимся в изучение проекта…
Также ранее мы рассматривали похожий проект с геозонированием на основе NodeMCU ESP8266.
Необходимые компоненты
- Модуль Xiao-ESP32-S3 (купить на AliExpress). Основной микроконтроллер используется для обработки данных, обеспечения Wi-Fi-соединения и отправки данных GPS в облако.
- GPS модуль NEO-6M (купить на AliExpress). Принимает спутниковые сигналы и предоставляет координаты широты и долготы в реальном времени.
- Макетная плата.
- Соединительные провода.
- Внешняя GPS-антенна. Подключается к модулю NEO-6M для обеспечения надежного и стабильного приема сигнала GPS-спутников.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Необходимое программное обеспечение
- Arduino IDE
- Необходимые библиотеки:
библиотека GeoLinker (для облачной связи),
библиотека TinyGPSPlus (для анализа данных GPS),
библиотека WiFiClientSecure (для HTTPS-соединений).
Что представляет собой GPS-трекер на микроконтроллере XIAO ESP32-S3?
Используя GPS-трекер с микроконтроллером XIAO ESP32-S3, мы можем отслеживать местоположение наших устройств и домашних животных через Wi-Fi, не тратя деньги на тарифные планы сотовой связи. XIAO ESP32-S3 — это компактный и мощный микроконтроллер от Seeed Studio, который взаимодействует с модулем GPS Neo-6M. Это позволяет передавать данные о местоположении GPS напрямую по Wi-Fi с XIAO ESP32-S3 на облачные серверы.
Основные характеристики GPS-трекера XIAO ESP32-S3
✓ Не требуется сотовая связь — экономьте деньги, не покупая услуги сотовой связи.
✓ Технология геозонирования — автоматически определяет, если вы покидаете обозначенные зоны, и уведомляет вас.
✓ SMS-уведомления — устройство не только уведомляет вас о пересечении геозоны, но и точно указывает, где находилось устройство в момент пересечения ее границ.
✓ Автономное хранение местоположения — при отсутствии Wi-Fi местоположение будет сохранено. После восстановления Wi-Fi сохраненное местоположение автоматически синхронизируется с облачным сервисом.
✓ Картографирование в реальном времени — используйте GeoLinker для отслеживания ваших устройств на интерактивных картах.
✓ Бесплатный сервис — все новые пользователи GeoLinker получают бесплатный доступ к 10 000 записям истории местоположения.
Как работает GPS-трекер с системой XIAO ESP32-S3
GPS-трекер на базе Seeed Studio XIAO ESP32-S3 обладает рядом преимуществ перед традиционными GSM-трекерами. Принцип его работы показан на следующем рисунке.
![]()
Пошаговое руководство по эксплуатации системы
1. Сбор GPS-сигнала: GPS-модуль Neo-6M принимает сигналы спутников GPS и определяет точные координаты широты и долготы.
2. Обработка данных: микроконтроллер XIAO ESP32-S3 обрабатывает информацию GPS через последовательный канал связи (UART), работающий на скорости 9600 бод.
3. Передача по Wi-Fi: ESP32-S3 передает координаты GPS в облако GeoLinker каждые 15 секунд (настройка регулируется на ESP32-S3).
4. Онлайн-архив данных: облако GeoLinker хранит полную историю перемещений, сохраняя каждую точку с соответствующей меткой времени.
5. Мониторинг геозоны: формула Хаверсина постоянно вычисляет расстояние от заданной домашней позиции до текущего местоположения.
6. Уведомления о тревогах: если устройство пересечет установленную границу в 50 метров (регулируемая), будет отправлено SMS-сообщение через API SMS облака Circuit Digest.
7. Буферизация данных в автономном режиме: в случае отключения от сети Wi-Fi, ESP32-S3 будет сохранять данные GPS в буфере данных.
8. Синхронизация данных: после восстановления интернет-соединения сначала будут загружены буферизованные данные. Затем последует загрузка данных в режиме реального времени.
Схема GPS-трекера
Схема проекта GPS-трекера на базе XIAO ESP32-S3 представлена на следующем рисунке.
![]()
Схема показывает, что модуль Neo-6M подключен к ESP32-S3 для приема данных GPS. Модуль GPS питается от выводов 5 В и заземления ESP32-S3. Для последовательной связи вывод TX модуля подключен к выводу RX ESP32-S3, а вывод RX модуля — к выводу TX ESP32-S3, что обеспечивает корректную передачу данных. К модулю подключена внешняя патч-антенна для обеспечения надежного приема сигнала GPS.
Также используемые подключения в схеме нашего проекта представлены в следующей таблице.
| Контакт модуля GPS Neo-6M | Контакт XIAO ESP32-S3 | Тип подключения | Примечания |
| VCC | 5V | Источник питания | Для Neo-6M требуется напряжение 3,3–5 В; XIAO обеспечивает стабильное выходное напряжение 5 В |
| GND | GND | Общий провод (земля) | Для надежной коммуникации необходимы общие точки соприкосновения |
| TX (Transmit) | GPIO 44 (RX) | Последовательная передача данных (GPS → ESP32) | Передает NMEA-сообщения со скоростью 9600 бод |
| RX (Receive) | GPIO 43 (TX) | Последовательная передача данных (ESP32 → GPS) | Необязательно: для отправки команд конфигурации на GPS |
Собранная на макетной плате конструкция проекта с подписанными названиями компонентов приведена на следующем рисунке.
![]()
На этом изображении показана настройка модуля Neo-6M в реальном времени, подключенного к контроллеру ESP32-S3. Как видите, к модулю подключена внешняя антенна для приема сигнала GPS.
Настройка облачной платформы GeoLinker для GPS-отслеживания
Как и большинство API CircuitDigest Cloud, GeoLinker также требует ключ API для авторизации. Выполните следующие шаги, чтобы получить бесплатный ключ API для вашего проекта GPS-навигации на ESP32.
Перейдите на официальный сайт CircuitDigest Cloud по адресу https://circuitdigest.cloud и в правом верхнем углу нажмите Sign in («Войти»).
Если вы впервые используете CircuitDigest Cloud, вам необходимо зарегистрировать новую учетную запись, выполнив следующие шаги.
Регистрация новой учетной записи в Circuit Digest Cloud

⇒ Шаг 1: Перейдите на главную страницу Circuit Digest.Cloud. Нажмите кнопку «Войти», расположенную внизу, которая перенаправит вас на страницу входа.
⇒ Шаг 2: Если у вас уже есть учетная запись, войдите, используя имеющиеся данные. В противном случае перейдите на страницу регистрации, чтобы создать учетную запись, заполнив необходимые данные. После завершения нажмите "Register Now" («Зарегистрироваться сейчас»), чтобы зарегистрироваться.
⇒ Шаг 3: После регистрации используйте свой адрес электронной почты и пароль для входа на страницу входа. После входа нажмите "My Account" («Моя учетная запись») в правом верхнем углу, где в выпадающем списке выберите «Ключи API».
Следующий шаг — генерация ключа API.

Генерация ключа API
⇒ Шаг 4: Вы будете перенаправлены на страницу, где сможете сгенерировать свой API-ключ.

⇒ Шаг 5: Нажав на значок копирования рядом с ключом API, вы мгновенно скопируете свой ключ в буфер обмена.
В настоящее время существует ограничение на использование: 100 запросов на один API-ключ как для SMS, так и для ANPR, и 10 000 точек данных для отслеживания GPS. После достижения этого лимита можно сгенерировать новый ключ, который предоставит еще 100 использований.
Это ограничение на использование установлено для предотвращения перегрузки сервера.
Таким образом, мы готовы перейти к аппаратной части.
* Примечание : Для всех вызовов API действует ограничение на количество запросов — 10 секунд, разрешается один запрос каждые 10 секунд.
Объяснение исходного кода GPS-трекера
Код инициализирует микроконтроллер Xiao ESP32-S3, настраивает GPS-модуль Neo-6M и устанавливает API GeoLinker для отправки данных о местоположении по Wi-Fi. Функция setup() устанавливает связь GPS, загружает учетные данные Wi-Fi и подготавливает службу GeoLinker с указанием интервала обновления и автономного хранилища. Основной цикл непрерывно считывает координаты GPS, загружает корректные данные в облако и проверяет, вышло ли устройство за пределы заданного радиуса геозоны. При обнаружении нарушения геозоны функция sendSMS() отправляет предупреждающее сообщение с помощью API Circuit Digest SMS. Код также вычисляет расстояние по формуле Хаверсина и обрабатывает сбои Wi-Fi, временно сохраняя данные.
Полный разбор кода Arduino
Прошивка для этого GPS-трекера, использующая Seeed Studio XIAO ESP32-S3, объединяет множество библиотек и реализует сложную логику геозонирования.
|
1 2 3 4 5 6 7 |
#include <GeoLinker.h> #include <TinyGPSPlus.h> #include <WiFiClientSecure.h> HardwareSerial gpsSerial(1); #define GPS_RX 44 #define GPS_TX 43 #define GPS_BAUD 9600 |
Эти библиотеки обеспечивают связь с облаком, декодирование данных GPS и защищенный протокол HTTPS. Интерфейс Serial1 настроен для модуля GPS Neo-6M с использованием контактов 44 (RX) и 43 (TX) со скоростью передачи данных 9600 бод.
Эти константы определяют учетные данные Wi-Fi и конфигурацию GeoLinker для вашего GPS-трекера с микроконтроллером XIAO ESP32-S3.
|
1 2 3 4 5 6 |
const char* ssid = "Yourname"; const char* password = "yourpassword"; const char* apiKey = "youruniqueapikey"; const char* deviceID = "ESP-32_Tracker"; const uint16_t updateInterval = 15; const bool enableOfflineStorage = true; |
В этом разделе задаются учетные данные Wi-Fi и параметры API, необходимые для загрузки данных GPS в облако GeoLinker. ESP32 отправляет одно обновление каждые 15 секунд и сохраняет данные в автономном режиме, когда Wi-Fi недоступен.
|
1 2 3 4 5 6 7 8 |
const float homeLat = 11.011160; const float homeLon = 77.013080; bool alertSent = false; double distanceBetween(double lat1, double lon1, double lat2, double lon2) { double R = 6371000; double dLat = radians(lat2 - lat1); double dLon = radians(lon2 - lon1); ...} |
Координаты дома определяют центр геозоны.
Функция distanceBetween() использует формулу Хаверсина для вычисления расстояния между трекером и заданной областью геозоны.
Функция SMS-оповещений с использованием облачного API Circuit Digest
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void sendSMS(float latitude, float longitude) { WiFiClientSecure client; client.setInsecure(); HTTPClient http; String apiUrl = "https://www.circuitdigest.cloud/api/v1/send_sms?ID=" + String(templateID); http.begin(client, apiUrl); http.addHeader("Authorization", apiKey); http.addHeader("Content-Type", "application/json"); String payload = "{\"mobiles\":\"" + String(mobileNumber) + "\",\"var1\":\"ESP32\",\"var2\":\"" + String(latitude, 6) + "," + String(longitude, 6) + "\"}"; http.POST(payload); } |
Когда GPS-трекер с устройством XIAO ESP32-S3 пересекает ограждение, эта функция отправляет SMS-уведомление через API Circuit Digest Cloud SMS с указанием текущего местоположения GPS.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
uint8_t status = geo.loop(); while (gpsSerial.available()) gps.encode(gpsSerial.read()); if (gps.location.isUpdated()) { float latitude = gps.location.lat(); float longitude = gps.location.lng(); double dist = distanceBetween(homeLat, homeLon, latitude, longitude); if (dist > 50 && !alertSent) { sendSMS(latitude, longitude); alertSent = true; } if (dist <= 50 && alertSent) alertSent = false; } |
Функция GeoLinker автоматически обрабатывает загрузку данных и буферизацию в автономном режиме.
При поступлении новых данных GPS рассчитывается расстояние.
- Если расстояние превышает 50 м, отправляется SMS-уведомление.
- Когда трекер возвращается в пределы зоны действия, оповещение сбрасывается.
Хорошо, теперь нам останется только загрузить код и посмотреть, как работает система.
Оптимизация и настройка кода
Вы можете разработать собственную прошивку для своего GPS-трекера, используя Seeed Studio XIAO ESP32 S3, и для других целей.
- Интервал обновления — чтобы найти баланс между точностью и объемом используемых данных: измените значение переменной updateInterval (диапазон от 1 до 60 секунд) в соответствии с вашими потребностями.
- Радиус геозоны — настройте радиус геозоны в соответствии с вашими конкретными потребностями в мониторинге. (10–5000 метров)
- Несколько геозон — вы можете отслеживать несколько геозон, задав массив координат или местоположений, от которых будет рассчитываться соответствующая зона геозонирования.
- Предупреждения о превышении скорости — для создания предупреждений о превышении скорости добавьте операторы условия GPS.speed.kmph().
- Мониторинг батареи — используйте программу мониторинга батареи, чтобы определить состояние батареи и, при необходимости, уведомить о низком уровне заряда.
Тестирование работы GPS-трекера в реальном времени
В качестве источника интернета я использовал точку доступа своего телефона. После включения питания системы через USB-порт компьютера я активировал мобильную точку доступа Wi-Fi, и ESP32-S3 мгновенно подключился к ней.

В случае потери сетевого соединения данные сохраняются локально, и никакая информация не теряется. После восстановления сети сохраненные локально данные будут отправлены на облачный сервер, а любые новые данные будут загружены в облако.

Теперь давайте перейдем от офиса к просмотру работы карты. На изображении ниже показан плавный запуск системы GPS-слежения. Данные будут отображаться на карте. Данные передавались каждые 15 секунд.
![]()
В эту систему мы добавили функцию геозоны. Я уже указал конкретные координаты, например, местоположение дома или офиса, которые включены в код. Я также указал диапазон границ. Если система выходит за пределы этого диапазона, SMS API (только для абонентов в Индии) от Circuit Digest отправит текстовое сообщение на номер, указанный в облаке Circuit Digest. Это сообщение будет содержать текущую широту и долготу системы. Как только система вернется в диапазон границ, геозона будет сброшена. Таким образом, если система снова выйдет за пределы диапазона, на указанный номер будет отправлено еще одно оповещение в виде текстового сообщения.

На изображении выше показана проверка нарушения геозоны в реальном времени. GPS-приемник пересек границу зоны действия, поэтому система автоматически активировала SMS-уведомление и отправила текущие координаты на указанный номер, показанный на изображении. Как только система входит в зону действия, геозона сбрасывается.
После долгой поездки мы наконец добрались до офиса. Давайте посмотрим на карту и определим, куда мы проехали.

На приведенном рисунке представлена карта в реальном времени, демонстрирующая расстояние, пройденное нами от начальной точки, и площадь пройденного участка.
Применение в реальном мире
«Управление транспортными средствами и автопарком: внедрение этих возможностей отслеживания в режиме реального времени, наряду с оповещениями о геозонировании и историей маршрутов, приведет к значительному улучшению диспетчеризации и планирования маршрутов.»
» Защита имущества: Вы сможете наблюдать за дорогостоящим оборудованием через камеру и получать SMS-уведомления, если кто-то перемещает его без вашего разрешения. Небольшие размеры оборудования позволяют легко его спрятать.
» Безопасность детей: Вы будете знать, где находятся дети, получать уведомления, когда они выходят за пределы указанной зоны, и сохранять данные для ежедневного использования.
«Мониторинг пожилых людей: лица, осуществляющие уход, будут в курсе событий, получая оповещения о том, что пожилой человек с деменцией или ограниченной подвижностью попал в опасную зону, а возможность локального кэширования данных обеспечивает защиту от их потери.»
«Отслеживание питомцев: система оповещения о геозонировании и история маршрутов, а также водонепроницаемое крепление на ошейник позволят вам быстро найти потерянных животных.»
Репозиторий GitHub и исходные файлы
Получите доступ к полному исходному коду, схемам и документации для этого GPS-трекера с помощью проекта XIAO в Seeed Studio:
Таким образом, в этом проекте мы создали недорогой и полностью функциональный GPS-трекер, используя плату Seeed Studio Xiao ESP32-S3. Система передает данные в реальном времени, которые легко отслеживаются с помощью Geolinker. Одна из новых функций, отличающих этот проект от предыдущих, — это геозонирование и отправка SMS-уведомлений. Эти функции делают проект полезным для реальных приложений, таких как мониторинг транспортных средств и отслеживание активов. В целом, проект демонстрирует, как облачные API могут упростить разработку IoT, устраняя необходимость в дорогостоящем оборудовании на базе GSM. Сочетание отслеживания по Wi-Fi, надежности в автономном режиме, визуализации маршрута и SMS-уведомлений делает этот GPS-трекер эффективным, гибким и практичным решением для широкого спектра приложений, основанных на определении местоположения.
Часто задаваемые вопросы (FAQ)
⇥ 1. Какова основная цель проекта GPS-трекера?
Основная цель проекта — создать простой и недорогой GPS-трекер , доступный любому человеку и который можно будет воспроизвести, чтобы использовать в повседневной жизни.
⇥ 2. Почему этому трекеру не требуется SIM-карта или GSM-модуль?
Потому что ESP32-S3 напрямую использует Wi-Fi-соединение.
⇥ 3. Что произойдет, если соединение Wi-Fi будет потеряно?
Трекер имеет функцию автономного хранения данных. Когда Wi-Fi недоступен, он временно сохраняет GPS-точки локально и автоматически загружает их после восстановления соединения.
⇥ 4. Что такое геозонирование в этом проекте?
Геозонирование позволяет установить виртуальную границу (например, радиус 50 м или 5 км).
Если трекер пересекает эту границу, система отправляет SMS-уведомление на указанный номер мобильного телефона (только для SIM карт Индии).
⇥ 5. Можно ли использовать этот трекер в реальных условиях?
Да. Он подходит для:
- Отслеживание транспортных средств в режиме реального времени
- Мониторинг активов
⇥ 6. Можно ли изменить интервал обновления?
Да, время обновления данных можно настроить в соответствии с вашими требованиями.
⇥ 7. Каково максимальное расстояние от GPS-трекера до точки доступа Wi-Fi?
В целом, радиус действия ESP32-S3 при использовании Wi-Fi составляет приблизительно от 50 до 100 метров, когда оба устройства находятся в прямой видимости; через стены и/или другие препятствия он обычно увеличивается до 20-40 метров. При отслеживании транспортного средства возможность подключения к точке доступа, созданной мобильным телефоном, позволяет отслеживать транспортное средство везде, где есть сотовый сигнал. Если установка стационарная, существуют расширители диапазона Wi-Fi, которые обеспечивают покрытие на расстоянии до нескольких сотен метров.
⇥ 8. Можно ли отслеживать несколько устройств с помощью одной учетной записи GeoLinker?
Ответ — да; однако вам необходимо присвоить каждому GPS-трекеру уникальный идентификатор в коде, который вы пишете для этого устройства. После этого все ваши устройства будут отображаться на единой карте GeoLinker с разными цветовыми кодами для отслеживания каждого устройства. Можно просматривать историю всех устройств, сравнивать маршруты и управлять несколькими геозонами. Важно знать, что все устройства используют одинаковую квоту в 10 000 точек данных, выделенную вашим API-ключом.


