Für einen erfahrenen Programmierer Arduino oder etwas anderes?

11

Mein hintergrund:

Ich habe schon eine ganze Weile Software gemacht und bin mehr oder weniger kompetent in C, C ++, Java, Ruby, Erlang, Haskell, Lua und Python. Ich nahm auch an einem Kurs in Laborelektronik teil, aber abgesehen von einem kurzen Labor mit einer Pumpe ging es darum, ein Signal in und A / D und von dort in ein x86 mit LabView ( nicht meine Wahl der Programmierumgebungen) zu bringen, das ich gerne hätte wieder mit Hardware zu basteln, mit Blick auf die Heimautomation. (Ich denke, ich kann es besser machen als dies für weniger als 500 Dollar)

Frage:

Ich wollte mir auf einem Arduino die Zähne schneiden, aber je mehr ich lese, desto mehr scheint es der Hauptvorteil dieses Systems zu sein, dass es einfach zu programmieren ist. Ist dies ein guter Ort für einen Software-Typ (der noch einen Lötkolben kaufen muss), um anzufangen, oder gibt es etwas, das besser zu mir passt?

(PS Ich habe mehr Zeit als Geld)

John F. Miller
quelle

Antworten:

4

Was Mikrocontroller-Evaluierungskarten betrifft, die sofort einsatzbereit sind, gibt es natürlich die Arduino-Familie. Aber auch das msp430-Launchpad für 4,30 US-Dollar. Guter Befehlssatz und ähnliche Leistung wie der AVR mit einer Neigung zu geringem Stromverbrauch. Für 20 US-Dollar erhalten Sie die stm32f4-Erkennung (nicht zu verwechseln mit der stm32-Wertlinienerkennung oder der stm8-Familie), die im Allgemeinen geringer ist als die, die Sie für ein verwendbares Arduino (35 bis 50 US-Dollar) zahlen würden, aber Kreise um den Gleitkomma-Arduino mit 168 MHz laufen lässt Einheit, Caches usw. Am oberen Ende der Arduino-Preisspanne befindet sich ein weiterer Arm, der mbed (mbed.org), der dem Arduino-Sandbox-Erlebnis wahrscheinlich am nächsten kommt.

Wenn Sie in einer Standbox bleiben und nur API-Anrufe tätigen möchten, ist das Arduino wahrscheinlich der Ort, an dem Sie leben möchten. Es gibt das Mega für mehr Leistung oder Sie entscheiden sich für das Armblatt aus Ahorn, das auf Armen basiert, aber versucht, das Arduino-Sandbox-Erlebnis zu bieten.

Sie können viel mehr Leistung erzielen, Ihr Geld verdienen usw., wenn Sie etwas mehr Verantwortung und Wissen darüber übernehmen, was los ist. Ich empfehle alle drei Plattformen (avr, msp, arm / thumb) und mehrere Anbieter (avr und msp sind gesperrt, aber arm wird von jedem mit unterschiedlichen Peripheriegeräten und E / A verkauft). Beispielsweise können Sie an eine Plattform gewöhnt sein, die keine Klimmzüge auf den GPIO-Leitungen aufweist und externe Komponenten verwenden muss, bei denen ein anderer Chip oder Anbieter dies auf dem Chip zu einem vergleichbaren Preis- / Leistungspunkt bereitstellt. Ebenso mögen Sie es vielleicht, eine serielle Schnittstelle oder einen SPI-Bus zu knallen, stellen jedoch fest, dass ein anderer Anbieter für dasselbe Geld, dieselbe Leistung, dieselbe Größe usw. Hardware zur Unterstützung dieser Schnittstelle hat.

