Обычному человеку, обычно не составляет труда определить свое местоположения по виду который он определяет глазами и подсознательно сверяет с "картой" в своей голове и тем не менее иногда человек может заблудиться. Такой способ определения своего местоположения - очень не просто реализовать для электронного устройства т.к. будет нужен большой объем памяти, для хранения карты, и высокая производительность процессора для работы эмулятора нейронной сети или какого либо другого сопоставителя информации с камеры и внутренней карты. К тому же понадобиться камера что уже само по себе сильно увеличивает требования к аппаратному обеспечению а если используется искусственная нейронная сеть то удовлетворительный результат её работы, на самом деле, не гарантируется даже при очень хорошем её обучении. К счастью есть более простой и надежный способ определения своих координат в пространстве. Они могут быть определены по искусственным спутникам земли системы GPS. Есть также система beidou и ГЛОНАСС но, на практике, сигналы со спутников GPS ловятся лучше, хотя тоже не всегда так хорошо как хотелось бы. Для приема сигналов от спутников системы глобального позиционирования GPS существуют недорогие модули GY-GPS6mv2. Такой модуль взаимодействует с внешними приборами по интерфейсу UART.
Чтобы проверить его работу можно использовать USB-UART переходник увидеть данные, которые он передает, можно в мониторе последовательного порта среды Arduino IDE. Или же можно скачать специальную программу от производителя по ссылке https://www.u-blox.com/en/product/u-center
Для подключения к модулю, есть кнопочка слева вверху.
Чтобы программа показала координаты и точку расположения модуля нужно сначала дождаться пока модуль поймает сигналы с хотя бы 4х спутников, если вообще поймает. Без этого модуль не сможет определить координаты. Если модуль поймал сигналы то на нем начнет периодически мигать светодиод. Также координаты можно определить из сообщений которые он присылает в монитор порта. Координаты находятся в строке начинающейся с $GPGGA
перед запятой с буквой N находиться широта т.е. градус угла между плоскостью экватора и линией от центра земли до модуля, перед запятой с буквой E находиться востоная долгота т.е. градус угла между линией от Гринвича до центра и линией от модуля до центра земли т.е. широта ориентирует вдоль оси земли и параллельно экватору и говорит насколько далеко мы от него в градусах от 0 до 90 а долгота показывает насколько далеко мы от полукруга с концами на полюсах и проходящего через Гринвич тоже в градусах.
Обычно настройки модуля по умолчанию таковы что им можно пользоваться, для получения координат, не выполняя дополнительных настроек. На многих микроконтроллерах имеется интерфейс UART поэтому проблем с подключением модуля быть не должно. Его можно подключить например к Ардуино или ESP32. Рассмотрим далее скетч для робота, с модулем ESP32, которым можно управлять со смартфона и получить координаты местоположения робота на экран смартфона, по нажатию кнопки.
Данный код можно скопировать в Arduino IDE но textarea_ надо заменить на textarea т.к. с textarea данный код сюда нормально не вставляется, поэтому пришлось сделать такую замену.
В отличии от ESP8266, нужно использовать функцию ledcWrite() вместо analogWrite(). Прием от модуля осуществляется функцией Serial.read() после байт нужно преобразовать к типу char, отсечь спецсимволы конца строки и затолкать данные в массив символов далее этот массив можно обработать выделив нужную строку т.к. строку начинающуюся с $GPGGA т.к. в ней содержаться координаты. Строку можно распарсить на стороне сервера и лучше сделать именно так чтобы сам робот мог принимать какие то решения на основе своего положения но я пока решил не заморачиваться, передал данные клиенту где парсинг на джаваскрипте осуществляется гораздо проще. А именно двоиным разбиением строки сначала по символу 'N' потом на запятые
и выделением нужных концов для широты и также для долготы только в начале разбиаение по 'E' с запятой естественно чтобы в результатах её не было. Испытания робота можно посмотреть на видео:
Адрес биткоин кошелька для поддержки блога - bc1qlhrmmkh77x2lzhqe4lt9qwkglswj64tsqt2l5g