Forum: Mikrocontroller und Digitale Elektronik NMEA-Daten auf 320x240 Pixel mappen


von Axel R. (Gast)


Lesenswert?

Hi Forum,

Ich will die Koordinaten eine GPS-Empfängers auf einem TFT darstellen.

Uhrzeit, Position, TimeToFirstFix, 3DFix, HDOP usw. wird mir angezeigt.
Soweit so gut.
Ist in einem Pultgehäuse mit diesem typischen STM-32-407er Setup mit TFT 
und Touch[1] (allerdings auf eigener Platine nachgeroutet), ganz grob 
angelehnt an[2](danke Uwe!), verbaut.
Als Gimmik will ich nun auf dem TFT einen groben Bildausschnitt unserer 
Umgebung hier anzeigen lassen und darauf die, vom GPS gelieferte, 
Position als Roten Klecks darstellen.
Dazu müsste ich die Koordinaten auf den Kartenausschnitt (fester 
Google-Maps Screenshot mit 320x240 Pixeln) mappen.

Wie würdet Ihr das machen?

Ich dachte an eine kleine Tabelle mit beispielsweise 32x24[x,y] und ein 
virtuelles Raster auf dem Bild. In die Tabelle pack ich mir die 
entsprechenden Koordinatenpaare hinein, die vom GPS erwarte.

Oder bietet sich hier evtl. ein Gleichungssystem an, das ich on the fly 
berechnen könnte. Es soll aber auch mal fertig werden...

Danke soweit: vielleicht hat ja jemand noch ne tolle Idee, wie man das 
visualisieren könnte.
Eine Verbindung zum Netzwerk/Internet habe ich mit diesem Setup nicht!
Der Bildauschnitt liegt lokal auf einer SD-Karte.

StromTuner

[1]
http://de.farnell.com/stmicroelectronics/stm32f407g-disc1/entwicklungsboard-foundation-line/dp/2506840
http://de.farnell.com/stmicroelectronics/stm32f4dis-bb/expansion-f4-cortex-m4-discovery/dp/2250205
http://de.farnell.com/stmicroelectronics/stm32f4dis-lcd/modul-3-5-lcd-f4-discovery/dp/2250207


[2]
http://mikrocontroller.bplaced.net/wordpress/?page_id=744
http://mikrocontroller.bplaced.net/wordpress/?page_id=4861

von pegel (Gast)


Lesenswert?

Ich denke das kommt sehr auf das Display an.
Meist kann man ein Fenster festlegen, oder hat sogar mehrere Layer.
Dann sollte in Echtzeit eine Berechnung und Darstellung möglich sein.
Vor setzen des roten Klecks, Miniausschnitt speichern und danach 
zurückschreiben.

von spess53 (Gast)


Lesenswert?

Hi

Das habe ich schon vor Jahren gemacht

Beitrag "Re: Zeigt her Eure Kunstwerke !"

Allerdings dürft mein Programm nicht in dein Konzept passen.

MfG Spess

von Sascha W. (sascha-w)


Lesenswert?

Hallo Axel R.,

klar kann man das mit einer Formel machen.
Dazu musst du die Koordinaten vom GPS (Längen-/Breitengrad) in ein 
kartesisches Format z.B. Gauss Krüger umrechnen, dann kannst du auf die 
Koordinaten deiner Karte linear umrechnen.
Wenn der Ausschnitt aber nicht allzu groß ist und bei der geringen 
Auflösung die du hast würde ich einfach mal versuchen den Längen- und 
Breitengrad linear auf deinen Kartenausschnitt abzubilden - so groß wird 
die Abweichung nit sein.

Sascha

von Jacko (Gast)


Lesenswert?

Kleiner Kartenausschnitt:
- unter 150 km Diagonale,
- in bewohnbaren Breiten (< |75°|)
dann kann man die geografischen Koordinaten locker linear
auf die Pixel-Koordinaten umrechnen.

Aber: Linear heißt nicht 1 : 1 !!!
Die geografische Länge sollte vorher mit dem cos der
mittleren dargestellten geogr. Breite multipliziert
werden.

Ein Breitengrad sind immer 111,1 km
Ein Längengrad am Äquator hat auch 111,1 km,
  in Marokko nur etwa 94 km
  in Deutschland nur etwa 71 km
  und in Island nur etwa 44 km.

Wenn man das berücksichtigt, ist die Kartendarstellung
optisch ansprechend und auf wenige % "entfernungstreu".

von W.S. (Gast)


Lesenswert?

Axel R. schrieb:
> Dazu müsste ich die Koordinaten auf den Kartenausschnitt (fester
> Google-Maps Screenshot mit 320x240 Pixeln) mappen.
>
> Wie würdet Ihr das machen?

Tja, dann suche mal in diesem Forum ein wenig.
Ich hatte vor Jahren schon mal nen Beitrag über Landkarten auf dem µC 
gepostet:
Beitrag "Landkarten auf dem Mikrocontroller"
Damit hast du die Koordinaten der Tiles und kannst innerhalb eines Tiles 
linear interpolieren - das sollte ausreichen.

W.S.

von Wolfgang (Gast)


Lesenswert?

Axel R. schrieb:
> Wie würdet Ihr das machen?

Das kommt drauf an, wie groß dein Kartenausschnitt sein soll. Bei 
wenigen 100km würde ich einfach die geographische Breite (x) und die mit 
cos(Mittelbreite) skalierte geographische Länge (y) als kartesische 
Koordinaten darstellen. Bei der Auflösung des Display sind Fehler durch 
die Projektion im Verhältnis zu vernachlässigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.