Wenn nichts anderes, ist es in Ihrem besten Interesse als Programmierer und jemand, der in die Hobbyelektronik einsteigen möchte, um mehr darüber zu erfahren, was außerhalb des Sandkastens vor sich geht. Um in diese Welt der Hobbyelektronik einzusteigen, ist das Arduino ein sehr sehr komfortabler Übergang von der Anwendungsprogrammierung auf einem Betriebssystem. sparkfun hat jetzt einige Kits, die die serielle Schnittstelle enthalten, und ein paar Periperhals gibt es ein Lilypad-Kit (eine Arduino-Plattform) und vielleicht ein Pro-Kit, beide sind nicht der Arduino-Shield-Formfaktor, wenn das wichtig ist. sparkfun verkauft Einzelhandelsverpackungen und viele andere Geschmacksrichtungen von Arduinos, Uno usw. (die oben genannten St- und MSP-Boards sollten Sie auf der Website von ti oder st beginnen oder auf github.com/dwelch67 gehen, und ich habe Links zu den verschiedenen Boards in meinem Beispiele).

Oldtimer
quelle
8

Tagsüber bin ich auch ein Software-Typ. Vor ungefähr zehn Jahren habe ich mit BASIC-Briefmarken von Parallax angefangen, und nach einer langen Zeit bin ich kürzlich wieder in eingebettete Projekte eingestiegen. Anfangs habe ich mir den Arduino und seine verschiedenen Teile angesehen und festgestellt, dass ich einfach das Preisschild des Arduino-Boards überspringen und mir ein paar ATMega168 schnappen und wieder loslegen kann. Dies funktionierte größtenteils, aber ich stieß häufig auf Probleme, bei denen ein vorgefertigtes Board schön gewesen wäre, da ich die Grundbaugruppe nicht vermasselt hätte.

Ich bestellte schließlich ein Arduino und liebe alles an der Tafel und den Bibliotheken. Ich bin kein Fan der "IDE", also klicke ich auf "Externen Editor verwenden" und verwende die IDE nur zum Kompilieren und Flashen der Software auf die Karte. Normalerweise starte ich ein Projekt oder eine Idee mit dem Arduino-Board und portiere es dann in einen Mega-Chip. Dies hilft, die Kosten niedrig zu halten, indem nur die für ein Projekt erforderlichen Teile verwendet werden, aber ich kann trotzdem schnell einen Prototyp erstellen.

Viel Glück!

Michael Dillon
quelle
6

Der Arduino ist eine großartige Einführung in die Programmierung eines Mikrocontrollers.

Es gibt einen großen Unterschied zwischen dem Schreiben von Software für einen PC und dem Schreiben von Firmware für einen Mikrocontroller.

Der Arduino ist ein guter Ausgangspunkt, um sich mit Peripheriegeräten usw. zu beschäftigen, ohne sich mit bestimmten Chip-Macken und Ähnlichem herumschlagen zu müssen.

Aber wie gesagt, es ist eine Einführung.

Beginnen Sie mit dem Arduino und gehen Sie dann zu größeren und besseren Dingen über.

Ich benutze die PIC-Familie von Mikrocontrollern ziemlich oft, aber ich habe immer noch mein vertrauenswürdiges Arduino, mit dem ich Ideen ausprobieren und Dinge schnell testen kann.

Majenko
quelle
6

Da „Arduino“ mehrere Dinge umfasst, halte ich es für nützlich, sie separat zu betrachten:

  • Auf der Hardwareseite ist ein Arduino-kompatibles Gerät im Grunde ein ATMega-Mikrocontroller mit einem bestimmten Bootloader. Normalerweise enthält eine fertige Arduino-kompatible Karte auch andere unterstützende Elektronik wie eine USB- oder serielle Schnittstelle, einen Spannungsregler, Pin-Header für den einfachen Zugriff auf Pins usw. Die Hardwaregeräte sind recht erschwinglich, wenn Sie die USB-Funktionalität und möchten Zusammen mit dem vorprogrammierten Bootloader müssen Sie keinen separaten Programmierer kaufen, um Ihre Software hochzuladen. Ja, die Arduino (und kompatiblen Klone) sind als Hardwaregeräte beim Prototyping nützlich. Für den endgültigen Build möchten Sie möglicherweise Ihre eigenen mit nur den Teilen erstellen, die Sie benötigen, damit Sie nicht in jedes Projekt ein vollständiges Arduino einfügen müssen.

  • Auf der Softwareseite ist die Arduino-Bibliothek wie jede Programmierbibliothek und ihre Nützlichkeit hängt von Ihren Anforderungen ab. Persönlich finde ich es gelegentlich nützlich für das schnelle Prototyping (z. B. die Funktionalität der seriellen Schnittstelle), aber als erfahrener Programmierer mag ich viele der Vereinfachungen (insbesondere die Pin-Nummerierung) nicht. In jedem Fall können Sie die ursprünglichen AVR-Bibliotheken anstelle oder zusätzlich zur Arduino-Bibliothek problemlos verwenden, selbst wenn Sie für ein Arduino-Gerät programmieren und / oder die Arduino-IDE verwenden. Verwenden Sie also alle Arduino-Bibliotheken, die Sie hilfreich finden, insbesondere beim Prototyping, aber lernen Sie den zugrunde liegenden AVR kennen (siehe Arduino-Quellen und ATMega-Datenblatt).

  • Schließlich ist die Arduino IDE die grafische Programmierumgebung mit einem einfachen Editor, einer seriellen Port-Konsole, einem "make" -ähnlichen Build-System (vor dem Benutzer verborgen) und (einem Front-End für) Tools zum Hochladen Ihrer Software auf das eigentliche Gerät . Persönlich hasse ich die IDE und benutze sie nie. Ich arbeite lieber an der Kommandozeile, aber dies ist natürlich nur eine Frage der persönlichen Präferenz.

