- Mga Kinakailangan na Bahagi:
- Module ng GPS at Gumagawa Ito:
- Paghahanda ng Raspberry Pi upang makipag-usap sa GPS:
- Mga koneksyon para sa interface ng Raspberry Pi GPS interface:
- Pagsubok bago ang Python Script:
Ang isa sa mga pinakaastig na naka-embed na platform tulad ng Arduino ay nagbigay sa mga gumagawa at DIYer ng kakayahang makakuha ng data ng lokasyon na madaling gamitin ang module ng GPS at sa gayon ay bumuo ng mga bagay na umaasa sa lokasyon. Sa dami ng lakas na naka-pack ng Raspberry Pi, tiyak na magiging kahanga-hanga itong bumuo ng mga proyekto na batay sa GPS na may parehong murang mga module ng GPS at iyon ang pokus ng post na ito. Ngayon sa proyektong ito magkakaroon kami ng interface ng module ng GPS sa Raspberry Pi 3.
Ang layunin ng proyektong ito ay upang mangolekta ng data ng lokasyon (longitude at latitude) sa pamamagitan ng UART mula sa isang module ng GPS at ipakita ang mga ito sa isang 16x2 LCD, kaya't kung hindi ka pamilyar sa paraan ng 16x2 LCD na gumagana sa Raspberry Pi, isa pa ito mahusay na pagkakataong matuto.
Mga Kinakailangan na Bahagi:
- Raspberry Pi 3
- Neo 6m v2 GPS Module
- 16 x 2 LCD
- Pinagmulan ng kuryente para sa Raspberry Pi
- LAN cable upang ikonekta ang pi sa iyong PC sa mode na walang ulo
- Mga kable ng Breadboard at Jumper
- Resistor / potentiometer sa LCD
- Memory card 8 o 16Gb na tumatakbo sa Raspbian Jessie
Maliban doon kailangan naming mag-install ng GPS Daemon (GPSD) library, 16x2 LCD Adafruit library, na na-install namin sa paglaon sa tutorial na ito.
Narito ginagamit namin ang Raspberry Pi 3 kasama ang Raspbian Jessie OS. Ang lahat ng mga pangunahing kinakailangan sa Hardware at Software ay dati nang tinalakay, maaari mo itong tingnan sa Panimula sa Raspberry Pi.
Module ng GPS at Gumagawa Ito:
Ang GPS ay kumakatawan sa Global Positioning System at ginagamit upang makita ang Latitude at Longitud ng anumang lokasyon sa Earth, na may eksaktong oras ng UTC (Universal Time Coordinated). Ang module ng GPS ang pangunahing sangkap sa aming proyekto sa sistema ng pagsubaybay sa sasakyan. Tumatanggap ang aparatong ito ng mga coordinate mula sa satellite para sa bawat segundo, na may oras at petsa.
Nagpapadala ang module ng GPS ng data na nauugnay sa posisyon sa pagsubaybay sa real time, at nagpapadala ito ng napakaraming data sa format na NMEA (tingnan ang screenshot sa ibaba). Ang format na NMEA ay binubuo ng maraming mga pangungusap, kung saan kailangan lang namin ng isang pangungusap. Ang pangungusap na ito ay nagsisimula sa $ GPGGA at naglalaman ng mga coordinate, oras at iba pang kapaki-pakinabang na impormasyon. Ang GPGGA na ito ay tinukoy sa Global Positioning System Fix Data. Malaman ang higit pa tungkol sa pagbabasa ng data ng GPS at mga string dito.
Maaari kaming kumuha ng coordinate mula sa $ GPGGA string sa pamamagitan ng pagbibilang ng mga kuwit sa string. Ipagpalagay na nakahanap ka ng $ GPGGA string at iniimbak ito sa isang array, pagkatapos ay matatagpuan ang Latitude pagkatapos ng dalawang kuwit at angitude ay mahahanap pagkatapos ng apat na kuwit. Ngayon ang latitude at longitude na ito ay maaaring ilagay sa iba pang mga arrays.
Nasa ibaba ang $ GPGGA String, kasama ang paglalarawan nito:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, taas, M,, data ng checkum
Identifier |
Paglalarawan |
$ GPGGA |
Ang data ng system ng Global Positioning ayusin ang data |
HHMMSS.SSS |
Oras sa oras na minuto segundo at format ng milliseconds. |
Latitude |
Latitude (Coordinate) |
N |
Direksyon N = Hilaga, S = Timog |
Longhitud |
Longhitud (Coordinate) |
E |
Direksyon E = Silangan, W = Kanluran |
FQ |
Ayusin ang Data ng Kalidad |
NOS |
Bilang ng Mga satellite na Ginagamit |
HPD |
Pahalang na Paghahalo ng Katumpakan |
Taas |
Altitude mula sa antas ng dagat |
M |
Sukat |
Taas |
Taas |
Checksum |
Data ng Checksum |
Maaari mong suriin ang aming iba pang mga proyekto sa GPS:
- Batay sa Arduino Tracker ng Sasakyan gamit ang GPS at GSM
- Arduino Batay sa Sasakyan aksidente Alerto System gamit ang GPS, GSM at Accelerometer
- Paano Gumamit ng GPS gamit ang Arduino
- Subaybayan ang Isang Sasakyan sa Google Maps gamit ang Arduino, ESP8266 at GPS
Paghahanda ng Raspberry Pi upang makipag-usap sa GPS:
Okay kaya upang tumalon, kaya't hindi ito nakakasawa, ipagpapalagay kong marami ka nang nalalaman tungkol sa Raspberry Pi, sapat na upang mai-install ang iyong OS, makuha ang IP address, kumonekta sa terminal software tulad ng masilya at iba pang mga bagay tungkol sa PI. Kung mayroon kang anumang isyu sa paggawa ng alinman sa mga bagay na nabanggit sa itaas, pindutin ako sa ilalim ng seksyon ng komento at natutuwa akong tumulong.
Ang unang bagay na dapat nating gawin upang maisagawa ang proyektong ito ay upang ihanda ang aming Raspberry Pi 3 upang makapag-usap sa modyul ng GPS sa pamamagitan ng UART, maniwala ka sa akin, medyo nakakalito at medyo sinubukan itong maayos ngunit kung susundin mo ang aking gabay maingat na makukuha mo ito nang sabay-sabay, ito ay ang pinaka mahirap na bahagi ng proyekto. Dito ginamit namin ang Neo 6m v2 GPS Module.
Upang sumisid, narito ang isang maliit na paliwanag ng Paano Gumagana ang Raspberry Pi 3 UART.
Ang Raspberry Pi ay may dalawang built-in na UART, isang PL011 at isang mini UART. Ipinatupad ang mga ito gamit ang iba't ibang mga bloke ng hardware kaya't may kakaiba silang mga katangian. Gayunpaman, sa raspberry pi 3, ang module ng wireless / Bluetooth ay konektado sa PLO11 UART, habang ang mini UART ay ginagamit para sa linux console ouptut. Nakasalalay sa kung paano mo ito nakikita, tutukuyin ko ang PLO11 bilang pinakamahusay sa dalawang UART dahil sa antas ng pagpapatupad nito. Kaya para sa proyektong ito ay idi-deactivate namin ang module ng Bluetooth mula sa PLO11 UART gamit ang isang magagamit na overlay sa na-update na kasalukuyang bersyon ng Raspbian Jessie.
Hakbang 1: Ina-update ang Raspberry Pi:
Ang unang bagay na nais kong gawin bago simulan ang bawat proyekto ay ang pag-update ng raspberry pi. Hinahayaan ang gawin ang dati at patakbuhin ang mga utos sa ibaba;
sudo apt-get update sudo apt-get upgrade
pagkatapos ay i-reboot ang system sa;
sudo reboot
Hakbang 2: Pagse-set up ng UART sa Raspberry Pi:
Ang unang bagay na gagawin namin sa ilalim nito ay upang i-edit ang /boot/config.txt file. Upang magawa ito, patakbuhin ang mga utos sa ibaba:
sudo nano /boot/config.txt
sa ilalim ng config.txt file, idagdag ang mga sumusunod na linya
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 paganahin ang = 1 force_turbo = 1
ctrl + x upang lumabas at pindutin ang y at ipasok upang makatipid.
Tiyaking walang mga typo o error sa pamamagitan ng pag-double check bilang isang error dito maaaring mapigilan ang iyong pi mula sa pag-boot.
Ano ang mga kadahilanan para sa mga utos na ito, pinapagana ng force_turbo ang UART na gamitin ang maximum na dalas ng core na itinatakda namin sa kasong ito upang maging 250. Ang dahilan para dito ay upang matiyak ang pagkakapare-pareho at integridad ng serial data na natanggap. Mahalagang tandaan sa puntong ito na ang paggamit ng force_turbo = 1 ay magpapawalang bisa ng warranty ng iyong raspberry pi, ngunit asides iyon, medyo ligtas ito.
Ang dtoverlay = pi3-disable-bt ay ididiskonekta ang Bluetooth mula sa ttyAMA0 , ito ay upang payagan kaming ma-access na magamit ang buong UART power na magagamit sa pamamagitan ng ttyAMAO sa halip na ang mini UART ttyS0.
Pangalawang hakbang sa ilalim ng seksyong ito ng pag- set up ng UART ay ang i-edit ang boot / cmdline.txt
Iminumungkahi ko sa iyo na gumawa ng isang kopya ng cmdline.txt at i-save muna bago i-edit upang maaari mong bumalik dito muli kung kinakailangan. Maaari itong magawa gamit;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Palitan ang nilalaman ng;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.refer = yes rootwait tahimik na splash plymouth.ignore-serial-consoles
Makatipid at lumabas.
Sa tapos na ito pagkatapos ay kakailanganin nating i-reboot muli ang system upang maepekto ang mga pagbabago ( sudo reboot ).
Step3: Hindi pagpapagana ng Serbisyo na Serial Getty ng Raspberry Pi
Ang susunod na hakbang ay upang hindi paganahin ang serye ng Pi ng getty service , pipigilan ito ng utos na magsimulang muli sa pag-reboot:
sudo systemctl ihinto ang [email protected] sudo systemctl huwag paganahin ang [email protected]
Ang mga sumusunod na utos ay maaaring magamit upang paganahin itong muli kung kinakailangan
sudo systemctl paganahin ang [email protected] sudo systemctl simulan ang [email protected]
I-reboot ang system.
Hakbang 4: Paganahin ang ttyAMAO:
Hindi namin pinagana ang ttyS0, ang susunod na bagay ay para sa amin na paganahin ang ttyAMAO .
sudo systemctl paganahin ang [email protected]
Hakbang5: I-install ang Minicom at pynmea2:
Kami ay magiging minicom upang kumonekta sa module ng GPS at magkaroon ng kahulugan ng data. Isa rin ito sa mga tool na gagamitin namin upang subukan ay ang aming module ng GPS na gumagana nang maayos. Ang isang kahalili sa minicom ay ang daemon software GPSD.
sudo apt-get install minicom
Upang madaling mai-parse ang natanggap na data, gagamitin namin ang library ng pynmea2 . Maaari itong mai-install gamit ang;
sudo pip install pynmea2
Ang dokumentasyon ng library ay matatagpuan dito
Hakbang 6: Pag-install ng LCD Library:
Para sa tutorial na ito, gagamitin namin ang library ng AdaFruit. Ang silid-aklatan ay ginawa para sa mga screen ng AdaFruit ngunit gumagana rin para sa mga display board gamit ang HD44780. Kung ang iyong pagpapakita ay batay sa ito kung gayon dapat itong gumana nang walang mga isyu.
Mas maganda ang pakiramdam ko upang mai-clone ang library at direktang mai-install. Upang i-clone run;
git clone
baguhin sa cloned na direktoryo at i-install ito
cd./Adafruit_Python_CharLCD sudo python setup.py install
Sa yugtong ito, magmumungkahi ako ng isa pang pag-reboot kaya handa kaming magpatuloy sa pagkonekta sa mga bahagi.
Mga koneksyon para sa interface ng Raspberry Pi GPS interface:
Ikonekta ang Module ng GPS at LCD sa Raspberry Pi tulad ng ipinakita sa Circuit Diagram sa ibaba.
Pagsubok bago ang Python Script:
Nararamdaman ko ang kahalagahan nito upang subukan ang koneksyon ng module ng GPS bago magpatuloy sa script ng sawa, Gumagamit kami ng minicom para dito. Patakbuhin ang utos:
sudo minicom -D / dev / ttyAMA0 -b9600
kung saan kinakatawan ng 9600 ang rate ng baud kung saan nakikipag-usap ang module ng GPS. Maaari itong magamit para sa sandaling natitiyak namin ang komunikasyon ng data sa pagitan ng GPS at ng RPI, oras na upang isulat ang aming script sa sawa.
Maaari ring gawin ang pagsubok gamit ang pusa
sudo cat / dev / ttyAMA0
Sa Window, makikita mo ang mga pangungusap ng NMEA na tinalakay namin kanina.
Ang Python Script para sa tutorial na Raspberry Pi GPS na ito ay ibinigay sa ibaba sa seksyon ng Code.
Sa lahat ng sinabi at tapos na, oras na upang subukan ang buong sistema. Mahalaga na siguraduhin mong nakakakuha ng mahusay ang iyong GPS, sa pamamagitan ng paglabas nito, ang karamihan sa GPS ay nangangailangan ng pagitan ng tatlo hanggang 4 na mga satellite upang makapag-ayos, bagaman ang minahan ay nagtatrabaho sa panloob.
Tama ba ang trabaho? Oo…
May mga katanungan o komento? I-drop ang mga ito sa seksyon ng komento.
Ang Demonstration Video ay ibinibigay sa ibaba, kung saan ipinakita namin ang Lokasyon sa latitude at longitude sa LCD gamit ang GPS at Raspberry Pi.