Forum: Mikrocontroller und Digitale Elektronik Wahl des richtigen Mikrocontrollers (GPS, Display)


von Johannes M. (johannesm)


Lesenswert?

Hallo uC-Gemeinde,
ich schiebe nun schon seit ca. 2 Jahren eine Projektidee vor mir her.
Mittlerweile bin glaube ich mit den theoretischen Grundlagen soweit, 
dass ich mich Schritt für Schritt an die Umsetzung wagen kann.
Mein Problem ist allerdings, das ich nicht abschätzen kann, welche 
Rechenleistung im Endeffekt benötigt wird.
Auf der einen Seite möchte verhindern, das ich ab einem gewissen Punkt 
bei der Softwareentwicklung merke, dass die Rechenleistung nicht mehr 
ausreicht und dann wieder viel Geld in eine neue Platine und Bauteile 
gesteckt werden muss.
Dies könnte man natürlich verhindern, indem man einfach völlig 
überdimensioniert dran geht. (z.B. mit ARM Cortex-A__ Chips im 
BGA-Gehäuse)
Aber auf der anderen Seite möchte ich die Bauteile auch noch selbst auf 
die Platine bringen können, also lieber QFP statt BGA.

Nun zu meiner Idee:
Es geht im Grunde um ein portables Outdoor-Gerät mit GPS und einer 
ganzen Menge zusätzlicher Sensoren.

Grobe Eckdaten:
Farb-Display ca. 240*320 mit Display-Controller (u.U. mit Touch)
SD-Card (SDHC)
USB (Slave-Funktionalität reicht aus, Host/OTG ist nicht notwendig)
Sensoren (Temp., Luftfeuchte, Beschleunigung, Gyro, ...)

Für GPS werde ich mich wohl aus der uBlox-Familie bedienen, für das 
Kartenmaterial gibt es eine ganze Menge Ressourcen die auf den 
Openstreetmap Daten basieren und perfekt für meine Anwendung passen 
würden.

Aus meiner Sicht wird die meiste Rechenleistung für die Darstellung des 
Kartenmaterials auf dem Display und die Positionsauswertung mit den 
Beschleunigungs-/Gyro-Sensoren benötigt und vermutlich die 
Datenschaufelei mit der SDHC-Card.

Bisher war meine Idee, einen Controller mit Cortex-M3 Kern zu verwenden, 
die sollten für mich noch gut zu verarbeiten sein und die gibt es bis 
120MHz auch noch in LQFP (LPC.., STM32..).
Bin ich damit gut aufgestellt oder sollte ich lieber auf Prozessormodule 
wie z.B. das "Micro2440 Stamp Module" (ARM9) von FriendlyARM ausweichen?
Eine weitere Idee war auch noch, das ich einen Teil der Sensoren wie 
Temp., Luftfeuchte, Luftdruck, ... z.B. durch einen MSP430 auswerten 
lasse und dann zur Anzeige und Speicherung an den Cortex-M3 schicke. Ist 
das sinnvoll oder überhaupt notwendig?
Oder doch einen ganz anderen uC bzw. Kombination von ICs?

Ich hoffe ihr könnt mir ein paar Tipps geben, auch Kritik nehme ich 
gerne an.

Viele Grüße
Johannes

Das das kein Wochenend-Projekt wird, ist mir bewusst ;-)
Dafür habe ich auch schon zu viele Stunden/Tage und Papier damit 
gefüllt.

von Purzel H. (hacky)


Lesenswert?

Ich wuerd mal einen Display mit Controller und touch empfehlen. danzu 
brauchts dann nur noch das GPS.

http://www.mikroe.com/eng/products/view/595/mikrommb-for-pic32-board/

Da ist die Haelfte schon gemacht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Johannes M. schrieb:
> Mittlerweile bin glaube ich mit den theoretischen Grundlagen soweit,
> dass ich mich Schritt für Schritt an die Umsetzung wagen kann.
> Mein Problem ist allerdings, das ich nicht abschätzen kann, welche
> Rechenleistung im Endeffekt benötigt wird.
Fang doch einfach mal an einen Teil der Aufgaben zu realisieren. Und 
wenn du merkst, dass der Controller nicht passt, dann wechselt du den 
einfach aus...

Ich würde dir allerdings zu einem ARM uC raten...
Such mal bei EBAY nach STM32*

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

Elektor hat ein Projekt mit Propeller gemacht...

von Johannes M. (johannesm)


Lesenswert?

Vielen Dank schon für die Antworten, anhand der Antworten merke ich, das 
ich noch ein paar Details/Anforderungen unterschlagen habe ;-)