Arkku
quelle
1
Ich weiß nicht, wie sie diese Monstrosität als IDE bezeichnen können. Es ist das schrecklichste Stück [expletiv gelöscht], das man sich vorstellen kann. Ich habe Anjuta fast eingerichtet, um alles für mich zu tun, jetzt wo die (nicht sehr) IDE des Arduino es tut.
Majenko
4

Ihre Frage ist zu offen für eine klare Antwort. Wir können Ihnen also nur die Kompromisse zeigen.

Der Adruino ist ein mit Zucker überzogener Mikrocontroller, der für die Massen geeignet ist. Es ist optimiert, um grundlegende Dinge schnell zu erledigen, ohne dass man etwas lernen muss.

Das Herzstück eines Arduino ist ein gewöhnlicher Mikrocontroller, den Sie auch direkt verwenden können. Der Vorteil ist, dass Sie Ihr Mikro genau für das auswählen können, was Sie tun möchten, keine Ahnung haben, was Sie zwischen Ihnen und dem Mikro tun sollten, und dass Sie alles tun können, was das bloße Mikro kann, nämlich a viel mehr als durch die Arduino-Abstraktion aufgetaucht. Der Nachteil ist, dass Sie tatsächlich etwas lernen müssen. Das Lesen von ein paar 100 Seiten Datenblatt ist nur der Anfang und Sie werden keine sofortige Befriedigung erhalten.

Nur Sie können sagen, was für Sie besser ist. Möchtest du deinen inneren Trottel umarmen und selig durch den Garten geführt werden, um für immer "huh?", "Was?" Und "Oh, das ist so süß!" Zu sagen. zu elektronischen Dingen? Oder möchten Sie lieber den langen, dunklen Pfad entlang stapfen, um nach viel Mühe und Mühe mit einer einzigen blinkenden LED aufzutauchen? Möchten Sie nur das Auto fahren oder lernen, wie der Motor funktioniert, damit Sie maximale Leistung erzielen und ihn selbst optimieren können?

