Этот проект демонстрирует взаимодействие микроконтроллера ESP32 с GPS-модулем Neo 6M с использованием языка программирования C. Для управления задачами и синхронизации данных используются возможности FreeRTOS.
Основная цель — получение текущих координат GPS, их обработка и предоставление другим задачам для дальнейшего использования.
-
Чтение данных GPS через UART:
- Используется UART1 для подключения GPS-модуля.
- Принимаются и обрабатываются строки NMEA, в частности формат
$GPGGA
.
-
Обработка данных GPS:
- Парсинг строки
$GPGGA
для извлечения:- Времени (UTC).
- Широты и долготы.
- Качества фиксации.
- Количества спутников.
- Высоты над уровнем моря.
- Преобразование координат в десятичный формат.
- Парсинг строки
-
Синхронизация данных:
- Используется FreeRTOS-семафор для безопасного обновления глобальных переменных
latitude
иlongitude
, которые содержат текущие координаты.
- Используется FreeRTOS-семафор для безопасного обновления глобальных переменных
-
Интеграция с другими задачами:
- Реализован пример задачи, использующей координаты GPS для периодического логирования.
-
Инициализация:
- Настраивается UART для связи с GPS-модулем.
- Создается семафор для синхронизации доступа к данным координат.
-
Задачи:
- gps_task:
- Считывает данные с GPS-модуля.
- Парсит строку
$GPGGA
. - Обновляет глобальные переменные координат.
- some_other_task:
- Получает доступ к координатам через семафор.
- Логирует текущие координаты с фиксированным интервалом.
- gps_task:
-
Поток данных:
- GPS-модуль передает строки NMEA на UART.
- ESP32 обрабатывает данные и предоставляет актуальные координаты другим задачам.
- ESP-IDF: Фреймворк для разработки под ESP32.
- FreeRTOS: Управление многозадачностью.
- UART: Для получения данных с GPS-модуля.
- ESP_LOG: Для логирования информации.
- GPS TX -> GPIO16 (RX UART1).
- GPS RX -> GPIO17 (TX UART1).
- Питание GPS подключается к источнику 3.3V или 5V в зависимости от модели.
- Настройте окружение ESP-IDF.
- Подключите GPS-модуль к ESP32.
- Склонируйте проект и соберите его:
idf.py build flash monitor
- Наблюдайте за координатами GPS в терминале.
________________
Time: 15:14:08
Latitude: 00.000000° N
Longitude: 00.000000° E
Fix Quality: 1
Satellites: 9
HDOP: 0.94
Sea Level Altitude: 1125.5 m
I (4846314) GPS_DATA: 00.000000, 00.000000