Надежный GPS-трекер автомобиля с интеграцией карты Thinger.io в реальном времени
Компоненты и материалы
| Arduino Leonardo (нужен выделенный hardware Serial) | ×1 |
| Плата разработки SIM900 (GSM/GPRS) | ×1 |
| GPS-модуль u-blox NEO-6M | ×1 |
| GPS-антенна | ×1 |
| Резистор 220 Ом | ×2 |
| Светодиод (питание + GPS фикс) | ×2 |
| Пайковая плата 7×5 см (под корпус) | ×1 |
| DC-DC понижающий 12В→5В (для авто) | ×1 |
| MicroSD-ридер (Adafruit, 5V tolerant) | ×1 |
| MicroSD-карта | ×1 |
Инструменты
- Паяльник
Приложения и сервисы
- Thinger.io Platform (бесплатный IoT с дашбордами)
О проекте
Началось как простой GPS-трекер, вырос в многофункциональное устройство для автомобиля. Функции:
- Отправка координат на Thinger.io каждые 2 мин (HTTP POST, отображение на карте в дашборде)
- Ответ на SMS-команды:
POS— координаты + ссылка Google Maps (последнее известное, если нет фикса),GETKM— пробег с последнего сброса,RESETKM— обнуление счетчика - SMS-уведомление каждые N км (например, 4000 км — напоминание опорожнить ловушку масла). Программный «одометр».
Arduino Leonardo выбран за второй hardware Serial (Serial1 для GPS, SoftwareSerial для SIM900). На UNO пришлось бы отключать GPS для прошивки и терять Serial Monitor.
Библиотеки
- NeoGPS — легковесный парсинг NMEA (Library Manager). Требует правки
GPSPort.h:#define gpsPort Serial1. - Time (Paul Stoffregen) — конвертация UTC.
- PetitFS — сверхлегкая FAT для SD (читает/пишет существующие файлы, не создает, не расширяет, один файл за раз). Экономит память (стандартная SD lib +12%).
Настройка NeoGPS
Замените GPSPort.h на:
#ifndef GPSport_h
#define GPSport_h
#define gpsPort Serial1
#define GPS_PORT_NAME "Serial1"
#define DEBUG_PORT Serial
#endif
Для Mega — Serial2/Serial3.
Настройка PetitFS
В pffArduino.h: #define SD_CS_PIN 10. В pffconf.h отключите (0): _USE_DIR, _USE_LSEEK, _FS_FAT12, _FS_FAT16 — экономия флеш. В pff.cpp добавьте возвращаемый тип FRESULT к функции (фикс ошибки компиляции).
Подготовка SD-карты
Форматируйте FAT32 (SD Card Formatter). Создайте файлы dist.txt и settings.txt (прилагаются — библиотека капризна к формату). В dist.txt — начальный пробег (например, 0). В settings.txt — порог уведомления в метрах. Проверьте: при старте в Serial Monitor должны появиться значения.
Подготовка SIM900
- Питание: внешний 5-9В 2А (баррель 5.5 мм), переключатель на внешнее питание.
- Serial selector: Software Serial (джамперы).
- Software trigger: запаяйте R13, питание модуля с Arduino D7 (пин #9 SIM900). Функция
SIM900power()в коде. - Снимите PIN-код с SIM-карты.
- Критично: прошивка SIM900 версии B10 или выше (команда
AT+CGMR). Старые версии не поддерживают установку Content-Type в HTTP POST — запрос будет отклонен сервером. Обновление прошивки по гайду ACOPTEX.
Настройка кода
- APN провайдера в
connectGPRS()(заменитеTeleXXX). - Thinger.io URL и authorization key в
postDataThinger()(свой device/bucket). - Часовой пояс:
#define UTC_OFFSET 1(UTC+1). - SMS-уведомление: текст, номер (
DEFAULT_NUMBER), порог вsettings.txt. - Раскомментируйте
while (!Serial);для отладки, закомментируйте для автономной работы.
Интеграция с Thinger.io
- Создайте bucket (база данных).
- Создайте HTTP Device (короткое имя — иначе authorization key не влезет в 256 байт буфера).
- В callback устройства: write bucket → ваш bucket.
- Заберите method URL и authorization header (без «Bearer»).
- В коде: замените URL и ключ. Важно: используйте
https://, неhttps://— SIM900 не поддерживает SSL. - Успех: в Serial Monitor
+HTTPACTION: 1,200,0. Данные появляются в bucket (longitude, latitude, date). - Дашборд: виджет Maps, источник — bucket.
Корпус (3D-печать)
STL-файлы: верхняя часть (высокая/компактная), нижняя (под SIM900 и Leonardo с вырезами), фиксаторы SIM900. М3 винты. Отверстия для крепления закрыты — просверлить 3 мм после печати. Печать 0.2 мм без поддержок. GPS и плата светодиодов в верхней части (прокладки).
Питание в автомобиле
Автор подключил к цепи прикуривателя (включается с зажиганием). Для скрытности — без USB-адаптера. DC-DC 12В→5В (дешевый китайский) с двумя USB-выходами — питание Leonardo и SIM900. Потребление ~110 мА в активном GSM. Можно добавить пауэрбанк для работы после выключения зажигания/угона.
Известные проблемы
- Если SMS приходит во время HTTP POST к Thinger.io — команда не обработается (нет ответа). Повторная отправка через несколько секунд решает проблему.
- При старте без сети — переподключения нет (только при старте). Планируется фикс.
Код
Основной скетч: GPS_tracker_Leonardo_v2.ino. Включает: NeoGPS парсинг, PetitFS работа с SD (чтение/запись пробега и порога), SMS-парсинг команд, HTTP POST к Thinger.io, программный одометр (игнорирует дрейф <10 м за 15 сек), управление питанием SIM900, часовые пояса.
Производственный процесс
- Производство гладильных досок: дизайн, материалы и технологический процесс
- Конструкция и дизайн серфбордов: от полинезийских корней к современным инновациям
- Внешний GPS трекинг активов: тренды, вызовы и الناشющие технологии
- Raspberry Pi анонсирует MCU RP2040 и плату Pico за $4
- Интеграция данных сенсоров в Raspberry Pi: практическое руководство
- Освоение PSoC 6 Pioneer Board с IoT Add-On Shield: руководство разработчика
- Ускорение репурпозинга лекарств от COVID-19 с BIOVIA Living Map
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Внедрение внутренних систем интеграции для точного машиностроения: опыт Vanamatic
- Риски эксплуатации автомобиля с низким уровнем охлаждающей жидкости