Olin Lathrop
quelle
1
Olin, du bist alte Schule! Ich meine das absolut als Kompliment ... Aber ich bin mit Ihnen in dieser Frage nicht einverstanden. Der Umgang mit mittelmäßig gestalteter Software auf einem schlecht konzipierten Betriebssystem hat mein Verständnis von Elektronik um null erweitert. Hat in der Tat Tage wertvoller Zeit in Anspruch genommen, in denen ich nützliche Dinge von sachkundigen Menschen wie Ihnen hätte lernen können. Ich sage "Es lebe Arduino!"
Kaelin Colclasure
2
@KaelinColclasure Dein Kommentar ist etwas verwirrend für mich. Sie haben Probleme mit schlechter Software und Betriebssystemen, aber Olin spricht das überhaupt nicht an. Wenn überhaupt, können Sie überlegen, was Arduino für Sie tut, eine Abstraktionsschicht, wie ein Betriebssystem eine Abstraktionsschicht ist. Das Erlernen der Verwendung eines Arduino hilft Ihnen kaum, ein besserer Ingenieur zu werden, da der Overhead zu zusätzlichen Kosten führt, die nicht benötigt werden. Trotzdem denke ich, dass Arduino eine großartige Plattform ist, aber nicht als Ersatz für ein wirkliches Verständnis der Welt der eingebetteten Elektronik angesehen werden sollte.
Kellenjb
Yay Auto Analogien! Olin, für viele Leute geht es nicht darum, das Wesentliche der Elektronik zu stapfen und zu lernen und sich zum Ingenieur zu entwickeln. Viele Menschen möchten nur ein Werkzeug auswählen, mit dem sie ihr Ziel erreichen und ihr Problem lösen können. Das Erlernen der Elektronik ist in vielen Fällen ein Mittel zum Zweck und nicht der Zweck selbst. Nicht jeder ist aus den gleichen Gründen in diesem Spiel wie Sie.
Nemik
2
Ja? Worum geht es dann in "Umarme deinen inneren Idioten"? Komm schon. Umfassen Sie Ihren inneren Trottel unter Windows, Linux oder OS X, anstatt Ihr eigenes Betriebssystem wie ein Real Man ™ zu schreiben? Das sind zuckerbeschichtete Betriebssysteme, die für die Massen heruntergekommen sind.
Nemik
1
@nemik: Deinen inneren Idioten zu umarmen war eine Art Witz, genau wie den langen dunklen Pfad entlang zu stapfen ... Natürlich steckt auch in beiden etwas Wahres.
Olin Lathrop
4

Als Programmierer bevorzuge ich das Programmieren in einer Sprache, die von vielen anderen Menschen verwendet wird. Auf diese Weise stehen mir viele Bücher, Artikel, Kollegen usw. zur Verfügung, die mir beim Lernen helfen.

In der Single-Board-Computerwelt ist der Arduino zweifellos der beliebteste mit dem größten Hauch an Unterstützung. Es ist eine ausgezeichnete Wahl für Ihren ersten Mikrocomputer.

In Anbetracht dessen, wie billig diese Dinge sind (die meisten kosten weniger als 50 US-Dollar), sollten Sie in Betracht ziehen, mehr als einen Typ zu erwerben.

Für jemanden, der mit Microsoft Visual Studio und C # vertraut ist , ist Netduino eine ausgezeichnete Wahl, da es über eine Toolchain verfügt, die Sie bereits kennen.

Wenn Ihre bevorzugte Umgebung Unix ist, könnte Ihnen ein Board wie der Raspberry Pi gefallen, das im Januar 2012 erscheinen soll:

Was ist ein Raspberry Pi? Der Raspberry Pi ist ein Computer in Kreditkartengröße, der an Ihren Fernseher und eine Tastatur angeschlossen werden kann. Es ist ein leistungsfähiger kleiner PC, der für viele Aufgaben Ihres Desktop-PCs verwendet werden kann, z. B. für Tabellenkalkulationen, Textverarbeitung und Spiele. Es werden auch hochauflösende Videos abgespielt. Wir möchten, dass Kinder auf der ganzen Welt damit Programmieren lernen.

Wann kann das Gerät gekauft werden? Wir hatten gehofft, den Raspberry Pi bis Ende 2011 bestellbar zu haben. Wir gehen davon aus, dass wir noch vor Jahresende einige unserer ersten Beta-Boards versteigern werden (behalten Sie die Website nach Weihnachten im Auge). Wir werden im Januar zur Hauptproduktion übergehen.

Wie viel wird es kosten? Das Modell A kostet 25 USD und das Modell B 35 USD.

Die wirklich gute Nachricht ist, dass es viele kostengünstige Mikrocontroller gibt, von denen immer mehr herauskommen.

Schließlich gibt es noch das Texas Instruments MSP-430 Launchpad, das für 4,30 USD versandkostenfrei erhältlich ist. Zu einem so günstigen Preis, wie können Sie keinen kaufen?