Max D. schrieb:
> Elektor hat ein Projekt mit Propeller gemacht...
Der Propeller klingt wirklich interessant, aber dann fange ich fast 
wieder bei 0 an (andere Architektur, C Compiler kostet extra,...)

Oktal Oschi schrieb:
> Ich wuerd mal einen Display mit Controller und touch empfehlen. danzu
> brauchts dann nur noch das GPS.
>
> http://www.mikroe.com/eng/products/view/595/mikrom...
>
> Da ist die Haelfte schon gemacht.
Das sieht schon ganz gut aus, werde ich mir mal genauer durchlesen. Das 
Display kommt mir ein bischen klein vor, so 3,2" oder 3,5" möchte ich in 
meinem Gerät einbauen, aber das sollte man auch gut austauschen können.

Lothar Miller schrieb:
> Fang doch einfach mal an einen Teil der Aufgaben zu realisieren. Und
> wenn du merkst, dass der Controller nicht passt, dann wechselt du den
> einfach aus...
>
> Ich würde dir allerdings zu einem ARM uC raten...
> Such mal bei EBAY nach STM32*
Einfach anfangen wäre doch zu einfach ;-) nene, hast schon recht.
Um Ebay habe ich bislang immer einen großen Bogen gemacht, das kommt mir 
immer etwas dubios vor.
Die STM32 Dev-Boards sind aber erstaunlich günstig und wenn man den 
"Verkaufsvideos" trauen kann auch mit flotter Bildverarbeitung 
ausgestattet. Bei 40€ inkl. Display kann man ja kaum noch was falsch 
machen, kommen die Sachen aus Hongkong/China auch wirklich in 
Deutschland an? ;-)

von Frank K. (fchk)


Lesenswert?

Johannes M. schrieb:

> Grobe Eckdaten:
> Farb-Display ca. 240*320 mit Display-Controller (u.U. mit Touch)

Da musst Du wissen:

Die mit eingebautem Grafikcontroller und Speicher sind nicht sehr 
schnell, dafür einfach anzusteuern. Die Größe ist auf 240*320 und etwa 
3.2" beschränkt, darüber gibt es nichts dergleichen.

Die Teile ohne Controller brauchen eine entsprechende Einheit im 
Prozessor. Das schränkt die Auswahl ganz erheblich ein (an lötbaren 
Alternativen fällt mir jetzt nur der NXP LPC2478 und der Cortex M3 
Nachfolger LPC1788 (ist der überhaupt schon lieferbar?) ein, alles 
andere ist BGA), aber der Bildspeicher liegt dann direkt im Adressraum 
des Prozessors, was zu einer deutlich schnelleren 
Bildschirmdarstellung führt.

> Kartenmaterials auf dem Display und die Positionsauswertung mit den
> Beschleunigungs-/Gyro-Sensoren benötigt und vermutlich die

Positionsauswertung mit Beschleunigungs-/Gyro-Sensoren? Äh, nee, so 
genau sind die nicht, als dass Du das für eine einigermaßen genaue 
Indoor-Ortung verwenden könntest. Zumindest nicht die billigen.

Oder hast DU das schon mal wirklich ausprobiert? Mach mal, das 
interessiert mich jetzt.

> Bisher war meine Idee, einen Controller mit Cortex-M3 Kern zu verwenden,
> die sollten für mich noch gut zu verarbeiten sein und die gibt es bis
> 120MHz auch noch in LQFP (LPC.., STM32..).
> Bin ich damit gut aufgestellt oder sollte ich lieber auf Prozessormodule
> wie z.B. das "Micro2440 Stamp Module" (ARM9) von FriendlyARM ausweichen?

Wie gesagt - überlege Dir was mit Deinem Display.

> Eine weitere Idee war auch noch, das ich einen Teil der Sensoren wie
> Temp., Luftfeuchte, Luftdruck, ... z.B. durch einen MSP430 auswerten
> lasse und dann zur Anzeige und Speicherung an den Cortex-M3 schicke. Ist
> das sinnvoll oder überhaupt notwendig?

Es könnte sinnvoll sein, die gesamte Sensorik inkl GPS und Logging auf 
den MSP430 zu verlegen, um den Display- und Kartenprozessor zwecks 
Energieeinsparung komplett abzuschalten. Das hängt dann aber von den 
Nutzungsszenarien ab, wie das Gerät später verwendet werden soll.

Mache Dir möglichst frühzeitig auch noch Gedanken über Deine 
Stromversorgung und wie Du zB einen LiPo-Akku zu laden gedenkst, ohne 
dass er Dir abfackelt.

