Проект · GPS · Без облака
Собери GPS-трекер на ESP32 / ESP8266 с собственным веб-дашбордом
NEO-6M и микроконтроллер за $3 отдают живую карту, домашний геозабор, экспорт трека в GPX и обновления по воздуху — прямо с платы. Без облака, без приложения, без подписки.
Большинство самодельных GPS-трекеров отправляют твоё местоположение в чужое облако. Этот — нет. ESP32 или ESP8266 и модуль NEO-6M за $3 отдают полноценный веб-дашборд прямо с платы — живую карту, скорость, спутники, домашний геозабор с тревогой и экспорт трека в GPX / CSV, который можно открыть в Strava, OsmAnd или Google Earth. Без аккаунта, без приложения, без ежемесячной платы.
Собрано на RisalDash — open-source библиотеке для Arduino, которая из горстки
вызовов dash.metric(...) / dash.map(...) делает адаптивный живой
дашборд по WebSocket.
Что он умеет
- Живая карта со следом — твоя позиция и пройденный путь на тайлах OpenStreetMap.
- Домашний геозабор — радиус вокруг «дома»; вышел за него — срабатывает вибро-тревога (и, по желанию, сообщение в Telegram), с антидребезгом, чтобы не тарахтела зря.
- Логирование трека — CSV-файлы по дням, безопасно записываемые во флеш. Работает полностью офлайн: едешь без Wi-Fi — он пишет всю поездку.
- Экспорт в одно касание — встроенная страница
/tracksпоказывает каждый лог со ссылками на CSV и потоковый GPX. - Обновления OTA — заливай новую прошивку из браузера. Никакого USB-кабеля после первой заливки.
- Своё, а не чужое — дашборд отдаёт сам ESP; твоё местоположение не покидает сеть.
Железо
- ESP8266 (Wemos D1 mini) или ESP32 — ~$3–5
- GPS-модуль NEO-6M — ~$3
- Вибромотор для тревоги (по желанию) — ~$1
Подключение (ESP8266): NEO-6M TX → D5, RX → D6, VCC → 3V3, GND → GND; вибромотор на D1. Голый вибромотор тянет ~70–100 мА и не может питаться напрямую от GPIO (~12 мА) — поставь транзистор между пином и мотором, с обратным диодом.
Код
Весь дашборд декларативный. Это практически весь UI целиком:
#include <RisalDash.h>
RisalUI dash("GPS Tracker");
dash.map("Track", &lat, &lon).geofence(&homeLat, &homeLon, &fenceRadius);
dash.gauge("Speed", &speedKmh, 0, 40, "km/h");
dash.metric("Satellites", &sats);
dash.chart("Altitude", &altM, "m");
dash.link("History", "Download tracks", "/tracks");
dash.enableOTA();
dash.begin(); // captive-портал, затем подключается к твоему Wi-Fi Скорми переменные из TinyGPSPlus в loop() — и карта, стрелки и график
обновляются вживую в каждом открытом браузере. Кастомные эндпоинты (список треков, скачивание CSV,
потоковый GPX) висят на dash.server() на том же порту.
Почему «без облака» важно
Трекер, который звонит домой, — это дыра в приватности и подписка, которая только и ждёт своего часа. Когда дашборд отдаёт само устройство, твоя позиция остаётся в локальной сети, трекер работает даже когда интернета нет, и не остаётся ничего, за что нужно платить или что могут выключить. Вдали от домашнего Wi-Fi он пишет во флеш; вернулся в свою сеть — он сам переподключается, и ты забираешь GPX за день.
Полный, собранный и проверенный исходник для ESP32 & ESP8266.