Eh, przez dłuższy czas nic nie pisałem, ale wiadomo sezon ogórkowy, upały i nic ciekawego nie można było napisać. Do teraz.
Jakiś czas temu przerabiałem problem GPS Loggera na Arduino (archiwum) z wykorzystaniem modułu Novatel SUPERSTAR II. Temat powrócił ze względu na częste wypady autem w różne miejsca w Polsce i za granicą oraz chęć zarejestrowania tego w postaci konkretnego śladu z terenu. Niestety turystyczny GPS Garmina eTrex VistaCX jaki posiadam nie nadaje się do tego, w prawdzie nie do tego został stworzony, świetnie sprawdza się w górach i to mi wystarcza. Dlatego też postanowiłem zrobić własny GPS Logger na bazie Arduino oraz wspomnianego odbiornika Novatel, który bez problemu można dostać na Allegro lub sklepie klawiatura.pl w cenie ok 40zł.
Budowa
Poprzednia wersja „projektu” wykonana była na płytce prototypowej bez możliwości logowania na zewnętrznym nośniku. Obecnie po czasie wzmożonych poszukiwań w sieci udało się znaleźć prosty i zarazem skuteczny sposób obsługi karty SD przez Arduino. Projekt dorobił się również własnej płytki PCB w postaci „shieldu” do Arduino. Płytka jest specjalnie dostosowana pod odbiornik Novatel SUPERSTAR II. Jednym słowem programujemy Arduino, nakładamy shield i jedziemy w terem :-) nic więcej nie trzeba robić, to po prostu działa.
Schemat mojego GPS Loggera składa się z dwóch części. Pierwsza cześć skupia się na podłączeniu karty SD do mikrokontrolera. W tym wypadku użyto czterech trój stanowych buforów w postaci układu 74HC125N. Druga część to podłączenie odbiornika GPS Novatel. Założono z góry, że cały układ ma mieć możliwość ograniczania poboru prądu w przypadku korzystania z zasiania zewnętrznego, np. baterii 9V. Dlatego też zastosowano tranzystor NPN do załączania i wyłączania odbiornika GPS. Nie zawsze w prawdzie jest konieczność logowania położenia co 1s, dlatego też w czasie gdy odbiornik nie wysyła żadnych danych jest wyłączany. Ograniczeniom poboru prądu podlega też płytka Arduino, dzięki użyciu specjalnych funkcji przedstawionych w dokumentacji tegoż projektu.
Projekt GPS Loggera został wykonany w programie Eagle, który jest dostępny za darmo na stronie producenta. Dostępna jest wersja na Windowsa, Linuksa i MAC OS. Zarówno schemat jak i płytka PCB została w nim zaprojektowana. Użyto również dodatkowych bibliotek z komponentami elektronicznymi, wśród których jest m.in. Arduino. Link do biblioteki - jest tutaj.
Działanie i obsługa
Jak widać na zdjęciach płytka podsiada diody LED, które stanowią jedyne źródło informacji o pracy urządzenia. Dioda zielona tuż po podłączeniu urządzenia do zasilania pulsacyjnym trybem pracy informuje o próbach złapania fixa. Czas ten zależy od tego czy odbiornik GPS posiada baterię podtrzymującą (żółta bateria 3V z diodą zabezpieczająca przez rozładowywaniem). W tym wypadku fix jest łapany w zakresie 15-30sek. Brak baterii może znacznie przedłużyć czas łapania pozycji.
Po złapaniu fixa status diod LED się zmienia i jest następujący: dioda zielona pali się cały czas, a czerwona pulsuje w momencie zapisu pozycji na karcie. Przewidziana jest również obsługa błędów, głównie związana z problemami dotyczącymi karty SD.
Układ zawiera również przycisk Reset, przydatny do szybkiego zresetowania programu. Zworka znajdująca się tuż obok diod przydaje się w czasie programowania Arduino. Przed wykonaniem tej czynności należy wyjąc zworkę i przeprowadzić proces programowania. Do poprawnego działania układu zworka musi być założona. Zworka ma też inne zadanie, przerywa strumień danych z GPSa, dlatego też jeżeli chcemy przerwać logowanie położenia wyciągamy zworkę i odłączamy źródło zasilania. Analogicznie jak w świece komputerów- przerwa w czasie zapisu danych na nośniku powoduje uszkodzenie tych danych.
Należało by napisać o nośniku. Wymagana jest karta SD lub microSD, miniSD w odpowiednim konwerterze do rozmiarów kart SD. Konwerter taki jest często dodawany przy zakupie kart w wersji mini i mikro. Kartą musi mieć jedną partycję sformatowaną jako FAT16. Na karcie SD tworzą się pliki o nazwie TRACKXX.txt i zawierają informacje o położeniu w formacie NMEA. Każdorazowe włączenie urządzenia do zasilania tworzy kolejny plik na karcie.
Obróbka plików z danymi
Pliki możemy obrobić w wieloraki sposób, cel jest jeden – plik gpx lub kml (Google Earth). Przekonwertować możemy za pomocą gpsbabel – konsolowej aplikacji lub strony gpsvisualizer.com
Plany na przyszłość
Chciałbym oczywiście dalej rozwijać projekt i już mam pewne pomysły jakie chciałbym wdrożyć. Pierwszym jest dodanie modułu GSM w celu komunikowania się z telefonem komórkowym poprzez wiadomości SMS. Jako moduł GSM zastosował bym SIM300D, ogólnie łatwo dostępny i tani! moduł GSM. Posiada dobrą dokumentację i można znaleźć parę przykładów w sieci. Wtedy będzie można śledzić na żywo pojazd/osobę posiadającą przy sobie takie urządzenie. Innym ciekawym pomysłem jest dodanie wyświetlacza LCD, nie musi to być skompilowany i duży. Chciałbym porostu aby pokazywał przydatne informacje. Pomysłów jest wiele, wśród nich też uniezależnienie od płytki Arduino, czyli przeniesienie na jedną nie duża płytkę PCB z mikrokontrolerem zawierającym boobloader Arduino, gdyż porostu świetnie się go programuje.
Pliki
Wersja 1.0:
Archiwum zawierające pliki Eagle
Pozostałe dokumenty:
Dokumentacja Novatel SUPERSTAR II

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 3.0 Polska.







