Soll ich ein Netduino oder Arduino kaufen?

17

Ich freue mich auf den Kauf eines NetDuino für ein paar lustige Hobbyprojekte.

Hat jemand von euch es benutzt und wie war eure Erfahrung?

Soll ich mir stattdessen die Arduino- oder FreeDuino-Reihe ansehen (oder etwas völlig anderes)?

Ich habe mich aufgrund meiner C # -Kenntnisse für das NetDuino entschieden, aber das ist keine Voraussetzung.

Vielen Dank

PS. Ich bin mir nicht sicher, ob dies zum Community-Wiki gehört oder nicht (Anleitung erwünscht).

SetiSeeker
quelle
5
Was willst du mit dem Board machen? Das wird Ihre Wahl beeinflussen.
Toby Jaffey
3
Der ARM7-Mikrocontroller auf dem NetDuino und der 8-Bit-AVR auf dem Arduino gehören zu einer völlig anderen Klasse. Sie fragen sich, ob Sie einen Server oder ein Netbook kaufen möchten. Sie verlangsamen jedoch Ihren Server, indem Sie eine ungeeignete VM ausführen. Die Leistung ist ähnlich und Sie verwenden beide Tools für dieselbe Aufgabe. Brauchen Sie wirklich diese Abstraktionsebene?
Kevin Vermeer
@reemrevnivek - "Ungeeignet" ähm ... es ist eine Abstraktionsebene, aber es ist sicherlich nicht schlecht geeignet (und eigentlich auch kein VM).
Connor Wolf
2
@Fake Name Es sieht so aus, als hätte netduino (TinyCLR) keinen JIT-Compiler. Es ist also ein VM / Interpreter. tinyclr.com/faq/#13
Toby Jaffey
1
Auf VMs laufen Smalltalk, Java, Python usw. Dies ist eine beliebige abstrahierte Maschine, auf der ein anderer Befehlssatz als "Bare Metal" ausgeführt wird. Nicht nur ein virtualisierter PC.
Joe Koberg

Antworten:

16

Ich liebe C # und finde, dass die Produktivitätsvorteile der Entwicklung in C # mit Visual Studio ein sehr starker Faktor für das Netduino sind. Ich würde Netduino nicht beunruhigen, weil "C # nicht für Mikrocontroller / Embedded-Umgebungen", wie andere Antworten hier zeigen.

Sie können unterhaltsame Projekte durchführen und viel über das Anschließen verschiedener physischer Ein- und Ausgabegeräte mit Netduino lernen, genau wie Sie es mit Arduino tun können oder "Bare Metal" arbeiten und das direkte MCU-Management des AVR, PIC oder anderer Mikrocontroller übernehmen.

Trotzdem halte ich mich aus den folgenden Gründen an Arduino:

  • Bessere Community-Unterstützung. Arduino hat einfach viel mehr Samples, Beispiele und eine größere Community, auf die Sie zurückgreifen können.
  • Netduino hat keine Geschichte, die über den teuren Kit- / Prototyping-Ansatz hinausgeht. Möchten Sie eine interaktive Kunstausstellung implementieren, für die Dutzende von Mikrocontrollern erforderlich sind, auf denen Ihr Code ausgeführt wird? Machen Sie sich bereit, jeweils 35 US-Dollar für die Netduinos auszuzahlen. Mit Arduino können Sie auf dem Arduino Prototypen erstellen und dann mit dem AVR-Mikrocontroller eine reine MCU-Lösung für jeweils weniger als 10 US-Dollar implementieren.

Ich würde also sagen, wenn Ihre C-Kenntnisse verstaubt oder nicht vorhanden sind, Sie C # und Visual Studio lieben und nur ein paar Hobbyprojekte basteln möchten, bei denen keine Skalierung erforderlich ist, damit die Kosten ein größeres Problem darstellen, gehen Sie zu Netduino.

Wenn Sie sich in C wohlfühlen oder sich mit Hilfe von Codebeispielen und der Community darin zurechtfinden möchten, näher am Metall sein möchten und eventuell den "Prototyp" -Ansatz von Netduino und Arduino hinter sich lassen möchten, gehen Sie Arduino, um loszulegen.

Pat James
quelle
1
Ich weiß, dass dies eine alte Antwort ist, aber ich wollte hinzufügen, dass Sie, da das Netduino vollständig Open Source ist (einschließlich der Hardware), die uC von jedem kaufen und die Netduino-Firmware darauf flashen können. Sie können die Netduino-Plattform also in einem Produktionsprodukt verwenden.
Unkwntech
"Ihr C # -Kenntnis ist auf einer eingebetteten Plattform sowieso so gut wie nutzlos, also legen Sie nicht zu viel Gewicht darauf." - Was für eine dumme Sache zu sagen. Netduino ist eingebettet, es rockt und es ist C # ...
Jonesome Reinstate Monica
11

