Archiv verlassen und diese Seite im Standarddesign anzeigen : Embedded Plattform gesucht
Hi!
Momentan programmiere ich mit Arduino. Nun steht ein etwas größeres Projekt an bei dem es unter anderem darum geht ein (ca.) 10" Display anzusteuern und eine Benutzeroberfläche darzustellen. Diese hat auch eventuell ein paar Grafikberechnungen etc.
Zusätzlich gibt es noch eine Vielzahl von Sensoren welche ausgelesen, berechnet und ausgegeben werden sollen.
Dieses Funktioniert mit der Arduino Umgebung nicht wirklich da nur ein kleiner Atmel Prozessor zur Verfügung steht.
Nun bin ich auf das .net micro Framework gestossen. Bisher habe ich in Java geschrieben, wäre aber jetzt nicht abgeneigt auf C (++?) umzuschwenken.
Gibt es dafür auch Hardware Plattformen oder sonstiges?
Oder gibt es evtl. noch andere Leistungsfähigere Systeme welche sich durchgesetzt haben (also keine kleine Randgruppe sind, bei der es keine oder kaum Input gibt :rolleyes:)
-tsaG
Shink
2011-07-19, 16:11:16
Nun ja; in meiner vorigen Firma haben wir das mit custom Hardware in Java gemacht.
Anscheinend ist der Java-Dialekt Processing ja sogar die "Referenzplattform" von Arduino. Warum zum Geier willst du denn unbedingt etwas anderes verwenden?
Ich würde nicht davon ausgehen dass es unglaublich viel Performance bringt auf .net umzusteigen wenn Java die Referenzplattform ist. Willst du denn auch die ganzen zur Verfügung stehenden Libraries portieren?
Hi,
Nein, das ist jetzt ein komplett neues Projekt. Das Problem ist einfach nur das die Arduino Hardware nicht Leistungsfähig genug ist um die ganze Arbeit zu verrichten ;-(
Zudem sind die ganzen inkludierten Features von .net micro nicht schlecht anzusehen (hab bisher nur bei wikipedia und auf der Microsoft Seite gelesen, aber da wird bspw von Schlafzuständen etc gesprochen).
Zudem kann man die GUI auch (anscheinend) recht einfach über das .net Studio realisieren.
Hört sich alles schön an, ist halt nur die frage wie es in wirklichkeit aussieht (Preise für Hardware, erweiterbarkeit etc.)
Demirug
2011-07-19, 16:47:36
Auf welcher MS Seite warst du denn?
Von der im MSDN solltes du eigentlich alles finden: http://msdn.microsoft.com/en-us/netframework/bb267253
Hi!
Momentan programmiere ich mit Arduino. Nun steht ein etwas größeres Projekt an bei dem es unter anderem darum geht ein (ca.) 10" Display anzusteuern und eine Benutzeroberfläche darzustellen. Diese hat auch eventuell ein paar Grafikberechnungen etc.
Das sagt jetzt erstmal genau überhaupt nichts. Wie wird das Display angesteuert, wie werden die Informationen ausgegeben, um welche Graphikberechnungen geht's überhaupt?
Zusätzlich gibt es noch eine Vielzahl von Sensoren welche ausgelesen, berechnet und ausgegeben werden sollen.
Welche Sensoren? Wie viele? Wie schnell müssen diese verarbeitet werden? Welche Interfaces?
Dieses Funktioniert mit der Arduino Umgebung nicht wirklich da nur ein kleiner Atmel Prozessor zur Verfügung steht.
Der ATMega328 ist ein relativ großer AVR mit ordentlich Speicher. Wo klemmt's bei dir denn, welche Probleme treten wo auf?
Nun bin ich auf das .net micro Framework gestossen.
Ja, und?
Bisher habe ich in Java geschrieben,
Nein, hast du nicht.
wäre aber jetzt nicht abgeneigt auf C (++?) umzuschwenken.
Gibt es dafür auch Hardware Plattformen oder sonstiges?
Also: Der Arduino wird mit C/C++ programmiert. Dazu gibt's ne Menge Libraries, die hauptsächlich einfach und komfortabel zu benutzen sind, teilweise aber recht langsam oder speicherineffizient programmiert sind.
Im Prinzip gibt's für jeden Microcontroller C-Compiler, die Frage ist aber, was du willst und wie gut du das programmieren kannst. Kannst du eines deiner Arduino-Projekte in AVR-C umschreiben und es funktioniert trotzdem noch? Das läßt sich leicht ausprobieren, geht sogar in der Arduino-IDE, denn die nimmt ja C ;). Gegebenenfalls mußt du halt alle Sachen, die du benutzt, richtig initialisieren, da das Arduino-Programmgerüst beispielsweise alle Ports und Timer auf bestimmte Werte setzt.
Oder gibt es evtl. noch andere Leistungsfähigere Systeme welche sich durchgesetzt haben (also keine kleine Randgruppe sind, bei der es keine oder kaum Input gibt :rolleyes:)
Die Frage hier ist, was du machen willst und wo deine Performance-Flaschenhälse sind. Dann kann man schauen, welches System für dich geeignet ist. Größere Controller gibt's immer, aber wenn du einfach andere Prioritäten hast, dann hilft das auch nicht allzu viel weiter. Es kommt also ganz darauf an, was du nun eigentlich machen willst. Vorher lohnt es sich nicht, darüber zu diskutieren.
Nein, das ist jetzt ein komplett neues Projekt. Das Problem ist einfach nur das die Arduino Hardware nicht Leistungsfähig genug ist um die ganze Arbeit zu verrichten ;-(
Beschreib halt erstmal, was es überhaupt soll.
Zudem sind die ganzen inkludierten Features von .net micro nicht schlecht anzusehen (hab bisher nur bei wikipedia und auf der Microsoft Seite gelesen, aber da wird bspw von Schlafzuständen etc gesprochen).
.net micro ist sehr, sehr langsam. Viele Funktionen sind bereits implementiert, dann geht's trotzdem schnell, wenn man aber eigene Sachen schreiben muß, dann wird es lahm.
Ich weiß jetzt nicht, was du an Schlafzuständen aufregend findest, Low-Power-Betriebsmodi hat heute jeder Microcontroller. Bitte schreib halt erstmal, auf was es dir ankommt. Ein Feature, das du nicht brauchst, ist halt einfach kein Feature, das für dich wichtig ist. Da kann's noch so toll sein.
Zudem kann man die GUI auch (anscheinend) recht einfach über das .net Studio realisieren.
Welche GUI?
Hört sich alles schön an, ist halt nur die frage wie es in wirklichkeit aussieht (Preise für Hardware, erweiterbarkeit etc.)
Es gibt zwei Plattformen, die hierzulande leicht erhältlich sind. Die AVRs und die PICs. Die sind relativ gut vergleichbar. Beide gibt's auch in "größeren" Varianten mit mehr IOs/Flash/Speicher/Leistung. Inwiefern du das brauchst, hängt aber ganz davon ab, was du nun eigentlich machen willst. Hardware-Erhältlichkeit ist so-so, je nachdem, was du dir bauen kannst und was du fertig kaufen mußt.
Andere Plattformen sind exotisch, z.B. alles, auf dem .net micro läuft. Als Hobbybastler ist die Erhältlichkeit von Bauteilen eben sehr stark eingeschränkt, die AVRs und PICs bekommt man problemlos, beim Rest muß man sich darauf verlassen, daß irgendwer ein entsprechendes Board für einen erträglichen Preis anbietet. Bei .net micro gibt's da ein paar Boards, aber inwiefern die deinen Ansprüchen gerecht werden, weiß ich auch nicht--dafür müssen diese eben erstmal bekannt sein.
-huha
Ich suche halt (erstmal) eine Prototyping Plattform auf der ich das ganze aufbauen/testen/entwickeln kann.
Auf welcher MS Seite warst du denn?
Von der im MSDN solltes du eigentlich alles finden: http://msdn.microsoft.com/en-us/netframework/bb267253
Ja, genau auf dieser. Wollte mich halt erst einmal Informieren welche Plattformen es denn so gibt, bzw was in Frage kommt. Dort habe ich auch den "NetDuino" bzw den "FEZ Domino" und den "HiCO.ARM9-SBC" (falls man etwas mehr Leistung braucht) gefunden, werde mir die mal näher anschauen. Viel habe ich schon von GHI Electronic gelesen. Es sollte ja möglich sein an dieses Dev Board einen Touchscreen anzuschliessen, jedoch weiss ich nicht wie man das am besten macht. Wie gesagt, Hardwaretechnisch stehe ich noch ganz am Anfang.
Die erste Stufe enthält ein Motor Management System, wie es bspw hier Dargestellt ist:
http://www.forum-3dcenter.org/vbulletin/attachment.php?attachmentid=40261&stc=1&d=1311096928
Stufe zwei eine Moving Map:
http://www.forum-3dcenter.org/vbulletin/attachment.php?attachmentid=40263&stc=1&d=1311096928
Stufe drei diverse Instrumente bis hin zum "Glas Cockpit"
http://www.forum-3dcenter.org/vbulletin/attachment.php?attachmentid=40262&stc=1&d=1311096928
Das Projekt ist wesentlich aufwendiger als gedacht und wird so wahrscheinlich mit deiner bisherigen Erfahrung nicht funktionieren.
Du mußt die Daten ja zuverlässig und zügig zwischen den Geräten übertragen können, dann entsprechend auswerten etc. Die Kartendarstellung bedingt auch sehr komplizierte GPS-Berechnungen und Bildmanipulationen. Ich wäre mir unsicher, ob ich sowas überhaupt auf einem Microcontroller machen würde und nicht gleich einen kleinen PC nähme. Wahrscheinlich eher letzteres mit vorheriger Datenaufbereitung per kleinem Microcontroller.
-huha
So, mal ein kleines Update:
Ich werde weiterhin einen Arduino benutzen um die Daten zu verarbeiten.
Da der Atmega über Pin 0 und 1 RS232 Konform ist werde ich darüber das den Arduino mit einem Beagleboard verbinden.
Dazu muss nur noch eine Pegelanpassung vorgenommen werden (Max232?).
Das Beagleboard verarbeitet die Daten und stellt diese dann visuell über ein Display dar (dazu gibt es ja genug Anschlüsse :) )
tsaG
UART ist übrigens keine besonders sinnvolle Geschichte, wenn's darum geht, besonders viele Daten zu übertragen. Da sind andere Protokolle besser, selbst das vergleichsweise langsame I2C.
Das Beagleboard hat sicher auch irgendwo einen ganz normalen UART-Eingang. Dann kannst du die UART-Pins des Arduino auch direkt dort anschließen, wobei darauf zu achten ist, daß die Signalpegel passen. Ich mutmaße einfach mal, daß das Beagleboard mit 3 V läuft, auf kleine Entfernungen ist dann Kommikation vom Beagleboard zum Arduino kein Problem, da 3 V gerade noch so in den TTL-Pegel fällt, die Eingänge des Beagleboard müssen aber TTL-Kompatibel sein, sonst raucht irgendwas ab.
Die Verwendung eines Pegelwandlers für RS-232-Signalpegel ist relativ sinnlos, da der nur kostet, durch die Ladungspumpen Platz verbraucht und die maximale Geschwindigkeit herabsetzt, mit der du Daten über den UART raushauen kannst.
-huha
Vielen Dank für den Tip! Werde mich da mal schlau lesen.
Die recht statischen Sachen diverse Sensoren auszulesen und zu übergeben funktioniert schon, jedoch hapert es leider noch etwas an der Drehzahlerkennung.
Ich habe mir erstmal Testweise einen Arduino geschnappt der mir eine Frequenz von max 6000 ppm ausgibt, das reicht auch erst einmal soweit.
Hier der Sketch
unsigned int millisalt;
void setup() {
pinMode(8, OUTPUT); // Kontroll LED
pinMode(9, OUTPUT); //Der Ausgang um die Frequenz abzugreifen
Serial.begin(9600); //Das ganze wird dann auf der Konsole ausgegeben
}
void loop() {
unsigned int geschwindigkeit = analogRead(A1); //Variable Geschwindigkeit, dazu wird ein externer Poti ausgelesen
millisalt = millis();
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(10);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay (geschwindigkeit);
unsigned int zeit = 60000/((millis()-millisalt));
Serial.println(zeit);
}
So, nun zu meinem Problem. Wenn ich beim Sender 110ppm einstelle, kommen am Empfänger nur um die 100 an! Noch schlimmer wird es wenn ich 5- oder 6k ppm einstelle, wird mir am Empfänger gerade einmal 5340 - 5300 angezeigt. Wo könnte da der Fehler liegen? Immerhin hat der Arduino 16mhz, da sollte er die 100Hz doch packen, oder?
byte rpmcount;
unsigned int rpm;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm, RISING);
rpmcount = 0;
rpm =0;
timeold = 0;
}
void loop()
{
if (rpmcount >= 20) {
rpm = 60000/(millis() - timeold)*rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm,DEC);
}
}
void rpm()
{
rpmcount++;
}
Leider habe ich momentan keinen Signalgenerator zur Hand um es wirklich mal richtig zu testen, aber eigentlich sollte es ja so funktionieren (?).
Das eigentlich Signal liegt im Anhang (Momentan nutze ich nur den HIGH part, denke das sollte reichen (?)).
-tsaG
EDIT:
Es funktioniert jetzt, ich musste nur die RS232 Baudrate hochsetzen und den max rpmcount auf 8 senken. Jetzt funktioniert es (bei einer Toleranz von ca 2%)
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.