Речь сегодня пойдет о создании gps трекера на базе модуля ESP8266 без участия какого-либо gps-модуля для данного устройства собственно кроме ESP больше ничего и не понадобится соответственно итоговая стоимость устройства ну не должна превышать 200 рублей.
давайте немножко расскажу о технологии который используется в данном проекте наверняка многие из вас например открывая яндекс карты замечали что индекс умеет определять ваше местоположение даже в том случае если при подключении вы используете устройство которое не оснащена какими-либо устройствами геопозиционирования каким образом это происходит существует несколько компаний достаточно крупных таких как google facebook индекс которые собирают информацию о местоположении стационарных wi-fi точек доступа делают они это следующим образом например подключаясь к интернет через вай-фай роутер со своего мобильного телефона на котором включенную сервис геопозиционирования вы позволяете компании сервисам которые вы пользуетесь получится информацию о точке доступа через которую вы подключаетесь а также о вашем текущем местоположении данная информация фиксируется в базе данных и в следующий раз при подключении к интернет через ту же самую точку доступа но уже используя другое устройство вы даете возможность компании определить вашим примерное местоположение таким образом привязка местоположение осуществляется конкретные точки доступа а для идентификации точке доступа используется идентификатор ссд это идентификатор который по умолчанию равен mac-адресу устройства и 182 66 также умеет считывать без сойди окружающих и он вай фай сетей причем для считывания данных идентификаторов не обязательно быть подключенным каждой конкретной вайфай сети таким образом даже если моду не подключен к интернет мы можем периодически считывать идентификатора окружающих его вай фай сетей логировать показания в привязки ко времени и в будущем расшифровав и данные логе мы можем определить где находилась устройство в тот или иной момент времени точность определения местоположения достаточно посредственно и в некоторых случаях погрешность может доходить до 100 метров но большинстве случаев погрешность все-таки меньше теперь немного о работе устройства я собирал на отладочной плате но дым сию подключал ее к powerbank в пеших прогулках находясь кармане устройство принимает сигналы от вай-фай сетей достаточно стабильно лакируют их получается достаточно качественные неплохие треки пробовал класть в бардачок автомобили там вообще нифига ничего не ловит поэтому в поездках закрепляла устройство в районе лобового стекла но здесь еще надо учесть один момент все дело в том что на моей плоти но до миссию нет никакой антенного модуля и 182 66 то есть это самый голимый наверное вариант который можно было использовать я думаю что даже блины собирая на стандартной платье нодом сию на которую за парень модулей 182 66 12-е 12f все будет работать гораздо лучше но вероятно идеально будет использование модулей и аспирин 07 поскольку этот модуль оснащен внешней антенной и качество приема ну будет лучше наверное в разы чем было у меня.
теперь давайте посмотрим как настроить скетчи для работы на устройстве в первую очередь нам необходимо забить название точки доступа через которую модуль будет соединяться с интернет а также забить пароль для подключения к вайфай сети далее в переменную региона один нам необходимо забить яичник региона который можно посмотреть вот по этой ссылочке он необходим только для определения часового пояса необходимого нам при синхронизации времени микроконтроллера с реальным временем далее следует две константы это скан интервал и каунт networks для гиа короче константа скан интервал определяет в минутах интервал через которые производится сканирование вайфай сети константу const networks по гиа указывается количество точек выборки то есть например если модуль окружают 10 вай фай сетей который он видит при сканировании то он будет выделять из них указанное количество сетей по наиболее высокому уровню сигнала от них то есть предполагается что данной точке доступа расположена к модулю достаточно близко можно сканировать чаще можно выбирать блин больше точек доступа но все это скажется на итоговом размере логов которые собираются модулем то есть если модуль будет сканировать все эти раз в минуту при этом будет запоминать повесить сетей но наверно через час там через два там блок разрастется до какого-то неимоверного размера и даже если он не займёт всю память на контроллере но обрабатываться он просто будет очень и очень долго потому что выборка координат и адресов по без сойди производится с помощью запросов на внешние сервера то есть каждый бренд запрос надо будет отправлять в несколько мест и собственно все это будет очень долго я вот считаю что количество сетей равный 3 для выборки это оптимальное значение и интервал в 3 минуты но можно сократить до 2 я не знаю если есть целесообразность чтобы видеть какие-то более красивые треки вот нового в принципе наверно по настройке скетчи это и все необходимо прошить скетч в контроллер и залить файловую систему модуля файлы необходимы для организации web-интерфейс которые также прилагаются к скетчам да и скетч и предусмотрен вывод отладочных сообщений серийный порт поэтому уже после прошивки после того как модуль активируется в мониторе серийного порта вы можете увидеть все ли работает и работать или как надо в том числе даже пример шифровки логов вы можете видеть ход процесса мониторе серийного порта работа организована следующим образом устройство активируется путем подачи на него питание причем в этот момент модуль должен находиться в зоне действия домашний вайфай сети модуль соединяется с домашней сетью считывает и и без сойди и запоминает его в будущем этот bss айди он будет использовать для обнаружения одной сети и попыток подключения к интернет после этого происходит синхронизация времени микроконтроллером с реальном времени и до начала логирования данных и в процессе логирования данных модуль отключать нельзя поскольку собьется время то есть мы его подключили и всем готов к работе положили в карман и пошли как только теряется связь с домашней сетью модуль начинает с определенным нами интервалов сканировать внешние вайфай сети и логировать их без соседи в привязки ко времени после того как мы возвращаемся в нашу домашнюю сеть мы можем посмотреть файл файлы логов и запустить их расшифровку ну давайте посмотрим на веб интерфейс правом верхнем углу у нас отображается индикатор у места файловой системе здесь свобода свободное место отображается зеленым цветом занятая красным далее у нас следует список логов по датам каждый лог мы можем либо запустить на обработку либо удалить после того как мы запускаем лог на обработку он у нас долго-долго обрабатывается после чего формируется список треков каждый трек мы можем либо просмотреть при нажатии вот на эту ссылку нижнем окошке открывается список адресов по которым находилась наше устройство в привязки ко времени при нажатии на соответствующую ссылку нас открываются яндекс карты с указанием данного адреса так же мы можем скачать любой файл трека формате g-tx для того чтобы просмотреть его специализированном программном обеспечении ну я предлагаю использовать для этих целей яндекс карты мы открываем индекс картер вот здесь выбираем раздел мои карты нажимаем кнопку импорт выбираем скаченный файл с треком ну для сейчас выберу левый файл поскольку свои треки палить не особо хотелось бы нажимаем на кнопку открыть и добавить после чего на картах у нас отображается соответствующий трек процессор водки выглядит вот так ну чтобы просто показать как все это делается вот он обрабатывается обрабатывается файлы был специально небольшой поэтому обработался он достаточно быстро и вот видим что списке треков он стал доступен как то вот так пишите в комментариях вообще что вы обо всем этом думаете на самом деле проект достаточно сырой хотелось бы ещё много вещей допилить.
Необходимые библиотеки:
- TimeLib: https://yadi.sk/d/YZmqQ0pxV9tYkg
- ArduinoJson: https://yadi.sk/d/fNfVAvqzqE-aUg
- ESP8266FTPServer: https://yadi.sk/d/SDRX9CA8IDbtRQ
- Скетч примера: https://yadi.sk/d/3xL0U6WXfDP8yw
Программное обеспечение предоставляется при условии его использования исключительно в не нарушающих законы Российской Федерации целях и не может быть использовано при разработке технических средств, предназначенных для негласного получения информации.