Една от задачите e да използвам Raspberry PI за поемане на задълженията метеорологична станция.
Raspberry PI платката не е снабдена с часовник за реално време - което означава, че трябва да използвате сървър NTP.
Обикновено трябва да използвате настройките по подразбиране и да се позволи на PI да се свържете с Интернете.
Сега това е добре, ако имате работеща интернет връзка, но какво ще стане ако не сте свързани към мрежата?
Може да се помисли за употребата на PI с батерии. Сега очевидно решение тук е да се използва GPS като източник на точно време.
GPS работи благодарение на спътници в орбита и всеки един носи много точен атомено сверяван часовник.
Така че, в тази статия ще стане дума как да използвате приемник GPS с Rasperry PI - въпреки че тези инструкции не са специфични за PI.

Хардуерът

За този експеримент съм ползвал USB GPS приемник.

Raspberry PI с GPS приемник.

Устройството идва със CD за Windows, но нямаме нужда от него - като по-голямата част от GPS приемници, които познавам от употреба си полават сериен порт.
Когато се включи се появява като сериен порт.

Включете го и напишете lsusb

pi@raspberrypi:~$ sudo lsusb

Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


Prolific е нашия GPS явяващ се като сериен порт.
Ако се вгледате в /var/log/syslog ще забележите, че е създаден COM порт като /dev/ttyUSB0 като това е първият сериен порт.

Използване на PI като GPS приемник

Сега следващата стъпка е да накарате PI да получава данни от сателитите.
Трябва ни пакет от инструменти, достъпни за Linux нарича gpsd , който ще инсталирате:
pi@raspberrypi:~$ sudo apt-get install gpsd gpsd-clients python-gps
След това стартирате демона:
pi@raspberrypi:~$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock

Игнорирай всички съобщения от конзолата или в лог файла, може да видите, че се оплакват от IPv6.

Преглед на местоположението ви по GPS

GPS не работи на закрито - тъй като се нуждае от ясна видимост към небето. Поставете PI на перваза на прозореца.
Сега в SSH в PI стартираме cgps.

pi@raspberrypi:~$ cgps -s

След това трябва да получите следния резултат:

	┌───────────────────────────────────────────┐┌─────────────────────────────────┐
	│    Time:       2012-06-18T15:05:10.0Z     ││PRN:   Elev:  Azim:  SNR:  Used: │
	│    Latitude:    51.231848 N               ││  14    43    249    40      Y   │
	│    Longitude:    0.514014 E               ││  25    75    283    37      Y   │
	│    Altitude:   132.3 m                    ││   2    26    085    31      Y   │
	│    Speed:      0.0 kph                    ││  12    56    070    18      Y   │
	│    Heading:    0.0 deg (true)             ││   9    19    133    22      Y   │
	│    Climb:      0.0 m/min                  ││  27    09    133    17      Y   │
	│    Status:     3D FIX (1 secs)            ││   4    17    045    31      Y   │
	│    GPS Type:                              ││  32    05    321    20      Y   │
	│    Longitude Err:   +/- 8 m               ││  29    41    192    18      Y   │
	│    Latitude Err:    +/- 9 m               ││  31    28    304    42      Y   │
	│    Altitude Err:    +/- 27 m              ││                                 │
	│    Course Err:      n/a                   ││                                 │
	│    Speed Err:       +/- 68 kph            ││                                 │
	│                                           ││                                 │
	│                                           ││                                 │
	│                                           ││                                 │
	│                                           ││                                 │
	│                                           ││                                 │
	└───────────────────────────────────────────┘└─────────────────────────────────┘

Тук можете да видите, че е се получава информация от 10 спътника и има времето и местоположението ви.
В 3D раздел FIX ви казва, че има достатъчно данни за 3D определяне на местоположението ви (т.е. надморска височина).

Настройка на компютърnoto време, използвайки GPS

Сега имаме работещ GPS и сега може да ползвате PI за настройка на времето.
За да направите това, ние трябва да конфигурирате NTP да се използва GPS сателити като източник време.
Сега вече трябва да имате NTP инсталиран, но ако не, тогава трябва да го инсталирате:

pi@raspberrypi:~$ sudo apt-get install ntp

След това трябва да редактирате файла: /etc/ntp.conf и да добавете няколко реда за определяне на GPS.
Това може да бъде преди или след съществуващи линии:

# gps ntp
server 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid PPS

Сега рестартирайте NTP:

pi@raspberrypi:~$ sudo service ntp restart

Сега, ако запитате сървъра след известно време трябва да синхронизира:

pi@raspberrypi:~$ ntpq -p

	==============================================================================
	*ns1.luns.net.uk   33.117.170.50    2 u   54  64    7   65.454   2.666   5.800
+resntp-b-vip.lo   127.151.91.34    3 u   45  64   17   55.704   -5.169  8.482
+bart.nexellent.   194.242.34.149   2 u   17  64   17   76.585   -4.271  57.595
+v01.s01.be.it2g   193.190.230.65   2 u   20  64   37   86.464   -2.374 228.460
xSHM(0)           .NMEA.            0 l   11   16  377    0.000 144.714   3.026
SHM(1)            .PPS.             0 l    -   16   0    0.000    0.000   0.000

Няколко бележки:

Може да откриете, че NTP не се свързва с GPS в началотоа.
Изглежда, че cgps опитва без връзка към серийния порт.
Това, което трябва да се направи е:

pi@raspberrypi:~$ sudo killall gpsd
pi@raspberrypi:~$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
pi@raspberrypi:~$ sudo service ntp restart

След като съм направил това, се оправя и започва да работи нормално.
Понякога работи cgps обаче изчаква за определяне на GPS позицията.

Цвят 1-ви цвят 2-ри цвят коеф. отклон.
черно 0 0 1 не
кафяво 1 1 10 не
червено 2 2 100 не
оранжево 3 3 не
жълто 4 4 10к не
зелено 5 5 100к не
синьо 6 6 не
виолетово 7 7 10м не
сиво 8 8 не не
бяло 9 9 не не
златно не не не ±5%
сребърно не не не ±10%


Трябва да се запомни , че винаги златния и сребърния цвят са последни.

Индексите на първия и втория цвят се поставят един до друг (пр. зелено,черно = 50Ω ).

Индекса на третия цвят се умножава по полученото от първите два (пр. червено 50 х 100 =5000Ω=5КΩ).

Четвъртия цвят се поставя отзад и означава толеранс (допустимо отклонение ) .Пример. 1.5 КΩ ±5%

Какво представлява GPS (Global Positioning System) системата? Тя се състои от 24 спътника, изпратени в орбита от правителството на САЩ с чисто военни цели, но от 80-те години възможностите й са достъпни и за цивилното население. Тя работи 24 часа в денонощието, покрива всяко кътче от света и за ползването й не се изисква плащане на никаква абонаментна или инсталационна такса. Принципът на работа е следния: спътникът изпраща сигнал до GPS-приемника на земята и сравнява часа на изпращане с часа на приемане. При наличието на поне три спътника местоположението на приемника се регистрира с достатъчна точност за да се определи къде се намира приемното устройство, респективно превозното средство или какъвто и да е движещ се обект. Ако спътниците са четири или повече, вече има възможност да се определи и надморската височина, да се изчислят скорост, посока, изминато разстояние и всичко свързано с движението. Акуратността на GPS сигнала е до толкова прецизна, че времето може да бъде определено с точност до една милионна част от секундата. Аналогична е точността за определяне на скоростта и местоположението на обекта.

 
Глобалната система за позициониране е разделена на три сегмента:

1.Космически:
Космическият сегмент се състои от групировка от минимум 24 оперативни GPS спътника, разположени в 6 геоцентрични орбитални равнини, съдържащи по 4 спътника с наклон на орбитата спрямо екватора под ъгъл 55°. Спътниците са разположени така, че във всеки момент и във всяка точка на Земята да се виждат най-малко 4 от тях. Всеки спътник има на борда 4 атомни часовника и извършва една пълна обиколка на своята орбита за 11 часа и 58 минути (половин звезден ден).GPS-спътниците излъчват сигнал на две носещи честоти: L1 (1575,42 MHz) и L2 (1227,60 MHz), които са кратни на стандартната честота (10,23 MHz) на атомните часовници на борда и са модулирани с C/A- („coarse acquisition“) и P- („precise“) кодове. Целта на използването на две честоти е елиминирането на грешката, получена от закъснението на сигнала при преминаването му през йоносферата. От тези честоти и кодове единствено L1- и C/A-код са достъпни за цивилните потребители, останалите са запазени за военни цели.Съществуват 3 категории GPS-спътници: Блок I: извеждани в орбита между 1978 и 1985. Този тип спътници имат продължителност на живота около 4,5 години и вече не са активни. Основната разлика между тях и другите версии е, че спътниците от този тип нямат възможност да деградират сигнала. Блок II и IIa: извеждани в орбита след 1985 и имат продължителност на живота около 7,5 години. Спътниците от този тип имат възможност да деградират сигнала. Блок IIr: извеждани в орбита след 1996 и имат продължителност на живота около 10 години. В спътниците от този тип е добавена възможност за комуникация между тях.

2.Контролен:
Контролният сегмент се състои от 5 наблюдателни наземни станции, разположени по целия свят; наземни антени и един главен контролен център в Колорадо Спрингс, които контролират работата на всеки спътник и са отговорни за измерване параметрите на орбитите на спътниците и на отклонението на часовниците, прогнозиране на параметрите на орбитите, синхронизирането на атомните часовници, подаване на данни за препредаване от сателитите.

3.Потребителски:
Потребителският сегмент се състои от GPS приемници, използващи се както за военни, така и за цивилни приложения. GPS приемникът декодира времеви сигнал, подаван от атомните часовници на няколко сателита, и изчислява позицията си с помощта на трилатерация (сходен, но различен от триангулацията метод). В момента съществува голямо разнообразие от GPS приемници, които се различават по много показатели, като точност, форма, приложение, цена и т.н. GPS приемници се използват главно за навигация в пътния, морския и авиационния транспорт, в селското стопанство, както и за точно определяне на времето и синхронизация в някои области на индустрията. Модели на сравнително евтини приемници, които се съчетават с компютри, PDA или други устройства, са достъпни за потребителите и могат да бъдат използвани за навигация на автомобили, при спортни състезания, планински преходи и дори за водачи на слепи хора.