- Vaaditut komponentit:
- GPS-moduuli ja sen toiminta:
- Raspberry Pi: n valmistelu kommunikoimaan GPS: n kanssa:
- Raspberry Pi GPS -moduulin liitännät:
- Testaus ennen Python-komentosarjaa:
Yksi hienoimmista sulautetuista alustoista, kuten Arduino, on antanut valmistajille ja DIY-valmistajille mahdollisuuden saada sijaintitiedot helposti GPS-moduulin avulla ja siten rakentaa sijaintiin perustuvia asioita. Raspberry Pi: n pakattaman tehon ansiosta on varmasti mahtavaa rakentaa GPS-pohjaisia projekteja samoilla halvoilla GPS-moduuleilla, ja tämä on tämän viestin painopiste. Tänään tässä projektissa liitämme GPS-moduulin Raspberry Pi 3: n kanssa.
Tämän projektin tavoitteena on kerätä sijaintitiedot (pituusaste ja leveysaste) UART: n kautta GPS-moduulista ja näyttää ne 16x2 LCD: llä, joten jos et ole perehtynyt tapaan, jolla 16x2 LCD toimii Raspberry Pi: n kanssa, tämä on toinen loistava tilaisuus oppia.
Vaaditut komponentit:
- Vadelma Pi 3
- Neo 6m v2 GPS-moduuli
- 16 x 2 LCD-näyttö
- Virtalähde Vadelma Pi: lle
- LAN-kaapeli pi: n liittämiseksi tietokoneeseen Headless-tilassa
- Leipälauta- ja hyppyjohdot
- Vastus / potentiometri nestekidenäyttöön
- Muistikortti 8 tai 16 Gt, jossa Raspbian Jessie
Sen lisäksi meidän on asennettava GPS Daemon (GPSD) -kirjasto, 16x2 LCD Adafruit -kirjasto, jonka asennamme myöhemmin tässä opetusohjelmassa.
Tässä käytämme Raspberry Pi 3 : ta Raspbian Jessie OS: n kanssa. Kaikista laitteisto- ja ohjelmistovaatimuksista on keskusteltu aiemmin, voit etsiä niitä Vadelma Pi -johdannasta.
GPS-moduuli ja sen toiminta:
GPS tarkoittaa globaalia paikannusjärjestelmää ja sitä käytetään minkä tahansa maan sijainnin leveys- ja pituuspiirin tunnistamiseen tarkalla UTC-ajalla (Universal Time Coordinated). GPS-moduuli on ajoneuvojen seurantajärjestelmäprojektimme pääkomponentti. Tämä laite vastaanottaa satelliitilta jokaisen sekunnin koordinaatit, kellonajan ja päivämäärän.
GPS-moduuli lähettää seurantapaikkaan liittyvät tiedot reaaliajassa, ja se lähettää niin paljon tietoja NMEA-muodossa (katso alla oleva kuvakaappaus). NMEA-muoto koostuu useista lauseista, joissa tarvitsemme vain yhden lauseen. Tämä lause alkaa $ GPGGA: sta ja sisältää koordinaatit, ajan ja muuta hyödyllistä tietoa. Tätä GPGGA: ta kutsutaan globaalin paikannusjärjestelmän korjaustiedoksi. Lisätietoja GPS-tietojen ja niiden merkkijonojen lukemisesta on täällä.
Voimme poimia koordinaatin $ GPGGA-merkkijonosta laskemalla merkkijonossa olevat pilkut. Oletetaan, että löydät $ GPGGA-merkkijonon ja tallennat sen matriisiin, niin Latitude löytyy kahden pilkun jälkeen ja Longitude neljän pilkun jälkeen. Nyt nämä leveys- ja pituuspiirit voidaan sijoittaa muihin matriiseihin.
Alla on $ GPGGA-merkkijono ja sen kuvaus:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, leveysaste, N, pituusaste, E, FQ, NOS, HDP, korkeus, M, korkeus, M`` tarkistussummatiedot
Tunniste |
Kuvaus |
$ GPGGA |
Globaalin paikannusjärjestelmän korjaustiedot |
HHMMSS.SSS |
Aika tunnissa sekunteina ja millisekunteina. |
Leveysaste |
Leveysaste (koordinaatti) |
N |
Suunta N = pohjoinen, S = etelä |
Pituusaste |
Pituusaste (koordinaatti) |
E |
Suunta E = itä, W = länsi |
FQ |
Korjaa laatutiedot |
NOS |
Käytettyjen satelliittien lukumäärä |
HPD |
Tarkkuuden vaakasuora laimennus |
Korkeus |
Korkeus merenpinnasta |
M |
Mittari |
Korkeus |
Korkeus |
Tarkistussumma |
Tarkistussummatiedot |
Voit tarkistaa muut GPS-projektimme:
- Arduino-pohjainen ajoneuvojen seuranta GPS: ää ja GSM: ää käyttämällä
- Arduino-pohjainen ajoneuvon onnettomuuksien hälytysjärjestelmä GPS-, GSM- ja kiihtyvyysanturilla
- Kuinka käyttää GPS: tä Arduinon kanssa
- Seuraa ajoneuvoa Google Mapsissa Arduinolla, ESP8266: lla ja GPS: llä
Raspberry Pi: n valmistelu kommunikoimaan GPS: n kanssa:
Okei, joten hyppää sisään, joten tästä ei tule tylsää, oletan, että tiedät jo paljon Raspberry Pi: stä, tarpeeksi, jotta käyttöjärjestelmäsi voidaan asentaa, saada IP-osoite, muodostaa yhteys pääteohjelmistoon, kuten kitti ja muut asiat. PI. Jos sinulla on jotain tekemistä yllä mainituista asioista, osuta minua kommenttiosioon ja autan mielelläni.
Ensimmäinen asia, joka meidän on tehtävä hankkeen käynnistämiseksi, on valmistaa Raspberry Pi 3 -laitteemme voidakseen kommunikoida GPS-moduulin kanssa UART: n kautta, uskokaa minua, se on melko hankalaa ja yritti melko hyvin saada se oikein, mutta jos seuraat oppaani huolellisesti saat sen yhdellä kertaa, tämä on melko vaikein osa projektia. Tässä olemme käyttäneet Neo 6m v2 GPS -moduulia.
Sukellaksesi sisään, tässä on pieni selitys miten Raspberry Pi 3 UART toimii.
Raspberry Pi: ssä on kaksi sisäänrakennettua UART: ta, PL011 ja mini UART. Ne toteutetaan käyttämällä erilaisia laitteistolohkoja, joten niillä on hieman erilaiset ominaisuudet. Vadelma pi 3: lla langaton / bluetooth-moduuli on kuitenkin kytketty PLO11 UART: iin, kun taas mini UART: ta käytetään linux-konsolin ouptutiin. Riippuen siitä, miten näet sen, määritän PLO11: n parhaaksi kahdesta UART: sta sen toteutustason vuoksi. Joten tälle projektille poistamme Bluetooth-moduulin käytöstä PLO11 UART: sta käyttämällä peittoa, joka on saatavana Raspbian Jessien päivitetyssä nykyisessä versiossa.
Vaihe 1: Raspberry Pi: n päivittäminen:
Ensimmäinen asia, jonka haluan tehdä ennen jokaisen projektin aloittamista, on vadelma-pi-päivitys. Joten anna tehdä tavallinen ja suorittaa alla olevat komennot;
sudo apt-get päivitys sudo apt-get päivitys
Käynnistä sitten järjestelmä uudelleen;
sudo uudelleenkäynnistä
Vaihe 2: UART: n määrittäminen Raspberry Pi: ssä:
Ensimmäinen asia, jonka teemme tämän mukaisesti, on muokata /boot/config.txt-tiedostoa . Suorita tämä suorittamalla alla olevat komennot:
sudo nano /boot/config.txt
lisää config.txt-tiedoston alaosaan seuraavat rivit
dtparam = spi = päällä dtoverlay = pi3-poista käytöstä-bt core_freq = 250 enable_uart = 1 force_turbo = 1
poistu painamalla ctrl + x ja tallenna painamalla y ja Enter.
Varmista, ettei kirjoitusvirheitä tai virheitä ole, tarkistamalla uudelleen, koska virhe tässä saattaa estää pi: täsi käynnistymästä.
Mitkä ovat näiden komentojen syyt, force_turbo antaa UART: lle mahdollisuuden käyttää korkeinta ydintaajuutta, jonka asetamme tässä tapauksessa 250: ksi. Syynä tähän on varmistaa vastaanotettujen sarjatietojen johdonmukaisuus ja eheys. On tärkeää huomata tässä vaiheessa, että force_turbo = 1: n käyttö mitätöi vadelmapiisi takuun, mutta sen lisäksi se on melko turvallinen.
Dtoverlay = PI3-disable-bt katkaisee bluetooth pois ttyAMA0 , tämä on antaa meille luvan käyttää täyttä UART tehon saatavilla ttyAMAO sijasta mini UART ttyS0.
Toinen vaihe tämän UART-asennusosion alla on boot / cmdline.txt-tiedoston muokkaaminen
Ehdotan, että teet kopion cmdline.txt-tiedostosta ja tallennat sen ennen muokkaamista, jotta voit palata siihen myöhemmin tarvittaessa. Tämä voidaan tehdä käyttämällä;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Korvaa sisältö seuraavalla:
dwc_otg.lpm_enable = 0 konsoli = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 hissi = määräaika fsck.repair = kyllä rootwait hiljainen roiske plymouth.ignore-serial-consoles
Tallenna ja poistu.
Kun tämä on tehty, meidän on käynnistettävä järjestelmä uudelleen uudestaan muutosten tekemiseksi ( sudo-uudelleenkäynnistys ).
Vaihe 3: Raspberry Pi Serial Getty -palvelun poistaminen käytöstä
Seuraava vaihe on poistaa Pi: n getty-palvelu käytöstä , komento estää sitä käynnistymästä uudelleen uudelleenkäynnistyksen yhteydessä:
sudo systemctl stop serial-getty@ttyS0.service sudo systemctl poista serial-getty@ttyS0.service käytöstä
Seuraavia komentoja voidaan käyttää tarvittaessa uudelleen
sudo systemctl ota käyttöön sarja-getty@ttyS0.service sudo systemctl aloita sarja-getty@ttyS0.service
Käynnistä järjestelmä uudelleen.
Vaihe 4: Aktivoi ttyAMAO:
Olemme poistaneet ttyS0: n käytöstä, seuraava asia on, että otamme ttyAMAO: n käyttöön .
sudo systemctl ota serial-getty@ttyAMA0.service käyttöön
Vaihe 5: Asenna Minicom ja pynmea2:
Olemme minicom yhdistää GPS-moduulin ja ymmärtää tietoja. Se on myös yksi työkaluista, joita käytämme testaamaan, että GPS-moduulimme toimii hyvin. Vaihtoehto minicomille on daemon-ohjelmisto GPSD.
sudo apt-get install minicom
Saadun datan jäsentämiseksi hyödynnämme pynmea2-kirjastoa . Se voidaan asentaa käyttämällä;
sudo pip asenna pynmea2
Kirjaston dokumentaatio löytyy täältä:
Vaihe 6: LCD-kirjaston asentaminen:
Tässä opetusohjelmassa käytämme AdaFruit-kirjastoa. Kirjasto on tehty AdaFruit-näytöille, mutta se toimii myös HD44780: ta käyttäville näyttötauluille. Jos näyttösi perustuu tähän, sen pitäisi toimia ongelmitta.
Minusta on parempi kloonata kirjasto ja asentaa se suoraan. Kloonata ajo;
git-klooni
vaihda kloonattuun hakemistoon ja asenna se
cd./Adafruit_Python_CharLCD sudo python setup.py asennus
Tässä vaiheessa ehdotan toista uudelleenkäynnistystä, joten olemme valmiita jatkamaan komponenttien liittämistä.
Raspberry Pi GPS -moduulin liitännät:
Liitä GPS-moduuli ja LCD-näyttö Vadelma Pi: hen alla olevan piirikaavion mukaisesti.
Testaus ennen Python-komentosarjaa:
Minusta on tärkeää testata GPS-moduulin yhteys ennen kuin jatkat python-komentosarjaan. Käytämme tähän minicomia. Suorita komento:
sudo minicom -D / dev / ttyAMA0 -b9600
missä 9600 edustaa siirtonopeutta, jolla GPS-moduuli kommunikoi. Tätä voidaan käyttää, kun olemme varmoja tiedonsiirrosta GPS: n ja RPI: n välillä, on aika kirjoittaa python-komentosarjamme.
Testi voidaan tehdä myös kissalla
sudo cat / dev / ttyAMA0
Ikkunassa näet NMEA-lauseet, joista olemme keskustelleet aiemmin.
Python-komentosarja tälle Raspberry Pi GPS -opetusohjelmalle on annettu alla Koodi-osassa.
Kaiken sanotun ja tehdyn kanssa on aika testata koko järjestelmä. On tärkeää, että varmistat, että GPS-järjestelmäsi saa hyvän korjauksen, ottamalla sen pois, suurin osa GPS-laitteista vaatii 3-4 satelliittia korjauksen saamiseksi, vaikka minun työskenteli sisätiloissa.
Toimiiko oikein? Kyllä…
Onko sinulla kysyttävää tai kommentteja? Pudota ne kommenttiosioon.
Esittelyvideo on annettu alla, jossa olemme osoittaneet sijainnin leveys- ja pituusasteilla LCD-näytöllä GPS: n ja Raspberry Pi: n avulla.