von Johannes M. (johannesm)


Lesenswert?

Frank K. schrieb:
> Die mit eingebautem Grafikcontroller und Speicher sind nicht sehr
> schnell, dafür einfach anzusteuern. Die Größe ist auf 240*320 und etwa
> 3.2" beschränkt, darüber gibt es nichts dergleichen.

Danke für deine Antworten, was muß ich mir unter nicht sehr schnell 
vorstellen? ;)
(Vorsicht Milchmädchenrechnung) Wenn ich mir anschaue, dass die meisten 
GPS-Module ihre Daten mit 1-5 Hz ausgeben, würde es dann nicht 
ausreichen wenn ich die neuen Bildschirmbilder mit ~5-10 Hz erzeuge?

Frank K. schrieb:
> Die Teile ohne Controller brauchen eine entsprechende Einheit im
> Prozessor. Das schränkt die Auswahl ganz erheblich ein (an lötbaren
> Alternativen fällt mir jetzt nur der NXP LPC2478 und der Cortex M3
> Nachfolger LPC1788 (ist der überhaupt schon lieferbar?) ein, alles
> andere ist BGA), aber der Bildspeicher liegt dann direkt im Adressraum
> des Prozessors, was zu einer deutlich schnelleren
> Bildschirmdarstellung führt.

LPC2478 werde ich mir auch mal anschauen (LQFP-208, da gibts viele 
Möglichkeiten für Lötbrücken ;-) ).
Die LPC17xx sind bei NXP noch alle als "in Development" markiert.

Frank K. schrieb:
> Positionsauswertung mit Beschleunigungs-/Gyro-Sensoren? Äh, nee, so
> genau sind die nicht, als dass Du das für eine einigermaßen genaue
> Indoor-Ortung verwenden könntest. Zumindest nicht die billigen.
>
> Oder hast DU das schon mal wirklich ausprobiert? Mach mal, das
> interessiert mich jetzt.

Da habe ich mich wieder etwas ungenau ausgedrückt, in erster Linie 
möchte ich Steigung, Himmelsrichtung, Erschütterungen messen. Wie weit 
man das noch auf die Positionsbestimmung ausweiten kann muß ich einfach 
mal ausprobieren, ich werde dann berichten.

Frank K. schrieb:
> Es könnte sinnvoll sein, die gesamte Sensorik inkl GPS und Logging auf
> den MSP430 zu verlegen, um den Display- und Kartenprozessor zwecks
> Energieeinsparung komplett abzuschalten. Das hängt dann aber von den
> Nutzungsszenarien ab, wie das Gerät später verwendet werden soll.

Das ist wahrscheinlich auch der sinnvollste Einstieg in das Projekt, 
erstmal die Sensoren in Gang bringen und dann mache ich mir über das 
Display und dessen Ansteuerung Gedanken.

Frank K. schrieb:
> Mache Dir möglichst frühzeitig auch noch Gedanken über Deine
> Stromversorgung und wie Du zB einen LiPo-Akku zu laden gedenkst, ohne
> dass er Dir abfackelt.

Danke für den Hinweis, da sehe ich im Moment aber die wenigsten 
Probleme. Seit ca. 2 Jahren habe ich ein Gerät mit NCP1800DM41R2 und 
einem LiPo-Akku in Betrieb (wird über USB-Anschluss geladen), bisher 
keine Probleme.

Gruß
Johannes

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Johannes M. schrieb:
> GPS-Module ihre Daten mit 1-5 Hz ausgeben, würde es dann nicht
> ausreichen wenn ich die neuen Bildschirmbilder mit ~5-10 Hz erzeuge?
Mein Navi macht das sogar noch viel langsamer: es wird bei kleinen 
Positionsänderungen nur der Pfeil in der Mitte neu gezeichnet...

von Frank K. (fchk)


Lesenswert?

Johannes M. schrieb:

> Danke für deine Antworten, was muß ich mir unter nicht sehr schnell
> vorstellen? ;)
> (Vorsicht Milchmädchenrechnung) Wenn ich mir anschaue, dass die meisten
> GPS-Module ihre Daten mit 1-5 Hz ausgeben, würde es dann nicht
> ausreichen wenn ich die neuen Bildschirmbilder mit ~5-10 Hz erzeuge?

Das kommt auf die Art des Zugriffs an. Bei den üblichen Displays mit 
Controller (z.B. ILI9325) läuft das so ab:
- Fenster X/Y Position setzen
- Fenster Höhe/Breite setzen
- Schreibrichtung setzen (von links nach rechts oder von oben nach unten 
etc)
- RGB-Daten für das Fenster senden

