Как можно добавить функцию позиционирования через WiFi и сотовые сети в проекте на ESP32?

Как можно добавить позиционирование по WiFi и сотовым сетям к маяку\трекеру на ESP32, который в настоящее время получает позицию только по GPS и отправляет ее на сервер через GSM модуль? Какие шаги и ресурсы следует использовать для осуществления данной задачи?
  • 31 января 2024 г. 12:09
Ответы на вопрос 3
Позиционирование через WiFi и сотовые сети обычно основано на методах многосторонней разности, RSSI (Received Signal Strength Indicator) и сканировании окружающих точек доступа или базовых станций, чтобы определить местоположение устройства. Для ESP32, который уже имеет функционал GPS и GSM, добавление такого вида позиционирования будет включать в себя несколько ключевых шагов:

1. **Сбор данных WiFi и сотовой сети:**
   - **WiFi:** Используйте возможности ESP32 для сканирования доступных сетей WiFi; получите MAC-адреса точек доступа и их RSSI.
   - **Сотовые сети:** Если в вашем устройстве уже есть GSM модуль, возможно, он поддерживает AT-команды для получения информации о соседних базовых станциях (например, команда `AT+CELLINFO` у некоторых модулей).

2. **Интеграция с API для геолокации:**
   Есть несколько коммерческих и бесплатных сервисов, предлагающих API для определения местоположения на основе WiFi (Google Geolocation API, Here Positioning, Mozilla Location Service и др.). Выберите один из них и зарегистрируйтесь, чтобы получить доступ к API.

3. **Разработка программного обеспечения:**
   В вашем коде для ESP32, реализуйте логику сканирования сетей и форматирования запросов к выбранному вами API. Отправьте полученные данные (MAC-адреса, RSSI, коды сотовых станций и их сигналы) через GSM модуль на сервер API для геолокации.

4. **Обмен данными с API:**
   Сформируйте правильный HTTP(S) запрос с соответствующим JSON или XML телом, содержащим данные о точках доступа и сотовых станциях. Отправьте этот запрос на API сервер. В ответ вы получите географическое положение, основанное на переданных данных.

5. **Обработка ответа:**
   Парсите полученный ответ от сервера геолокации, извлеките информацию о широте, долготе и возможно радиусе неопределенности местоположения. Используйте эту информацию по мере необходимости в вашем приложении.

6. **Тестирование и отладка:**
   Тщательно протестируйте всю систему, чтобы обеспечить надежное получение и обработку данных.

7. **Энергопотребление и частота запросов:**
   При работе с батарейным питанием учитывайте энергопотребление. Частые сканирования WiFi и запросы к сети могут сильно уменьшить время автономной работы.

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

Также нужно учесть, что использование коммерческих API для геолокации может быть сопряжено с определенными затратами, ограничениями на количество запросов и требованиями к конфиденци
Сама ардуинка максимум что может взять - это список из MAC/SSID точек доступа и мощность сигнала. 
Далее список из доступных сетей и мощностей сигналов следует передать на сервер, где будет база данных известных точек доступа с их координатами.
+ Можно сохранить инфу о том, какое сочетание точек доступа с мощностями, какой геопозиции соответствует (для референса)
Про сотовую связь вот такую статью нашёл: Как определить местоположение по сетям сотовой свя... 
Геолокация по wi-fi, если я правильно понимаю, тоже на собранных базах точек основывается.
Геолокация без GPS (часть 1)
Похожие вопросы