Ihr C # -Kenntnis ist auf einer eingebetteten Plattform sowieso so gut wie unbrauchbar, legen Sie also nicht zu viel Gewicht darauf.

Ich würde mit einem Arduino oder einem der Klone gehen, nicht weil .Net der Teufel ist, sondern weil es das ist, was alle anderen benutzen, damit Sie viel einfacher Hilfe bekommen und den Code der Leute loswerden können.

Sobald Sie Ihre Füße nass bekommen haben, verzweigen Sie sich auf jeden Fall und probieren Sie verschiedene Sachen aus.

dren.dk
quelle
Befürworten Sie die auf dem Arduino verwendete Verdrahtungssprache oder wollen Sie C-Code auf avrfreaks entfernen (und dazu beitragen) ?
Kevin Vermeer
1
@reemrevnivek Arduino ist nur C ++ mit einigen Bibliotheken. Ich würde es nicht als "Sprache"
klassifizieren
Whoops, Wiring ist das, was ich gemeint habe.
Kevin Vermeer
Ich finde das etwas seltsam, dass ich "Sobald Sie Ihre Füße nass gemacht haben, verzweigen Sie sich auf jeden Fall" als Vorschlag nehme, mit dem Netduino zu beginnen, weil das Programmierelement so viel weniger ein Problem sein sollte - es einem erlauben sollte Entwickeln Sie die "anderen" Fähigkeiten, die Sie brauchen.
Murph
1
Schlechter Kommentar, dren.dk ist einfach falsch. Ich und viele andere verwenden den ganzen Tag Netduino und C #.
Jonesome Reinstate Monica
7

Ich habe derzeit ein Arduino, ein mbed und schließlich ein Netduino zur Verfügung, das für Entwickler / Bastler verwendet werden kann. Ich habe es nie gemocht, mit dem Arduino zu arbeiten, vielleicht weil der Editor nicht sehr gut ist und ich als C # -Entwickler definitiv verwöhnt bin. Als ich mein mbed erhielt, mochte ich die Entwicklung viel, viel besser, aber das Debuggen ist immer noch schmerzhaft, weil Sie print-Anweisungen verwenden müssen, um herauszufinden, was los ist.

Wenn Sie ein Produkt entwickeln oder nur herumdrehen, wird die meiste Zeit zunächst für das Debuggen aufgewendet ... und wenn Sie debuggen, möchten Sie Haltepunkte haben. Es fällt mir sehr schwer, auf Embedded-Hardware zurückzugreifen, die keinerlei Haltepunkte bietet.

Ich habe noch keine Erfahrung mit JTAG, aber jedes Mikro, das ich bis jetzt gesehen habe (außer den RabbitCore-Modulen), benötigt es, um das Debuggen über Haltepunkte zu ermöglichen. Stellen Sie sich meine Überraschung vor, als ich heute mein Netduino angeschlossen habe und in der Lage war, meinen Code in VS2010 schrittweise durchzuarbeiten! Das hat mich sehr gefreut.

Persönlich würde ich mir keine Sorgen um die Größe des Footprints, die Übel von .NET und Microsoft usw. machen. Ich würde mich nur darum kümmern, in der Lage zu sein, schnell und effizient zu debuggen, damit ich nur Dinge erledigen kann .

Dave
quelle
Dinge zu erledigen ist eine Lektion, die man am besten auf die harte
@ Kurtnelle es klingt wie Sie befürworten, nicht die .NET MF verwenden?
Dave
@ Dave, ja das bin ich. Das liegt nur daran, dass ich das alte 8-Bit-Mikrocontroller-Ding auf C-Basis ausprobiert habe und für viel Mühe nur wenig getan habe.
@kurtnelle aber mit dem .NET MF bekomme ich eigentlich mit sehr wenig Aufwand einiges hin.
Dave
2
@ Dave, sorry für die dyslektische Reaktion zuvor; Ich befürworte .NET MF
5

Als BasicStamp-Benutzer seit fast 20 Jahren und als NetDuino-Benutzer seit nur 2 Wochen (ich habe noch nie ein Arduino verwendet) würde ich sagen, dass das NetDuino eine großartige Plattform ist. Die zwei Hauptmerkmale, die mir Spaß machen: Einfache Programmierung (und Haltepunkte!) In VisualStudio und der hochauflösende ADC auf der Platine sind Hauptgründe. Die wenigen Arduino Shields, die ich mit SparkFun ausprobiert habe, haben perfekt mit dem NetDuino zusammengearbeitet.

AlfredBr
quelle
4