Wenn Du großflächige Bitmaps ans Display sendest, ist das noch recht 
effizient, weil Du ja nur einmal das Fenster mit der Bildregion setzen 
musst und dann einfach nur noch Grafikdaten reintakten musst.

Wenn Du aber beispielsweise eine Linie zeichnen willst und dafür 
einzelne Pixel setzen musst, dann wird das ganze extrem ineffizient und 
damit langsam, weil Du für jedes Pixel wieder einen neuen Datentransfer 
aufsetzen musst, mit Fenster setzen usw. Du hast eben nur einen sehr 
indirekten Zugriff auf den Grafikspeicher.

Bei Displays ohne Controller liegt der Grafikspeicher im Adressraum des 
Prozessors. Da ist das Setzen eines Pixels nur ein einziger 
Speicherzugriff.

Es hängt eben davon ab, was genau dargestellt werden soll. Eine 
Kartendarstellung mit Linien, Kurven, Flächenfüllen ist ein ganz anderer 
Fall als Textausgabe oder das Anzeigen von Fotos.

> LPC2478 werde ich mir auch mal anschauen (LQFP-208, da gibts viele
> Möglichkeiten für Lötbrücken ;-) ).

Du hast nach dem Spaßfaktor gefragt, hier hast Du ihn.

fchk

von Johannes M. (johannesm)


Lesenswert?

Gute Erklärung, da muß ich mir mal Gedanken drüber machen was ich da 
alles einzeigen möchte. Ein weiterer Punkt für meine ToDo Liste.
Beim Lesen in den Datenblättern ist mir der FSMC beim STM32 aufgefallen, 
damit könnte man den Flaschenhals etwas entschärfen, wenn ich das 
richtig verstanden habe.

von Frank K. (fchk)


Lesenswert?

Johannes M. schrieb:
> Gute Erklärung, da muß ich mir mal Gedanken drüber machen was ich da
> alles einzeigen möchte. Ein weiterer Punkt für meine ToDo Liste.
> Beim Lesen in den Datenblättern ist mir der FSMC beim STM32 aufgefallen,
> damit könnte man den Flaschenhals etwas entschärfen, wenn ich das
> richtig verstanden habe.

Wobei? Beim Schreiben auf TFTs mit diesen ILI93xx/HX83xx-Controllern? 
Negertief. Über das Prozessorinterface dieser Displays hast Du nur 
Zugriff auf die etwa 100 bis 200 Steuerregister des Controllers, und 
auch das nur mit indirekter Adressierung (Indexregister/Datenregister), 
also quasi doppelt indirekt. Mehr nicht. Egal wie auch immer Du es 
wendest, Du hast bei diesen Displays niemals direkten Speicherzugriff.

fchk

von W.S. (Gast)


Lesenswert?

Hab mir mal all die diversen Antworten durchgelesen und komme zu dem 
Schluß, daß du dieses Projekt am besten ganz anders angehen solltest:

1. Nimm lieber kein Display mit irgendeinem integrierten Controller. Da 
kriegst du die Krätze, weil du zum Schluß ja doch alles in einem 
separaten RAM aufbereiten und dann en bloc zum Display hinschaufeln 
mußt. Ich weiß das, weil einer meiner Kollegen genau mit SOWAS sich 
herumschlägt und laut genug dabei flucht.

2. Displays mit 480x272 Pixeln bekommt man bei ebay schon relativ 
günstig, so um die 20 Euro. Diese Größe ist derzeit das Optimum, wenn 
man Ansehnlichkeit und technischen Aufwand mal betrachtet. Wenn du ne 
Verbindung zu Glyn hast, dann besorge dir sowas von denen, die haben für 
ihre Displays eine vereinheitlichte Schnittstelle (Folienkabel 40 polig, 
0.5 Pitch) geschaffen.

3. Für controllerlose Displays brauchst du nen Displaycontroller, den 
man sich ohne viel Aufwand aus einem CPLD machen kann. Ein Xilinx 
95144.. reicht dafür definitiv, mit einem Coolrunner mit 128 Makrozellen 
kommst du gerade so auch aus. Dazu brauchst du nen schnellen RAM 
256x16x10ns als Bildspeicher, den es von Samsung, ISSI und anderen gibt. 
Das hat den RIESENVORTEIL, daß du damit den Systembus nicht belastest 
und der Prozessor mit voller Speed laufen kann. Bei dem LPC2478 wird 
nämlich der Systembus zum Flaschenhals und die CPU wartet sich halbtot.

