STM32 i GPS

Komunikacja z modułem GPS02 firmy HOPE realizowana jest przy wykorzystaniu protokołu NMEA-0183, polegającego na wysyłaniu odpowiednio uformowanych zdań. Moduł standardowo komunikuje się przez port UART z prędkością 9600 bps, 8 bitów danych, 1 bit stopu, brak bitu parzystości.  Najbardziej przydatne sekwencje to RMC (Recommended Minimum Specific GNSS Data) oraz VTG (Course Over Ground and Ground Speed). Budowa zdania RMC jest następująca:

$GPRMC,170230.918,A,5413.2821,N,01610.4976,E,000.0,000.0,170611,,,A*68

Gdzie poszczególne elementy mają następujące znaczenie:

  • $GPRMC, – nagłówek zdania RMC,
  • 170230.918, – czas UTC (w postaci hhmmss.sss),
  • A, – znacznik ważności danych (A – dane ważne, V – dane nieważne),
  • 5413.2821,N, – szerokość geograficzna (w postaci ssmm.mmmm) wraz z określeniem półkuli,
  • 01610.4976,E, – długość geograficzna (w postaci sssmm.mmmm) wraz z określeniem półkuli,
  • 000.0, – prędkość przemieszczania podana w węzłach,
  • 000.0, – kierunek przemieszczania podany w stopniach,
  • 170611,,, – data czasu UTC (w postaci ddmmyy),
  • A*68 – suma kontrolna.

Natomiast budowa zdania VTG wygląda jak poniżej:

$GPVTG,000.0,T,,M,000.0,N,000.0,K,A*0D

Gdzie poszczególne elementy mają następujące znaczenie:

  • $GPVTG, – nagłówek zdania VTG,
  • 000.0, T, – kierunek przemieszczania podany w stopniach (prawdziwy),
  • , M, – kierunek przemieszczania podany w stopniach (magnetyczny),
  • 000.0,N, – prędkość przemieszczania podana w węzłach,
  • 000.0, K, – prędkość przemieszczania podana w km/h,
  • A*0D – suma kontrolna.

Przesyłane zdania mają stałą długość, wobec czego najlepszym sposobem jest przechowywanie ich w postaci tablic, a do poszczególnych elementów odwoływać się poprzez odpowiedni indeks.

W projekcie zaimplementowano także sygnalizację stanu pracy, jest ona realizowana przy użyciu trzech diod LED:

  • LED1 – zapalenie tej diody informuje iż moduł GPS do urządzenia wysyła poprawne dane o współrzędnych geograficznych,
  • LED2 – dioda będzie świeciła w czasie generowania pliku .gpx,
  • LED3 – podobnie jak dioda LED2, jest zapalana podczas generowania pliku .gpx, z tą różnicą iż w momencie zatrzymania generowania pliku dioda gaśnie.

Program dla mikrokontrolera

Na listingu poniżej przedstawiono część kodu głównego programu. Na początku realizowana jest konfiguracja: RCC, wykorzystywanych pinów, używanych peryferii UART, inicjalizacja obsługi przerwań oraz inicjalizacja wyświetlacza modułu KAmodLCD1. W przypadku konfiguracji RCC, GPIO, UART i przerwań mamy do czynienia z podstawowymi konfiguracjami.

Do pobrania

O autorze