Dziś chciałbym przedstawić coś bardzo prostego, coś co każdy będzie mógł podłączyć do swojego PC, Rasberry, Arduino czy w końcu naszego Cubietrucka... Zajmiemy się tematem odbiornika GPS. O zaletach GPS-a raczej nie musimy wspominać, pokrótce pozwala on na zlokalizowanie naszego położenia względem poruszających się na widnokręgu satelitów geostacjonarnych. W cenie ok. 7$ możemy kupić moduł U-BLOX NEO-6M, który ze względu na swoje własności (a zwłaszcza cena!) pozwala na szersze zainteresowanie się tematem.
Kilka słów o naszym odbiorniku:
Napięcie zasilania: od 2,7 V do 5,0 V
Pobór prądu: ok. 80 mA
Komunikacja: NMEA, UART 4800, 9600 (domyślnie), 19200, 38400, 57600, 115200, 230400 bps
Dokładność pozycji: 2,5 m
Czułość: -161 dBm
Odświeżenie: do 5 Hz
Ciepły/zimny/gorący start: 27 sekund / 27 sekund / 1 sekunda
Posiada wbudowaną antenę oraz złącze do wyprowadzenia wersji zewnętrznej u.F (w zestawie)
Po więcej szczegółów odsyłam do noty producenta, dodatkowo polecam wpis na blogu /dev/jarzebski
Do zabawy z naszym odbiornikiem GPS potrzebny nam będzie jeszcze konwerter USB <-> RS232 (standard TTL). Oczywiście wymagany on jest w przypadku, gdy nasze urządzenie nie posiada wyprowadzeń dla RS232 TTL (np. PC). Zastosowanie konwertera pozwala na podłączenie naszego odbiornika GPS do dowolnego urządzenia posiadającego USB.
A tak wygląda mój "zestaw":
Dodatkowym elementem wykorzystanym przeze mnie jest miernik poboru mocy wpięty pomiędzy port USB a konwerter. Jak łatwo zauważyć, odbiornik GPS nie jest urządzeniem bardzo energooszczędnym .
Po podłączeniu naszego odbiornika z wykorzystaniem konwertera możemy sprawdzić, czy odbiornik pracuje:
Code: Select all
root@ct10:~# cat /dev/ttyUSB0
$PGSV,1,1,00*79
$GPGLL,,,,,,V,N*64
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
$GPTXT,01,01,01,NMEA unknown msg*58
^C
root@ct10:~#
Oprogramowanie
Program gpsd jest popularnym daemonem, za pomocą którego możemy odczytywać dane z naszych odbiorników:
Code: Select all
apt-get update
apt-get install gpsd gpsd-clients
Jeśli znamy już nazwę urządzenia za pomocą którego dostępny jest nasz odbiornik powinniśmy skonfigurować gpsd poprzez edycję pliku /etc/default/gpsd:
Code: Select all
vim /etc/default/gpsd
Code: Select all
# Default settings for the gpsd init script and the hotplug wrapper.
# Start the gpsd daemon automatically at boot time
START_DAEMON="true"
# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyUSB0"
# Other options you want to pass to gpsd
GPSD_OPTIONS=""
Oczywiście, w przypadku gdy podłączamy nasz odbiornik bezpośrednio do magistrali RS232 TTL, nazwa urządzenia bedzie inna (np. /dev/ttyS0). Po edycji pliku należy zrestartować demona gpsd:
Code: Select all
service gpsd restart
Od tej pory masz gpsd będzie w stanie pobierać dane z odbiornika i można będzie je odczytywać za pomocą klientów gps (cgps, xgps, ...):
Na powyższym obrazku widzimy, że nasz odbiornik "zauważył" już 2 satelity... ale wciąż nie zna swojego położenia. Generalnie w budynku trudno jest uzyskać zadowalające wyniki i czasem warto zaopatrzyć się w wydajniejszą antenę...