STM32VLDISCOVERY: obsługa modułu GPS Fastrax IT500

W artykule pokazano jak przy wykorzystaniu zestawu startowego STM32VLDISCOVERY zbudować proste urządzenie odbierające dane z modułu GPS (Fastrax IT500) i dekodujące je do postaci informacji użytkowych. Do wykonania projektu użyto następujących urządzeń i elementów:

  • Zestaw startowy STM32VLDISCOVERY z mikrokontrolerem STM32F100R8,
  • Płytka Fastrax APMP0A00 z modułem GPS Fastrax IT500,
  • Antena aktywna,
  • Komputer PC z oprogramowaniem Keil ?Vision v4.22.22.0,
  • Telefon Samsung Galaxy S+ z oprogramowaniem GPS Status 3.8.1.

Telefon został wykorzystany jedynie do weryfikacji otrzymanych wyników z modułu Fastrax.

Konfiguracja sprzętowa

Do poprawnego podłączenia zestawu STM32VLDISCOVERY z płytką GPS potrzebne były trzy przewody. Przewód zielony użyty został do połączenia wyjścia danych modułu GPS z wyprowadzeniem mikrokontrolera STM32 umożliwiającym odczyt danych w standardzie UART. W tym celu pin TXD0 na płytce GPS połączony został z pinem PA10 na zestawie STM32VLDISCOVERY. Przewód czerwony wykorzystany został do zasilenia płytki GPS z zestawu STM32VLDISCOVERY. W tym celu połączono ze sobą pin VDD płytki GPS i wyprowadzenie 3V3 na zestawie STM32VLDISCOVERY. Alternatywną metodą zasilania płytki z modułem GPS jest użycie zasilacza zewnętrznego. Czarny przewód wykorzystany został do połączenia mas obu urządzeń. Do wejścia antenowego na płytce GPS podłączono antenę aktywną. Schemat elektryczny obrazujący opisane połączenia przedstawiono na rysunku 1.

 

Rys. 1. Schemat elektryczny

Rys. 1. Schemat elektryczny

 

Rys. 2. Zbliżenie na piny płytki GPS

Rys. 2. Zbliżenie na piny płytki GPS

 

 

Rys. 3. Zbliżenie na piny makiety STM32

Rys. 3. Zbliżenie na piny makiety STM32

 

Rys. 4. Połączenie makiety z modułem GPS

Rys. 4. Połączenie makiety z modułem GPS

 

Oprogramowanie

Oprogramowanie dla mikrokontrolera STM32 zostało napisane przy wykorzystaniu środowiska programistycznego Keil µVision oraz bibliotek STM32F10x StdPeriph Lib w wersji 3.5.0. Na rysunku 5 przedstawiono schemat blokowy programu.

 

Rys. 5. Schemat blokowy programu

Rys. 5. Schemat blokowy programu

 

Po uruchomieniu programu w pierwszej kolejności mikrokontroler STM32 konfiguruje wyprowadzenie PA10. Następnie konfigurowany jest interfejs komunikacyjny UART. Parametry pracy są zgodne z parametrami ustawionymi w module GPS:

  • Baudrate 9600,
  • 8 bitów danych,
  • 1 bit stopu,
  • Brak parzystości.

Dzięki temu wyprowadzenie PA10 może służyć do odbioru danych z modułu GPS. Następnie mikrokontroler oczekuje na odebranie tychże danych (są one kodowane zgodnie z protokołem NMEA0183). Bajt po odebraniu wpisywany jest do tablicy temp[] w miejsce o indeksie 0. Jeśli zawarta w nim informacja zostanie zinterpretowana jako znak inny niż ‘$’, następnych pięć odebranych bajtów wpisywanych jest pod kolejne indeksy tablicy temp[]. Znaki te symbolizują identyfikator zdania. Jeśli identyfikator nosi nazwę GPGLL, oznacza to, że dane, które po nim wyśle moduł GPS zawierają informację o czasie i pozycji GPS. W tej sytuacji kolejne bajty są wczytywane do tablic o nazwach time[], n[] oraz e[]. W tablicach tych znajdują się odpowiednio: aktualny czas, szerokość geograficzna i długość geograficzna.

Warto przyjrzeć się bliżej wybranym funkcjom programu. Część kodu została opisana w książce [1] i nie będzie powtórnie opisywana w tym opracowaniu.

W listingu 1 przedstawiono ciało funkcji getch(), która odpowiada za sczytywanie poszczególnych znaków do zmiennej. Docelowo funkcja wczytuje wartości do poszczególnych tablic. Dodatkowo funkcja zamienia każdy znak ‘,’ na znak ‘|’.

 

Listing 1.

 

W listingu 2 pokazano kod będący „sercem” całego programu. Odpowiada on za odczytywanie danych z modułu GPS i ich interpretację.

 

Listing 2.

 

Zestaw STM32VLDISCOVERY nie jest wyposażony w wyświetlacz, na którym można wyświetlić sczytane wartości, tak wiec tablice n[], e[] i time[] dodane zostały do podglądu w środowisku programistycznym (tak zwany Watch), aby móc odczytać ich zawartość (rysunek 6).

 

Rys. 6. Odczytane wartości z modułu GPS

Rys. 6. Odczytane wartości z modułu GPS

 

Dla porównania na rysunku 7 przedstawiono dane odczytane za pomocą aplikacji GPS Status w telefonie komórkowym.

 

Rys. 7. Odczytane wartości w programie GPS Status

Rys. 7. Odczytane wartości w programie GPS Status

 

Bardzo zbliżone informacje dotyczące lokalizacji z rys. 6 i rys. 7 świadczą o poprawnym napisaniu oprogramowania dla mikrokontrolera STM32.

Podsumowanie

Autorom udało się osiągnąć założony cel, jakim było opracowanie prostego urządzenia umożliwiającego odczytywanie danych z modułu GPS. Projekt może posłużyć jako punkt wyjścia dla bardziej rozbudowanych urządzeń wykorzystujących technologię GPS.

Bibliografia

[1] K. Paprocki, Mikrokontrolery STM32 w praktyce, wyd. BTC, Legionowo 2009.
[2] STM32VLDISCOVERY UM0919 User Manual, http://www.st.com/internet/com/
TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00267113.pdf (21.01.2012).
[3] Fastrax IT500 GPS Receiver TECHNICAL DESCRIPTION.

Autorami projektu i artykułu są studenci Wydziału Elektroniki Politechniki Wrocławskiej:
Łukasz Zasański
Magda Malicka
Kacper Kibała

Do pobrania

Autor: varhyid@o2.pl