Persönlich bin ich kein Fan von C # oder .NET. Ich bin ein C-Idiot. Die Wahl der Plattform hängt also von den gewünschten Hardwarefunktionen ab (Flash, RAM, Taktrate, Anzahl der ADCs, Anzahl der Timer usw.).

Dennoch kann ich mir vorstellen, dass C # /. NET für Rapid Prototyping nützlich ist:

  • Die Handhabung von Zeichenfolgen wird wahrscheinlich viel einfacher sein
  • Die RPC- und Objektserialisierung ist wahrscheinlich einfach. Ich vermute, dass Sie C # -Objekte einfach über eine serielle Verbindung verschieben können. RPC funktioniert wahrscheinlich "nur"
  • Portabilität - .NET ist eine virtuelle Maschine, sodass Code auf anderen Boards oder sogar auf PCs ausgeführt werden sollte
  • Die Garbage Collection vereinfacht die Implementierung vieler Algorithmen

Natürlich hat das alles einen Preis:

  • Der Code-Footprint ist größer (insbesondere, wenn Sie die Standardbibliotheken berücksichtigen)
  • RAM-Auslastung ist höher (alles ist ein Objekt, ist alles typisiert?)
  • Der Müllsammler mischt sich wahrscheinlich in die Echtzeitleistung ein
  • Wenn eine Hardwarefunktion von den .NET-Bibliotheken nicht unterstützt wird, können Sie sie nicht verwenden (es sei denn, Sie implementieren die Funktionen selbst, für die Sie C / C ++ benötigen, siehe Kommentare).

Und vor allem, wenn Sie Ihre C # -Fähigkeiten auf einer eingebetteten Plattform einsetzen, lernen Sie nichts über eingebettete Geräte.

Ja, es wird die Arbeit erledigen - aber wo ist der Spaß dabei?