4. Wenn du den Bildspeicher im Adreßvolumen liegen hast, dann wirst du 
für sonstige Zwecke (Sektoren der SD puffern usw.) wohl mit 1 MB RAM 
auskommen. sieh zu, daß du dir einen Controller mit 32 Bit breit 
herausgeführtem Systembus aussuchst und den RAM z.B. 4x 256x8 oder 2x 
512x16 machst. Mit dem LPC2214 kann man das schon, allerdings hat der 
kein dediziertes SD-Interface. Ist nicht SOOO schlimm, wenn man die 
häufig benötigten Sektoren im RAM zwischenpuffern kann. Das hängt aber 
sehr von dem verwendeten Filesystem ab. Das einzige, was ich auf dieser 
CPU zum passablen Laufen bekommen hab ist die EFSL mit einigen 
Modifikationen von mir.

5. Hast du schon Vorstellungen zu dem Karten-System? Wahrscheinlich ist 
es dir zuviel, ein Vektor-Kartensystem zu implementieren, denn dazu 
müßte man erhebliche Vorarbeit in das Zerpflücken des Planet-Files von 
OSM stecken - und Vektorkarten sind eine recht große Herausforderung, 
die nach einer CPU mit Gleitkommaprozessor schreit. Einfacher geht es 
mit Bitmap-orientierten Karten wie z.B. Google-maps oder eben den 
256x256 Tiles, die man von OSM, Yahoo, MSN usw. laden kann. Blöderweise 
liegen diese jedoch als .PNG oder .JPG vor, was dann einen erheblichen 
Dekodierungsaufwand und RAM-Bedarf nach sich zieht. Soll mit keiner 
sagen, daß die ZLib auf nem uC problemlos ist. Ich habe deswegen auch 
schon mal mir was ausgedacht, das sich folgendermaßen kurz beschreiben 
läßt: Tiles mit 256x256 Pixeln, mit 48 Farben, auf einfache Weise 
gepackt, alle Tiles einer Zoomstufe zu einer bestimmten Region in 1 
Levelfile gepackt, leicht, schnell und ohne großen RAM-Bedarf 
entpackbar. Vorarbeiten meinerseits gibt es bereits, einen Map-Viewer 
dafür für Windows gibt es auch schon, die Implementierung auf einem uC 
steht aber noch aus. Quellen und Definitionen gibt's bei Bedarf und 
Nachfrage.

6. Ob DRAM oder SDRAM was Geeignetes für ein Bastelprojekt ist, bei dem 
einen jede Layoutänderung im Geldbeutel weh tut, wage ich zu bezweifeln. 
Also besser erstmal versuchen, passenden statischen RAM zu besorgen. Ach 
ja, das Pinout sowohl beim LPC2478 als auch bei den dickeren STM32 ist 
alles andere als begeisternd. Schau dir das genau an bevor du dich auf 
einen bestimmten Chip stürzt.

Ich hab da ggf. was zum Posten: ein Board mit LPC2214, eins mit LPC2478 
und eins mit STM32xxxx

W.S.

von spess53 (Gast)


Lesenswert?

Hi

Nur in SW:

Beitrag "Re: Zeigt her Eure Kunstwerke !"

>Wenn Du aber beispielsweise eine Linie zeichnen willst und dafür
>einzelne Pixel setzen musst, dann wird das ganze extrem ineffizient und
>damit langsam, weil Du für jedes Pixel wieder einen neuen Datentransfer
>aufsetzen musst, mit Fenster setzen usw. Du hast eben nur einen sehr
>indirekten Zugriff auf den Grafikspeicher.

Wenn ich dann solche Aussagen für den anvisierten Controllern lese muss 
ich echt an der Qualifikation der Poster zweifeln. Das Programm zum 
obigen Link ist 4k gross.

MfG Spess

von Johannes M. (johannesm)


Lesenswert?

Danke W.S. für deinen Beitrag, da muß ich erstmal ausgiebig drüber 
nachdenken.
Gut das ich hier mein Projekt frühzeitig zur Diskussion gestellt habe 
und nicht einfach drauflos "gebastelt" habe.
Jetzt wird aber erstmal am Kopfkissen gehorcht und morgen wieder in die 
Hochschule.

Gute Nacht
Johannes

von Ro R. (rond_es)


Lesenswert?

@ spess53

Wow, cool! Wie hast du das mit dem Kartenmaterial gemacht?

von spess53 (Gast)


Lesenswert?

Hi

>Wow, cool! Wie hast du das mit dem Kartenmaterial gemacht?

Steht weiter unten.

MfG Spess

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.