A stm32f3discovery és u-blox neo-6m alapú gps-radarokat gyűjtjük

Tehát mit kell a készülékünk?

  1. Az aktuális pozícióról a GPS-vevőről szerezhet információt.
  2. Szerelje szét.
  3. 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 és az ellenőrző összeg után. Elemezzük részletesebben az egyes sorokat.

  • $ 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).

A stm32f3discovery és u-blox neo-6m alapú gps-radarokat gyűjtjük
Ábra. 1. Az u-központ általános nézete

Lá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.

A stm32f3discovery és u-blox neo-6m alapú gps-radarokat gyűjtjük
Ábra. 2. Várja a 128 x 64-es képernyőn megjelenő információkat

Miutá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).

A stm32f3discovery és u-blox neo-6m alapú gps-radarokat gyűjtjük
Á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

A Google feltárta a Chrome OS sérülékenységeinek részleteit, amelyek 100 000 dollárra találták a szakértőt

A Microsoft legfrissebb javításai az Epson nyomtatók munkájának kudarcához vezetnek

A szakember megtalálta a privát kulcsokat, az AWS hitelesítő adatokat a DJI tárolóban, és most bírósággal fenyegeti

Az Oracle kiadott egy sürgősségi javítást a PeopleSoft termékek kritikus sérülékenységeihez