Toby Jaffey
quelle
Ich frage mich, wie schwierig es ist, die auf NetDuino verwendeten .NET-Bibliotheken mit einer neuen Funktion zu patchen. Es sieht so aus, als würden sie C ++ verwenden, um ihr .NET SDK zu erstellen, ganz unten in SecretLabs.NETMF.Hardware / Stubs - Quelldateien . Seufzer.
Kevin Vermeer
@reemrevnivek Nicht meine Vorstellung von Spaß. Wenn Sie die Laufzeitumgebung patchen, können Sie genauso gut mit C / C ++
Toby Jaffey 28.10.10
1
@Joby - Ich bin ein C-Luddit wie Sie, aber ich wollte nur darauf hinweisen, dass es möglich ist ist nicht ganz wahr.
Kevin Vermeer
1
Haben Sie tatsächlich Benchmarks gesehen? Es fällt mir schwer, mir vorzustellen, dass ein 16-MHz-8-Bit die gleiche Geschwindigkeit wie ein 60-MHz-32-Bit-Mikro hat. Zumal Arduino-Bibliotheken auch die Geschwindigkeit verringern - auch nicht wirklich auf Geschwindigkeit optimiert. Und es hat auch Objekte (wenn nicht so viele, wie in .NET verwendet werden). Und ist es viel anders als Arduino? Wenn es keine Arduino-Bibliothek gibt, die eine Funktion unterstützt, müssen Sie diese selbst implementieren (indem Sie direkt auf Hardwareregister usw.
zugreifen
@davr Bearbeitete Antwort
Toby Jaffey
3

Ich habe das Bett gefunden ein wunderbarer Ersatz für den Arduino.

Die Softwarebibliothek ist stärker auf C ++ ausgerichtet und enthält den gesamten syntaktischen Zucker der Überladung von Zuweisungsoperatoren. Zusätzlich wird ein System eingerichtet, mit dem Benutzer Codebibliotheken veröffentlichen und dokumentieren können, die dann leicht durchsucht und in Projekte importiert werden können.

Ein weiteres gutes Feature ist die Möglichkeit, das Gerät als USB-Stick zu behandeln und die .binDateien direkt auf das Laufwerk zu kopieren.

Leider ist die IDE mit der des Arduino vergleichbar. Auch es ist online . Dies ist sowohl sehr gut (kann auf jedem PC verwendet werden, keine Installation erforderlich) als auch sehr schlecht (kann ohne Internetverbindung nicht einfach umprogrammiert werden).

Die Kosten für das Board betragen 60 US-Dollar, aber es gibt ein Sponsoring-Programm, bei dem Boards für interessante Projekte gespendet werden, sofern der Fortschritt dokumentiert und der Quellcode veröffentlicht wird.

Eric
quelle
Ich liebe die Sponsoring-Idee - das muss ich mir ansehen.
Dave
2

Ich bin hauptsächlich ein C # -Entwickler. Ich habe ein Arduino anstelle eines Netduino gekauft, da der Quellcode verfügbar ist. Es wäre nicht einfach, Netduino in elektronische Arduino-Bausteine ​​zu integrieren, da Sie einige der Beispiele von Grund auf neu schreiben müssen.

Jader Dias
quelle
2

Denken Sie beim Lesen von "C # ist nicht für eingebettete Plattformen geeignet" daran, dass Personen, die älter als ein bestimmtes Alter sind, bereits davon gehört haben, dass sie mindestens einmal über "C" und dann noch einmal über C ++ in ihrem Leben gesprochen haben ...

Natürlich ist es eine enorme Verschwendung der zugrunde liegenden Fähigkeiten des Prozessors, aber die Fähigkeit, Ihre Leerlaufschleife 1000-mal schneller auszuführen, als Sie benötigen, anstatt 10-mal schneller, als Sie brauchen, hat noch nie jemanden reich gemacht.

user1844
quelle
Leerlaufschleifen sind nicht relevant. Es gibt einige MCU-Anwendungen, bei denen Zyklen eine Rolle spielen, z. B. die Erfassung oder Erzeugung von Videosignalen, die Erstellung eines eigenen Oszilloskops, die Echtzeit-FFT-Analyse des Eingangssignals und viele andere. Sie können C # für diese vergessen. Auf der anderen Seite sind C # und .NET MF keine schlechte Wahl, wenn Ihre Anforderungen mehr darauf abzielen, "PC-ähnliche Software nur in einem kleinen Paket" zu entwickeln ...
avra
2
... Für eine solche Erfahrung würde ich lieber ein Linux-basiertes Embedded-ARM-Board wählen, aber das ist ein Thema für eine andere Diskussion. Der Punkt ist, dass für jemanden, der nur mit einem C # -Hintergrund in die Embedded-Welt einsteigt, .NET MF überhaupt kein schlechter erster Schritt ist.
Avra
1

Wenn Sie das blanke Metall fühlen möchten und beispielsweise Videosignale direkt erzeugen oder erfassen können, ist dies der Punkt, auf den jeder Zyklus ankommt, und AVR / Arduino lässt Sie dies tun. Wenn Sie ein höheres Abstraktionsniveau, höheren Programmier- und Debugging-Komfort und einen Garbage Collector wünschen und damit leben können, dass Sie wie unter Windows nicht alles kontrollieren, wählen Sie NetDuino oder FEZ Domino. Da beide über ARM verfügen, wette ich, dass Sie bei Bedarf .NET MF auf dem Board töten und Bare-Metal-ARM-GCC-Code mit Hilfe eines kleinen JTAG-Debuggers direkt aus Eclipse wie IDE flashen können. Untersuche ein wenig. Das Problem könnte sein, dass Sie etwas löten müssen, wenn der JTAG-Header fehlt.

avra
quelle
C und C ++ sind für Videos nicht gut genug.
Es gibt mindestens 10 Projekte, die Videos nur mit Software erstellen. Die meisten sind schwarz / weiß oder grau, aber es gibt sogar Farb- und Spielsysteme, die nur mit AVR-Software erzeugte Videos enthalten. Es gibt auch OSD-Projekte. Es gibt auch einige Beispiele für die Aufnahme von Videobildern mit niedriger Auflösung mit AVR ohne FPGA.
Googeln Sie
Wenn ich Video sage, meine ich 1080p 24bit Farbe. Kann Embedded C ++ das?
0

Nach einer sehr langen Pause von Elektronik und Programmierung bin ich aufgrund eines Projekts zurückgekehrt, das einer meiner Söhne an der Universität durchführt. Ich lernte Elektronik, als Röhren die Norm waren und programmierte mit Kippschaltern (Adresse einstellen, Daten einstellen, laden, speichern, in Binärform) und Lochkarten. Im Laufe der Jahre habe ich jede Weiterentwicklung der Elektronik- und Programmiersprachen gelernt und angewendet, die viel konzentrierte Anstrengung und Zeit in Anspruch nahm. Folglich bin ich so dankbar für die Fortschritte bei Mikrocontrollern und wie unglaublich billig sie sind, einschließlich der Entwicklungsplatinen wie Arduino, Netduino usw. Die Argumente über Arduino gegen Netduino usw. erinnern mich an die Schlachten von Microsoft gegen Apple, wie z als Kommandozeile vs GUI. Es spielt keine Rolle, welche Plattform, Programmiersprache usw. verwendet wird, solange dies für das Ergebnis angemessen ist.

user3175
quelle
-1

Wenn .net MF Bibliotheken anbietet, die in der Lage sind, was reiner Maschinen- / Metallcode kann, ... wird die einzige Abstraktion (.net MF) eine gute. Abgesehen davon, dass Sie mehr Platz benötigen und einen GC ausführen (was sollte ihn effizient machen?)

Vijay
quelle