A stm32f3discovery és u-blox neo-6m alapú gps-radarokat gyűjtjük
Tehát mit kell a készülékünk?
- Az aktuális pozícióról a GPS-vevőről szerezhet információt.
- Szerelje szét.
- Mutasson a képernyőn a vevőegység aktuális pozícióját, valamint a látható műholdakat.
Ehhez meg kell találnunk a GPS, az NMEA-0183 és a Brezenham algoritmus fogalmát.
Természetesen nem szükséges a GPS árnyalatainak részletes megértése, hiszen a koordináták, a sebesség, a kurzus és egyéb paraméterek kiszámításához szükséges összes munka GPS-vevőt fog igénybe venni. De ismered az alapot.
Ahhoz, hogy megtalálja a távolságot a vevő és az adó először szinkronizálni az órákat, majd kiszámítja a szükséges távolságot, ismerve a terjedési sebessége rádióhullámokat, és a késleltetési idő közötti átadását és vételi időt.
Ahogy fentebb írom, a vevõnek tudnia kell a távadók pontos helyzetét. Ezeket az információkat az adó szolgáltatja és "almanach" -nak nevezzük. Természetesen ez az információ elavult, de attól függően, hogy a „frissesség” almanach lehet megkülönböztetni háromféle közötti késleltetés bekapcsoláskor, és meghatározza annak pontos koordinátáit az első „hidegindítás”, „meleg indítás” és „hot start”.
Vannak olyan módok, amelyek csökkenthetik az indítási időt: az AGPS (alternatív álnevek - az interneten keresztül vagy Oroszország postai úton), DGPS (kivéve a légkör által okozott jelek torzítását) és mások. De nem gondolom őket, mert ez nem szükséges a feladat elvégzéséhez.
Most nézzük meg azt az űrlapot, amelyben a számított koordináták jelennek meg az eszköz kimenetében. Ez egy speciális szabvány.
NMEA - National Marine Electronics Association, NMEA-0183 (Wikipedia szerint) - szöveges kommunikációs protokoll a tenger (mint általában, navigáció) berendezés (vagy a használt berendezések a vonatok) között. Itt vannak a sorok, amelyek a vevőkészülékből származnak.
Először meghatározzuk az egyes sorok hasonló részeit. Könnyű látni, hogy mindannyian ugyanúgy indulnak, és többé-kevésbé egyenlő módon fejeződnek be. $ GP - Információ származik a vevő GPS (akkor veszik észre, hogy a hajó egy csomó más szenzor: ha volt vészhelyzet jeladó, a vonal lenne kezdeni $ EP és ha a hangjelző, akkor a $ SD és így tovább.). . Minden sor végén egy ellenőrző feltétlenül XOR-összessége byte string $ -tól * és befejezve - ez az a két karakter a végén. És ne felejtsd el a karaktereket
- $ GPVTG - GPS Track Made Good és Ground Speed - egy vonal, amely információt tartalmaz a tanfolyamról és a sebességről.
- a.a - tanfolyam fokban.
- T - Igaz, az információ megbízhatóságának zászlaja.
- b.b - a mágneses deklináció iránya (nem rendelkezünk vele).
- M - Mágneses, igen, nagyon mágneses.
- c.c - vízszintes sebesség a csomópontokon (szorozzuk meg 1,852-tel, hogy a sebességet kilométerenként fejezzük be).
- N - kNots, csomópontok.
- d.d a vízszintes sebesség kilométer / óra (és nem kell sokszorozni semmit).
- K - kilométer per óra.
- ee az ellenőrző összeg.
- $ GPGGA - Globális helymeghatározó rendszer Fixadatok - egy karakterlánc, amely az aktuális helyről tartalmaz információkat.
- hhmmss.ss - az idő UTC-ben, amikor a pozíció rögzült.
- a.a a szélességi érték.
- N az északi szélesség. Ha S. majd a déli.
- b.b a hosszúság nagysága.
- E a keleti hosszúság. Ha W. majd Nyugat.
- c a GPS jel minőségjelzője.
- d az alkalmazott műholdak száma.
- e.e - a pontosság csökkenésének tényezője (DOP, precíz hígítás).
- f.f a vevő tengerszint feletti magassága.
- M - a magasság méterben van megadva.
- g.g - a geoid (a bolygónk valódi alakja) és a WGS84 ellipszoid közötti különbség (háromdimenziós koordináta-rendszer helymeghatározáshoz).
- M - a különbség méterben van megadva.
- h.h a DGPS korrekciókat továbbító állomás száma.
- i az ellenőrző összeg.
- $ GPGSA - GPS DOP és Aktív műholdak - a műholdakkal kapcsolatos információk, amelyek meghatározzák a helyet és a pontosságot csökkentő tényezőket.
- A - automata kiválasztási mód 2D vagy 3D, M - kézi üzemmódban, mereven kiválasztott, például 2D.
- x - vevő üzemmód: 0 - a koordináták nincsenek meghatározva, 1 - 2D mód, 2 - 3D mód.
- y1..y12 - a vevőkészülék helyének meghatározására használt műholdak száma.
- z1..z2 - PDOP, HDOP, VDOP (pontossági tényezők csökkenése pozícióban, vízszintes síkban és függőleges síkban).
- i az ellenőrző összeg.
- GPGSV - GPS műholdak a nézetben - a vonal tartalmaz információt a számról, az azúrról, a horizont feletti magasságról és a műhold jel / zaj arányáról. A sorban négy műhold lehet.
- a a GPGSV vonalak teljes száma.
- b - az aktuális vonal száma.
- c1..c4 a műholdas szám.
- d1..d4 - a horizont feletti magasság fokban (0..90).
- e1..e4 - műholdas azimut fokokban (0..359).
- f1..f4 - jel-zaj viszony dB-ben (0..99).
$ GPGLL, 5.541,23512, N, 03.749,12634, E, 174214,00, A, A * 6D - nincs értelme ezen a vonalon megy bele a részletekbe, mert tartalmazza a koordinátákat és az időt, amit már a sorok GPRMC és GPGGA.
Természetesen a GPS-vevők gyártói nem tilos saját vonalakat felvenni. A vevőkészüléknél kezdetben látni lehet:
A Brezenham-algoritmus
Ez az algoritmus a számítógépes grafika egyik legrégebbi algoritmusa, amelyet 1962-ben már Jack Brezenham (IBM) fejlesztett ki. Ezzel bekövetkezik raszterizálás grafikus primitív, más szóval, az algoritmus határozza meg a koordinátáit pixelek kell világítani a képernyőn, hogy a kapott rajz primitív mérkőzés az eredeti.
A Brazenham algoritmus csak az egész számok összeadására és kivonására használja: általában a törtszámú aritmetika használata lelassítja a vezérlőt. Általában, de nem a mi esetünkben, mert az STM32F303VC magja az ARM Cortex-M4 mag FPU-val. FPU (Floating Point Unit) - olyan eszköz, amely felgyorsítja a munkát tört számok (matematikai koprocesszor), így már semmi sem korlátozza, és tudjuk használni az algoritmus DDA-line. Az MK munkájának felgyorsításának érdekes bemutatása a fraktál rajzolásakor a YouTube-on megtekinthető.
Mit használunk a projektben?
- STM32F3-Discovery hibakereső;
- UART GPS NEO-6M modul a WaveShare-től az u-blox NEO-6M vevőn alapul;
- LCD mátrix MT-12864A.
- 1 - Ucc - teljesítmény - 5V-ra a Discovery-en.
- 2 - GND - föld - a GND a felfedezéshez.
- 3 - Uo - az LCD panel tápellátása a kontraszt vezérléséhez - a trimmel ellenállókhoz.
- 4..11 - DB0..DB7 - adatbusz - PD0..PD7 a Discovery-hez.
- 12, 13 - E1, E2 - vezérlő kiválasztása - a PD8, PD9 a Discovery felé.
- 14 - RES - Reset - a PD10 a Discovery-re.
- 15 - R / W - kiválasztás: olvasás / írás - PD11 a Discovery-be.
- 16 - A0 - kiválasztás: parancs / adat - PD12-re a Discovery-be.
- 17 - E-kapu adatok - a Discovery PD13-ra.
- 18 - Uee - a DC-DC átalakító kimenete - a trimmer ellenálláshoz.
A Neo-6M vevőegység a következő tulajdonságokkal rendelkezik:
- a hideg vagy meleg indítási idő 27 s;
- a forró startidő 21 másodperc;
- a maximális kimeneti információ frekvenciája 1 Hz;
- impulzusok frekvenciatartomány per tűs PPS - 0,25 Hz - 1 kHz;
- maximális helymeghatározási pontosság - 2,5 m;
- a sebességmérés maximális pontossága 0,1 m / s;
- A kurzus maximális pontossága 0,5 fok.
Neo-6M használhatja SBAS (Satellite pontosságnövelő System) - műholdas differenciális korrekciós rendszert, ami növeli a pontosságot a helyzetmeghatározó 2 m, és az AGPS (Assisted GPS), hogy csökkentse az időt hidegindítási. AGPS adatok Megközelítés megy u-Blox weboldal segítségével AssistNow Online szolgáltatások és AssistNow Offline (hosszú távú évkönyv). A modul támogatja az NMEA, az UBX és az RTCM protokollokat. Az UBX egy védett protokoll az u-blox-ból, és az RTCM a DGPS differenciális korrekciós adatoknak a modulhoz történő továbbítására szolgáló protokoll. Az UART, I2C, SPI és USB interfészek is elérhetők a kommunikációhoz.
A vevőkészülékekkel való együttműködéshez van egy eredeti u-központ, amely az írás idején, a 8.11-es változat (1. ábra).
Ábra. 1. Az u-központ általános nézeteLátható, hogy a Neo-6M nagy lehetőséget, de részletesen leírni az összes jellemzőjét nem elég hely, így korlátozzák a felajánlott out of the box: csak UART 9600 csak NMEA, pulzus - 1 Hz.
A csatlakoztatás szempontjából minden rendkívül egyszerű: csatlakoztassa a VCC, GND, RX és TX vonalakat a vevőkészüléken a + 3.3V, a GND, a PA9 és a PA10 a Discovery felé.
Meg kell jeleníteni a vevõ aktuális pozícióját, a sebességet, a mozgás irányát, a pontosság, az idõ és a dátum csökkentésére szolgáló tényezõket, és még mindig a mûholdak által használt poláris mûholdakat. Ez nagyjából a u-center a Fig. 2.
Ábra. 2. Várja a 128 x 64-es képernyőn megjelenő információkatMiután a string sort a Neo-6M vezérlő elfogadott, van annak eltörését be zsetont (array charTokens) - részsztring hogy, hogy az eredeti karakterlánc vesszővel elválasztva.
Nagyon logikusnak tűnhet a strtok funkció használata. de nem. Azért fogok példát mutatni. Legyen egy string a, b. c. A strtok használatával a tokenek megtörésének eredménye: 'a', 'b', 'c'. Az NMEA elemzéshez ez nem megengedett, mivel ebben a protokollban a tokenek értékei a karaktersorozat pozíciójától függenek. A fenti eljárás eredménye tartalmaz üres tokeneket - 'a', 'b', '0', '0' 'c'.
A vevő helyzetére vonatkozó információk kényelmes tárolására a helymeghatározás pontossága, valamint a műholdak paraméterei három adatstruktúrát írtak.
A vevő helyzete és sebessége, valamint a dátum és az idő:
A koordináták meghatározásának pontossága:
A műhold száma, pozíciója és jelének minősége:
Ha az információ a műhold nem teljes, például nincs információ a magasság és azimut, de van egy jel / zaj viszony, a mező isFull rögzített nulla értéket. Az ilyen műholdakat figyelmen kívül hagyják, ha a radarra kerülnek.
Kitöltése alapuló struktúra egy sor zsetonok nagyon egyszerű: elemzés után GPGSA sorban a tömbben charTokens csökkentett pontossági értékek a tényezők * DOP elemek vannak számozva 15, 16 és 17.
Most biztonságosan megjelenítheti a szétszerelt információkat a képernyőn (3. ábra).
Ábra. 3. És itt van a valóság!Most már tudjuk, hogy a GPS is nem nagy ügy (ha nem mászik a dzsungelbe), de ha azt szeretnénk, hogy megértsék a lényegét a műholdas navigáció, akkor szívesen során a Stanford GPS: Bevezetés a műholdas navigációs, interaktív világ Laboratory segítségével okostelefonok vagy a Minnesota Egyetem GPS-től és a Google Térképtől a Coursera térbeli számítástechnikájáig.
Házi feladatként három feladatot fogok előterjeszteni: 1. Adjon hozzá egy felvételt. 2. Helyezze vissza a monokróm képernyőt egy színes képernyőre. 3. A WizFi220-mal (a 188-as számtól) adja meg a készüléket az A-GPS vételének lehetőségével. Ha bármilyen kérdése van, írjon nekem egy e-mailt, amely megtalálható a cikk elején. Sok szerencsét!
Ne felejtsd el, hogy földelni kell! Ne felejtsük el, hogy a statikus elektromosság kisülése megölheti mind a GPS-modult, mind az antennát, a képernyőt és a vezérlőt!
- 31 perce