JonnyBoats
quelle
4

Beginnen Sie mit Arduino, um Ihre Idee zu konkretisieren und einen minimal funktionierenden Prototyp zu erstellen. Lernen Sie einfach, sich mit den Grundlagen zu verbinden, die Sie für Ihr Produkt benötigen (Motoren, Sensoren, seriell für die Kommunikation).

Wenn Sie später mehr Funktionen (USB-Geräte, Ethernet) wünschen, wechseln Sie zu den Chips der ARM Cortex M-Serie. 32-Bit-ARM bedeutet, dass sie sehr leistungsfähig und jetzt oft billiger und mit mehr Peripheriegeräten als High-End-8- oder 16-Bit-Chips wie AVRs und PICs sind. Das mbed von NXP (http://mbed.org) ist eine sehr sanfte Einführung in diese Plattform, wenn Sie aus Arduino kommen.

nemik
quelle
2

Wenn Leute sagen, Arduino sei "einfach zu programmieren", meinen sie wirklich, dass die Toolchain im Grunde nur funktioniert. Es funktioniert auf einem Mac, es funktioniert unter Windows und es funktioniert unter Linux. Sie schließen Ihr Board an, Sie schreiben Ihren Code, Sie laden ihn hoch und es geht.

Um einen kleinen anekdotischen Kontrast zu bieten, habe ich selbst gerade auf Atmels STK600 und dessen AVR Studio 5-Entwicklungsumgebung "aktualisiert". Es funktioniert nur unter Windows, daher musste ich VMware auf meinem Mac installieren und ausführen. Dann musste ich den kniffligen Jengo USB-Treiber installieren, was einen Tag dauerte, bis ich pingelige Forenbeiträge gelesen hatte. Dann musste ich herausfinden, warum ich von der IDE aus mit dem Entwicklungsboard sprechen konnte, aber nicht mit der ATmega2560-Tochterkarte, die mit dem STK600 geliefert wurde ... (Das JTAG-Kabel wurde falsch eingesteckt, weil ich einem illustrierten Tutorial auf der Web, bei dem sich ein Bild mit dem rückwärts angeschlossenen Kabel zeigte.)

Bisher habe ich mit AVR Studio 5 keine Codezeile geschrieben, aber ich habe wahrscheinlich mehr Zeit damit verbracht, damit herumzuspielen, als ich insgesamt mit der Arduino IDE verbracht habe. Und ich habe Dutzende von Arduino-Skizzen geschrieben.

Die Sprache, in der Sie programmieren, ist im Grunde C ++ mit ein wenig Vorverarbeitung. Mit Ihrem Hintergrund haben Sie keine Probleme damit, herauszufinden, wie Sie die gewünschten Skizzen später in eine "professionelle" Umgebung übertragen können, falls dies erforderlich sein sollte. Für mich entstand die Notwendigkeit erst, als ich über das Basteln an der Arduino-Hardware hinausging und anfing, mein eigenes Board zu entwerfen. YMMV natürlich ...

Hoffe das hilft. :-)

Kaelin Colclasure
quelle
3
Nicht um dich auszusuchen ... aber ich bin wieder anderer Meinung als du. Der Grund, warum Leute sagen, dass ein Arduino einfach zu programmieren ist, ist, dass sie im Wesentlichen eine Abstraktionsschicht hinzugefügt haben, die Sie sonst nicht bekommen würden. Sie rufen auch C ++ auf, dies ist in der eingebetteten Welt sehr selten zu sehen. Es wird manchmal für bestimmte Projekte benötigt, fügt aber auch einen gewissen Overhead hinzu, den Sie einfach nicht haben können, wenn Sie versuchen, jeden Cent zu sparen.
Kellenjb
@Kellenjb, ich kann C ++ fast ohne Overhead codieren, manchmal können Abschnitte bis zu 10% haben, aber viele Abschnitte mit 0 Overhead. Aber ja, es ist selten, weil Sie mehr darauf achten müssen, was Sie mit Ihrer Sprache tun, aber warten Sie, das gleiche gilt für C. Ich habe gesehen, dass Benutzer malloc () in c zuvor auf eingebettet versucht haben, um nicht großartige Ergebnisse zu erzielen.
Kortuk
1

