Debian

The ULTIMATE OS

Get Adobe Flash player

Потребителски рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

GPS локация и визуализация на местоположение с OpenCPN

В тази интересна статия ще разгледам един проект, който е реализиран от Светлозар Михайлов (Този имейл адрес е защитен от спам ботове. Трябва да имате пусната JavaScript поддръжка, за да го видите.) използвайки OpenCPN, като аз нямам физическо участие в проекта, а допринесох само малко насоки и обработване на написаната инструкция от него.

Преди да опиша в детаили кое, как и защо е направил той ще кажа няколко думи за проекта и неговата идея. Светлозар имаше за цел да визуализира точното полжение на обект (на който се намира) на система от екрани/монитори/телевизори, които също са монтирани на самият обект. Точно за тази цел Pi-то е идеално, защото разполагал с аналогов вход а малинката разполага с такъв аналогов изход освен HDMI-изхода.

Другото предимство е факта, че ако вземе някое "специализирано" решени, би струвало много по-скъпо и евентуална промяна в текущото положение (система за визуализация на обекта) или развитие в бъдеще би създало само проблеми. И така на помощ ни идва Raspberi Pi... Естествено вие може да ползвате и HDMI изхода ако пожелаете :-)

Да започнем спърво с необходимият ни хардуер. Аз ще си позволя да опиша и защо такъв е избран като тип а не точно като модел/вид.

- RaspberiPi естествео. Модел В е подходящ за нашата цел, поради повечето рам и наличието на аналогов видео иход. Само вметка странична. Вече се произвежда модел В2, но той няма аналогов видео изход.

- USB hub, който е по ваше усмотрение. 4 портов е повече от достатъчен за целта. Ако си вземете такъв със захранване няма да имате нужда от захранване, понеже малинката ще се захранва от него

- Захранващ модул, като такъв с мощност 1А ни е достатъчен

- Самият GPS модул NEO6M 9600 MHz, който служи за "декодиране" на GPS сигнала и положението

- USB-TTL конвертор Pl2303. Този модул служи за преобразуване на серийният TTL сигнал, който идва от GPS модула към USB интерфейса.Има различни USB/TTY адаптери както на модули, така и на готови окабелени такива, изборът е изцяло Ваш.

- GPS антена, като нейната цел е ясна.

- Клавиатура и мишка естествено. Ако използвате нещо подобно на ТОВА (което аз ползвам и Ви препоръчвам) няма да ви е нужен и usb hub.

Ето и няколко снимки на избраните модули

IMAG0387 IMAG0386
IMAG0384 IMAG0383

И така да запретнем ръкави и да свържем всичко. Аз само ще опиша нещата без да качвам снимки, защото е ненужно.

Оърво трябва да свържем GPS модула с USB-TTL конвертора. Ако погледнете снимките, ще видите че всяко от тях има по 4 букси/клеми/точки за запояване. А те са именно GND, Tx, Rx, VCC. GND трябва да е преяделно ясно какво е, VCC е напреженов изход, като имайте на предвид, че напрежението на VCC, което свързвате трябвада отговаря/бъде еднакво на GSP модула и TTL конвертора. Tx-transmit (изпращане на данни) и Rx-recieve (приемане на данни). Когато свързвате/запоявате тези 4 сигнала имайте на предвид, че Tx трябва да се срещне с Rx и обратно. С други думи трябва да се свърже така:

GPS--------------USB/TTL

GND <-----------> GND

VCC <-----------> VCC

Tx    <-----------> Rx

Rx    <-----------> Tx

След като направим тази връзка, свързваме всичко останало RaspberyPi-HUB-GPS+Antena-USB/TTL-Power-KBD-Mouse и т.н. Приемаме, че вече имаме инсталиран Raspbian.

Ще вметна, че ще ни трябва връзка с интернет т.е. USB-WiFi адаптор или да сме свързани чрез Ethernet интерфейса (LAN). Също таказа добрата работа на GPS модула е необходимо антената да е на открито с пряка "вифимост" към небето. Ако всичко е свързано правилно ще видите на GPS модула премигващ светодиод, като такъв има и на USB/TTY адаптера. Това означава че има обмен на данни между двете устройства и сте свързали правилно 2-та модула.

И сега... да се захващаме със софтуерната част и конфигурирането. Както винаги първо обновяваме всички пакети до последни версии чрез:

$ sudo apt-get update
$ sudo apt-get upgrade

Нека сега проверим дали USB/TTL адаптера е разпознат успешно от малинката. В конзолата написваме:

$ ls /dev/ttyUSB*

и би трябвало да ни се появи нещо подобно на

$ dev/ttyUSB0

Ако имате проблем може да видите какви USB устройства са включени във вашия Pi като напишете в конзолата:

$ sudo lsusb

В този случай ще ви се изпишат всички вкл. USB устройства като клавиатура, мишка, TTL адаптора и др. В нашият случай ние търсим и трябва да видим нашият адаптер – Prolific PL2303. А за да видите какви данни се обменят между GPS модула и компчвто написвате, като за да спрем командата натискаме CTRL+C:

$ sudo cat /dev/ttyUSB0

Сега. Имаме работещ USB/TTL конвертор разпознат правилно от системата, има комуникация между него и GPS модула и продулжаваме напред.

За целта инсталираме следните пактеи, чиято цел е да стартират deamon-a (услугата) декодираща серийните данни от вашия GPS подадени през /dev/ttyUSB0. Таква програма е демонът GPS – gpsd. За целтра инсталираме пакети gpsd gpsd-clients python-gps  и стартираме daemon-a чрез следните команди:

$ sudo apt-get install gpsd gpsd-clients python-gps
$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock

След стартиране на услугата проверяваме дали всичко работи коректно с командата

$ cgps –s

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

cgps -s

Ако това не стане, трябва да рестартираме daemon-a със следните команди и всичко ще е наред:

sudo killall gpsd
sudo gpsd /dev/ttyUSB0 –F /var/run/gpsd.sock

С това инсталацията на GPS модула е завършена и данните получени от него могат да се ползват от различни програми освен OpenCPN.

Да преминем към инсталацията на самата програма OpenCPN. Въоръжете се с тъпение, кафе или кой каквото харесва преди да продължим нататък. Приемаме, че сме с потребител pi и негова домашна директория /home/pi. Изчакайте да завърши всеки един процес преди да преминете към следващият.

$ cd /home/pi
$ mkdir opencpn
$ cd opencpn/
$ wget http://agurney.com/raspi/opencpn_3.2.0-1_armhf.deb
$ sudo apt-get install libwxgtk2.8-0 libglu1-mesa libtinyxml2.6.2 libwxbase2.8.0 libportaudio2 libjack-jackd2-0
$ sudo dpkg -i opencpn_3.2.0-1_armhf.deb

Накратко какво направихме с тези команди. Влезнахме в нашата домашна директория, създадохме папка opencpn, изтеглихме файл хххх.deb, инсталирахме няколко допълнителни пакета и ръчно иснатлирахме вече изтегленият .deb пакет. Ако желаете да имате икона на десктопа, трябва да копираме едно файлче ето така:

cp /usr/local/share/applications/opencpn.desktop /home/pi/Desktop/

Ако тук ни се появи съобщение за грешка, ние смело я пренебваме и продължихме по-нататък.
От тук продължаваме с още малко задачки. Трябва да свалим единин скрипт файл, да му дадем права за изпълнение и да го стартираме. Ето и точните команди:


$ cd ~
$ wget http://agurney.com/raspi/opencpn_install.sh
$ chmod +x opencpn_install.sh
$ ./opencpn_install.sh

На това място място се въоръжете с търпение, кафе, сок или идете на кино. Инсталацията ни отне около 2 часа.След това нашето търпение бе възнаградено със собщение за инсталиране на икона на десктопа и... отново се върнахме в командния ред.

Последното, което ще направим е да редактираме config.txt файла. Само ще вметна, че този файл се намира на FAT32 дяла на картата и може да го "докопаме" и под Windows, но ние като заклети Linux фенофе ще го редактираме под Linux. Можете да го направите, с който и да е редактор като например nano или vim. За примера ще използваме nano.

$ sudo nano /boot/config.txt

В краят на файлът трябва да добавим следните 2 реда и да рестатираме pi-то, за да може да влезнат в сила промените.
framebuffer_depth=32
framebuffer_ignore_alpha=1

И сега рестартираме:

$ sudo reboot

Малка вметка. Когато ползвате OpenCPN, картите, който ползваме/сваляме, може да съхраняват в отделна директория, като за целта ни си харесахме /usr/local/share/charts.

$ mkdir /usr/local/share/charts

След като сме направили всичко до тук, затваряме LXterminal-a и се връщаме на нашият Desktop. Ако не сме в графична среда просто я пускаме с : startx.

На нашият desktop вече ни очаква инсталирана програмата и създаден път към нея. Просто я пускаме и ни се показва/отваря следният прозорец с първоначални настройки.

OpenCPNinit

Тук в полето Data Connection трябва да разрешим/изберем ENABLE на нашият сериен интерфейс т.е. USB/TTL модула. Ако не е наличен запис в това поле добавяме чрез бутонът Add Connection съответно /dev/ttyUSB0 и правим скоростта за пренос 9600bps.

В менюто Chart, следващото отдясно имате възможност да изберете директорията за картите. Тук избираме папката, която създадохме по-горе а именно /usr/local/share/charts. Също така там трябва да поставим и файловете с картите, които сме свалили от другаде.

Нека Ви оставим удоволствието от разучаване на програмата.

Освен това цялото подробно ръководство е подробно описано в интернет. Ето какво се вижда обаче ако нямаме инсталирани карти. Виждате от снимката одолу, че версията на програмата е 3.2.2, сложили сме един плъгин за компас, координати и състояние на сателитите.

OpenCPN

Може още много да се надстройва, но ние сме се спрели до тук, като предполагаме, че няма да ползваме интернет и затова не сме инсталирали плъгини за метео обстановката. Сигурно може да се надстройва и още като се включат AIS настройки. За това ще е нужен транспондер и не е предмет на нашия проект. Нека остане отворен и нека други споделят своите успехи. Както видяхте програмата стартира от Х средата.

Малко информация за консумацията. Системата Pi/GPS/USB-TTL/KBD е захранена от зарядно за телефон HTC с капацитет 1 А или 1000mA, кой както предпочита.

При всичко работещо, консумацията не надвишава 570-600 mA, което е повече от прекрасно. Напрежението на зарядното е стабилно и не пада под 5 V (както и трябва и да бъде).

OpenCPNpower

Ето и резултатите от натоварването на процесора при работа на системата.

OpenCPNcpu

Предстои ни да тестваме системата в реални условия на река Елба през месец септември 2014. Естествено ще споделим резултатите.

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

Enjoy!!!