Der Arduino stellt eine flexible Steigplattform zur Verfügung, die A / D, D / A (zumindest als PWM), viele digitale E / A, eine programmierbare LED auf der Platine, Seriell-USB und vorgefertigte Module bereitstellt viele andere Arten von Hardware. Wenn Sie sich für die Lernerfahrung selbstständig machen möchten, brauchen Sie sie nicht. Wenn Sie möchten, dass eine Plattform nur zum Spaß etwas zum Laufen bringt oder während Sie die kostengünstige Hardwareversion dieses Etwas entwerfen, können Sie loslegen, wenn Sie es sind. Dies sind Design-, strategische und wirtschaftliche Entscheidungen, die absolut gültig sind, um in einer Weise zu treffen, die Ihren Zielen entspricht. Es ist nichts "Schwachsinniges" daran, Kompromisse einzugehen - das tun Ingenieure - und sollen es jeden Tag tun.

JRobert
quelle
1

Johns Erfahrung stimmt fast genau mit meiner vor 15 Jahren überein, als ich mich vom Unterrichten von Informatik (im Grunde Assembler-Programmierung und C) für Studenten zurückzog. Damals wurde mir klar, dass es unerschwinglich teuer wäre, mit den Fortschritten im Computerbereich Schritt zu halten. Meine Frau schlug daher vor, als Hobby zur Elektronik zurückzukehren, da ich es in den 1950er Jahren genossen hatte, Elektroingenieur zu werden. Dies tat ich, obwohl ich nur kurz Transistoren getroffen hatte und noch nie einen Operationsverstärker gesehen hatte, so dass ich viel Freude am Lernen hatte. Ich behielt meine Liebe zur Assemblersprache bei und als Mitte der 90er Jahre Microchip Pics auftauchten, war ich begeistert von ihnen.

Ich kann sie nicht mit Arduino vergleichen, von dem ich nichts weiß, aber ein Vorteil der Verwendung von Pics ist, dass die Einrichtung kostengünstig ist, da Microchip alle Informationen kostenlos mit einer brillanten IDE bereitstellt und Sie lernen können, sie zu verwenden , wie ich, von dem, was sie veröffentlichen. Sie können mit einem hausgemachten Programmierer beginnen, viele Designs im Internet, so dass es nur ein paar Pfund kosten würde, wenn ein paar Pic-Chips anfangen würden. Ich würde jedoch das PicKit 2 empfehlen, das viele integrierte Funktionen bietet, um die Programmentwicklung zu vereinfachen. Vielleicht nicht PicKit 3, siehe:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Obwohl dies aktualisiert wurde, lesen Sie die Hinweise zu dieser Referenz.

Es gibt eine große Anzahl von Büchern über Bilder, aber einige sind Müll, Vorsicht. Für einen einfachen Start ist eine hervorragende Einführung in Pic:

"Entwerfen eingebetteter Systeme mit PIC-Mikrocontrollern: Prinzipien und Anwendungen" [Taschenbuch] von Tim Wilmshurst, £ 22-66 bei Amazon, das sowohl Assembler als auch C enthält. Ich habe C für eine Weile vermieden, weil es die Intimität mit der Hardware zu beeinträchtigen schien dieser Assembler gibt, aber mit dem von Microchip gelieferten C-Compiler können Sie den Assembler-Code sehen, der ebenfalls generiert wird.

Für eine insgesamt gute, technische (keine Angst, Mathematik einzusetzen) Berichterstattung über moderne Elektronik empfehle ich: "Praktische Elektronik für Erfinder" 2 / E [Taschenbuch] von Paul Scherz, £ 19-95 bei Amazon.

Ich habe 26-99 £ bzw. 22-99 £ für diese Bücher in Geschäften bezahlt und bereue es überhaupt nicht.

Ich kann hier nicht genug behandeln, ich würde gerne per E-Mail zu diesem Thema korrespondieren: [email protected] (und für alle Fälle bin ich sehr vorsichtig, was ich lese, herunterlade oder antworte.)

Harry Weston
quelle