Was macht eine bestimmte Plattform für den Produktionseinsatz geeignet oder ungeeignet? [abgeschlossen]

Nehmen wir an, dass die Warenkosten ein unbedeutender Faktor sind. Wenn ein Unternehmen kein Team hat, um ein kundenspezifisches Board für ein bestimmtes Produkt zu produzieren, aber mit einer handelsüblichen Entwicklungsplattform wie Arduino / Netduino / mbed erfolgreich ist, welche Dinge sollten berücksichtigt werden, bevor es weitergeht?

Wenn ich mich nicht irre, richtete sich Arduino wegen seines niedrigen Preises und seiner Benutzerfreundlichkeit ursprünglich an Universitätsstudenten. Es wurde natürlich zu einer beliebten Plattform für Künstler und Macher. Ich sehe Netduino als eine logische Erweiterung von Arduino – es ermöglicht den Menschen, eine robuste und reichhaltige IDE (Visual Studio 2010) zu verwenden und Dinge schnell über das .NET Micro Framework zu erledigen. mbed ist aufgrund seiner Benutzerfreundlichkeit, kostenlosen Tools (Online-Compiler) und Hardware-Peripheriegeräten eine weitere nette Bastlerplattform.

Meine Frage lautet also: Warum sollten Unternehmen diese Entwicklungsplattformen nicht für den produktiven Einsatz übernehmen? Mit anderen Worten, ist es eine schlechte Idee, einfach mehrere Boards von Sparkfun zu kaufen, jedes mit dem Code zu programmieren und das Produkt dann den Kunden bereitzustellen?

Ich interessiere mich speziell für Netduino, aber Argumente für / gegen Arduino und mbed sind auch willkommen. Auf der anderen Seite, würden Sie oder haben Sie dies schon einmal getan?

Ich persönlich betrachte die Netduino-Entwicklung als „Kernmodul“, das andere Prozessorhersteller für Produktintegrationen verkaufen, aber vielleicht übersehe ich hier etwas Wichtiges.

Antworten (6)

Einige der Dinge, auf die Sie bei der Beschaffung eines Controller-Moduls achten könnten, sind Probleme wie Liefersicherheit im Laufe der Zeit, Lizenzprobleme, Ineffizienzen beim Firmware-Ladeprozess für die Produktion, Code-Sicherheitsprobleme und Bedenken hinsichtlich der Herstellungsqualität oder der Einhaltung gesetzlicher Vorschriften. Einige davon werden eher ein Problem für ein proprietäres Modul sein als für ein relativ offenes Modul, für das jemand anderes ein Äquivalent zu anderen Funktionen in Ihrem Produkt erstellen oder schließlich mit ihnen zusammenführen könnte.

Die Versorgung könnte ein Problem sein, aber zumindest die Designs für *duino sind Open Source.
@Dave - Sie haben den Punkt verfehlt. Chris (glaube ich) sprach hauptsächlich über Probleme mit .NET, nicht mit der Hardware.
@reemrevnivek - hmm ... klang für mich sicher nach Hardwareproblemen. Warum würde Probleme liefern, Firmware laden, und mfg. Qualität hat irgendetwas mit .NET zu tun?
Möglicherweise können Sie eine Lizenz zum Laden einer bestimmten Laufzeit auf einem Board mit einer anderen Quelle erwerben oder auch nicht. Die verschiedenen Probleme, die ich vorgeschlagen habe, sind eine Ansammlung, die nicht unbedingt miteinander verbunden ist.

Huch! Entweder sind Sie völlig verwirrt, oder Sie haben eine andere Vorstellung von Produktion als ich. Ich betrachte Produktion als den Verkauf eines Produkts an die breite Öffentlichkeit in Mengen von Tausenden oder mehr und dann die Unterstützung und Aktualisierung des Designs. Produkte, die nicht an die breite Öffentlichkeit gehen, sind entweder interne oder Auftragsarbeiten, und Produkte, die in kleineren Mengen verkauft werden, sind Spezialzwecke oder anderweitig anders. „Mehrere Boards von Sparkfun“ würden einen Produktionsbedarf nicht decken.

Erstens sind die Warenkosten immer ein wesentlicher Faktor. Wie wichtig es ist, kann von Produkt zu Produkt unterschiedlich sein, und es kann weniger bedeutend sein, wenn das bestimmte Element nur eine kleine Komponente eines größeren Systems ist, das auf Kosten optimiert wurde. In jedem Umfeld, in dem Sie jedoch im Wettbewerb mit anderen Produzenten stehen (was Sie sein müssen, denn wenn Sie in der Regierung sind oder ein Monopol haben, würden Sie diese Frage nicht stellen), werden die Kosten ein Faktor sein. Die 35 US-Dollar für das Netduino (allein an Kosten) könnten für die meisten Anwendungen mit einem benutzerdefinierten Design normalerweise auf 10 US-Dollar oder weniger reduziert werden. Wenn Sie davon überzeugt sind, dass die Kosten keine Rolle spielen, sprechen weitere Gründe gegen den Kauf eines solchen Designs.

Ja, alle drei Boards wurden für Studenten, Designer und Bastler entwickelt. Sie sind so konzipiert, dass sie zuverlässig genug für ein Entwicklungskit sind, das auf einem Schreibtisch steht. Dieser Schüler sollte einige Dinge über sichere Handhabungsverfahren wissen, die die allgemeine Bevölkerung nicht kennt oder praktiziert. Probleme wie ESD, langfristige Verlustleistung und Komponenten-Derating wurden wahrscheinlich unter Dinge herabgestuft, die für die Produktion weniger wichtig sind, wie Lötbarkeit und Einfachheit.

Ihre Affinität zu IDEs und vorgefertigten Lösungen ist erschreckend. Meiner Meinung nach schenken Sie Ihren Tool-Anbietern viel zu viel Vertrauen. Wenn die Boards teurer werden, wenn die Lizenzbedingungen geändert werden, wenn der Server ausfällt, die Software für obsolet erklärt wird, der Boardhersteller sein Geschäft aufgibt (usw. etc. etc...), wird Ihr Geschäft abgespritzt. Außerdem fehlt es Ihnen an Verständnis dafür, was hinter den Kulissen vor sich geht. Wenn etwas nicht so funktioniert, wie es die Dokumentation vorschreibt, was ist Ihr Plan? Ihrer Idee, ein paar Arduinos zu kaufen, sie zu programmieren und das Produkt einzusetzen, fehlt zum Beispiel jeder Plan für Codeschutz. Jemand anderes könnte Ihren Code aus dem Mikrocontroller kopieren, die relevanten Teile des Designs für ein Drittel des Preises duplizieren und Sie besser verkaufen.
Sich für Dinge, die man nicht versteht, auf eine IDE und eine Sprache zu verlassen, ist ein Rezept für eine Katastrophe.

Die Verwendung eines Entwicklungskits in Ihrem Design macht Ihr Produkt überteuert, zerbrechlich, sperrig, stromhungrig und ineffizient. Es wird auch schwer zu debuggen, mühsam zu unterstützen, und Sie werden Ihren Lieferanten ausgeliefert sein. Es wird Sie inkompetent aussehen lassen.

Es ist jedoch nicht alles verloren. Wenn Sie Ihr Design auf einem Entwicklungsboard implementieren, ist es einfach, es von jemandem (entweder innerhalb oder außerhalb Ihres Teams) anpassen zu lassen, um diese Mängel zu beseitigen. Wenn Ihnen ein Team fehlt, sollten Sie eines einstellen, einen Auftragnehmer hinzuziehen oder es von einer Designfirma erledigen lassen.

Produktion muss nicht Tausende bedeuten. Es gibt viel Technik in hochspezialisierten Geräten, die in Bestellungen von einigen Dutzend bis zu einigen Hundert Stück verkauft werden können - und offensichtlich werden sie zu ziemlich hohen Preisen verkauft, oder niemand würde damit Geld verdienen. Solche Branchen konzentrieren sich darauf, den Bedarf schnell zu decken, und nicht darauf, Monate damit zu verbringen, den letzten Dollar aus der Stückliste herauszuholen.
@reemrevnivek – Ich denke, Sie und ich arbeiten in völlig unterschiedlichen Welten. Wenn ich mich auf ein Produktionsteil beziehe, handelt es sich um alles, was für einen Kunden freigegeben wird, und es kann sich um Stückzahlen von 1 bis 20 handeln, nicht um Zehntausende, Tausende oder sogar Hunderte. Es wäre mir egal, wenn ich einen Teil von 50 Dollar auf 5 Dollar reduzieren könnte, wenn das bedeutet, dass ich zusätzliche 3 Monate für die Entwicklung aufwenden muss. Ich habe auch nichts dagegen, wenn jemand den Code kopiert.
Sie haben jedoch wirklich gute Punkte angesprochen, und ich schätze Ihren Beitrag. Ich denke, Ihre Antwort war etwas extrem und Sie haben eindeutig eine Meinung zu diesem Thema, aber ich kann die wichtigsten Punkte daraus herausfiltern.
@Dave - Entschuldigung, ich habe bewusst versucht, es nicht eigensinnig oder extrem zu machen. So sieht es nach ein paar erneuten Lesungen und Bearbeitungen aus :P. Ich bleibe jedoch bei meiner Aussage, dass das Wort „Produktion“ (in jedem Kontext, in dem ich tätig war, hauptsächlich als Automobil-OEM-Zulieferer) Tausende von Teilen bedeutet. Können Sie sich vorstellen, Ihre Motorhaube zu öffnen und zu sehen, wie ein Arduino in Ihre Lüftersteuerung gehackt wird? Nein, und das aus gutem Grund. Ich habe versucht, einige dieser Gründe zu nennen.
@reemrevinek - haha! kein Anstoß genommen. Ich hatte gehofft, mit dieser Frage viele Meinungen zu bekommen. Mein Umfeld ist ganz anders. Wir verkaufen ein paar kundenspezifische Produkte, die ziemlich teuer sind, also ist ein Teil wie ein eingebettetes Board in Ordnung, wenn es mehr kostet und die Entwicklungszeit ausgleicht. Ich verwende das Netduino im Moment nur für Prototyping-Konzepte, aber dann kam mir der Gedanke, dass wir es wahrscheinlich in das Produkt einbauen könnten, da es sowieso nur mit einem Display-Controller verwendet wird. Ich stimme sicherlich zu, dass es besser / professioneller ist, ein benutzerdefiniertes Board zu haben, wollte aber Meinungen hören.
@reemrevnivek Ich könnte mir leicht vorstellen, ein Arduino in einem Gehäuse unter der Motorhaube eines Rennwagens zu sehen.
@Chris Ich denke darüber nach, einen in meinen einzubauen, aber nur zur Anzeige von Sensordaten, nicht so etwas wie das Motormanagement. :)
@Chris & Dave: Dasselbe hier. Ich restauriere eine alte Corvette und baue gerade zusätzliche Sensoren und Analysatoren ein. Ich verwende FEZ Panda (Arduino-kompatibel) Testgeräte und erwäge die Verwendung einer Mini-Version eines der Entwicklungsboards "in Produktion". . Ich sehe nichts Falsches an dieser Anwendung und würde nicht einmal etwas Falsches daran sehen, sie zu verkaufen. Natürlich wäre die Massenproduktion aufgrund der aufgeführten Gründe reemrevnivek begrenzt.
@reemrevnivek: Ich kann nicht sagen, dass ich Ihrer Verachtung für Tools und Entwicklungsumgebungen zustimme. Paranoia, dass Microsoft sein Geschäft aufgibt oder das .Net-Framework in Zukunft nicht mehr unterstützt, ist unangebracht.
Übrigens ... das .Net Micro Framework 4 ist Open Source
@Kihoffer - Müssen alle Ports zu einem bestimmten Zielboard Open Source sein oder nur die Upstream-Distribution von Microsoft?
@Chris Stratton, die Antwort auf diese Frage lautet Nein, einzelne Porter müssen ihren Port nicht als Open Source verwenden. Die .NET MF-Kernquelle ist Open Source von Microsoft und jeder kann sie auf ein bestimmtes Ziel portieren – dies bedeutet oft auch das Hinzufügen eigener proprietärer Bibliotheken. Ein gutes Beispiel hierfür wären die Fez-Angebote von GHI im Vergleich zu Netduino von Secret Lab. Einer hat sich entschieden, seinen Port zu schließen und von der Fabrik zu laden, während der andere sich dafür entschieden hat, seinen Port zu öffnen. Es ist ein erheblicher Aufwand, .NET MF zu portieren, und einige haben sich dafür entschieden, das, was sie hinzugefügt haben, zu schützen.
@Jon - Es ist von begrenztem Support-Vorteil für das Upstream-.Net-Framework, Open Source zu sein, wenn die tatsächlichen Implementierungen, die auf einem bestimmten Board ausgeführt werden, dies nicht sind.

Ich habe ein Arduino-Board in einem Produkt verwendet (keine Massenproduktion) und ich würde es nicht noch einmal tun. Die Arduino-Boards sind auf ein sehr geschlossenes Ökosystem ausgerichtet (im Sinne des Wortes Nicht-Open-Source-Software). Wenn Sie beispielsweise aus dem Arduino-Ökosystem „aussteigen“, indem Sie einen Pin verwenden müssen, der nicht zu einem Header auf der Entwicklungsplatine geführt wird, verlieren Sie sofort alle Vorteile des Arduino. Sie müssen das Board modifizieren, um den Pin zu einem vorhandenen Header zu bringen, oder irgendwie einen neuen Header hinzufügen. Dies bedeutet wahrscheinlich, dass Sie keine vorhandenen Schilde oder möglicherweise sogar die Softwarebibliotheken für den Arduino verwenden können. Das ist der größte Vorteil des Boards. Ich musste dies mit einem Arduino Mega tun.

Außerdem sind die Platinen riesig und nicht einfach in andere Leiterplatten zu integrieren. Ich habe die Hauptplatine für meine Anwendung so gestaltet, dass sie einem Schild für den Arduino Mega entspricht, der Befestigungslöcher für das von mir gewählte Gehäuse hatte. Also habe ich einfach den Arduino Mega in die Header gesteckt, die ich auf meinem Board platziert habe. Dies war jedoch eine Menge Platz nach oben und unten, und aufgrund der Größe der Entwicklungsplatine wurde viel Platz verschwendet. Ich brauchte nicht die Hälfte von dem, was da drauf war, und es nahm nur Platz weg. Dies erforderte, dass ich eine größere Leiterplatte und ein größeres Gehäuse hatte, als ich sonst benötigt hätte. Das ist verschwendetes Geld.

Die Arduino- (und sogar armbetriebenen) Designs sind so einfach, dass Sie, wenn Sie eine für digitale Logik geeignete Leiterplatte herstellen möchten, um sie auszustatten, genauso gut auch den Prozessor einbeziehen können. Sie wären verlockender, wenn Sie überhaupt keine Leiterplatte herstellen würden oder dies einseitig oder in einer speziellen analogen oder HF-Technologie tun würden, bei der Sie keine digitalen Teile auf dieser Platine haben wollten und eine tun müssten Auch die Steuerplatine wäre teurer als der Kauf (und sogar die Überarbeitung).
Chris – auf jeden Fall. Jeder sollte wissen, dass es wenig Sinn macht, eine Arduino-Platine hinzuzufügen, wenn Sie selbst eine Platine herstellen, anstatt nur eine auf Ihrer Platine neu zu erstellen.
Wenn die Arduino-Umgebung zu einem einschränkenden Faktor wird, können Sie jederzeit jeden anderen AVR-Compiler wie GCC, BASCOM, AvrCo verwenden und Firmware produzieren, die auf demselben Arduino-Board leben wird ...

Arduinos & Co sind Prototyping- und Evaluierungsplattformen . Als solche sind sie als Grundlage selbst für relativ kleine Produktionsserien einfach nicht wirtschaftlich. Sie eignen sich hervorragend für die Ausbildung und das Verspotten von Ideen, aber ein Produkt würde sehr schnell sinken, wenn es die Kosten einer vorgefertigten Unterbaugruppe tragen müsste, die in ihrer endgültigen Verwendung nicht optimal ist.

Es wäre weitaus besser, eine neue Platine zu erstellen, die die erforderlichen Elemente des 'Duino und alle zusätzlichen Schaltkreise enthält, als die Kosten für zwei Platinen und das Risiko fehlerhafter Verbindungen zu tragen.

In Bezug auf Visual Studio und irgendetwas .net würde ich sie nicht mit jemand anderem berühren. Entscheiden Sie sich für etwas, das plattform- und herstellerunabhängig ist - im Sinne des Arduino-Projekts selbst.

Ich glaube immer noch, dass alles von den Kosten Ihres Produkts abhängt. Nehmen wir an, dass es möglich ist, mit dem *duino etwas wirklich Überzeugendes zu schaffen, und es ist ein kleiner Teil eines 1-Millionen-USD-Projekts, und Sie werden immer nur 3 davon verkaufen. Warum wäre das nicht wirtschaftlich? Möchten Sie lieber Tausende für die Entwicklung von etwas ausgeben, das zweimal verwendet wird?
In Bezug auf den .NET-Kommentar stoße ich häufig auf Leute, die Visual Studio und / oder .NET nicht verwenden möchten, nur weil. Ich persönlich verstehe es nicht. Visual Studio ist bei weitem eine der besten IDEs, die ich je verwendet habe. Ich bin zugegebenermaßen gegenüber Microsoft-Tools voreingenommen, weil sie mich meine Arbeit schnell erledigen lassen und in 99 % der Fälle einfach funktionieren. Obwohl ich wirklich lernen sollte, Entwicklungsboards mit einem ICE zu verwenden, schätze ich definitiv die Einfachheit der Verwendung einer vertrauten Umgebung, mit der ich während des Debuggens Haltepunkte setzen kann. AFAIK, das geht mit Arduino nicht.
WRT Ihr erster Kommentar, ich sagte relativ kleine Auflagen. Ich würde eine Reihe von drei großen Budgetentwicklungen als fortlaufende Prototypen sehen. Ich kann mir vorstellen, dass der Kunde das auch tun würde. In dieser Situation würde ich gerne einen Arduino verwenden.
Die MS/.net-Sache basiert auf persönlicher Erfahrung. In den letzten zwanzig oder so Jahren habe ich fast jede Plattform da draußen benutzt. Die größten Kopfschmerzen sind ausnahmslos von MS-Produkten ausgegangen. MS scheinen davon auszugehen, dass ihr Weg der einzig richtige Weg ist. Derzeit verwende ich OS X, Ubuntu und Windows 7, alle in einer Entwicklungsumgebung. Ratet mal, welches ich (überhaupt) neu starten muss?
@Dave - Sie können On-Chip-Debugging durchführen, wenn Sie JTAG-Unterstützung mit OpenOCD und GDB haben. Sie haben Recht, der Arduino unterstützt dies nicht. Sie benötigen einen Prozessor mit JTAG: Die meisten ARM-Varianten funktionieren mit OpenOCD. Das Netduino hat dies, aber das liegt daran, dass es die JTAG-Unterstützung im verwendeten ARM-Prozessor nutzt.
@reemrevnivek: Ich muss unbedingt lernen, wie man JTAG verwendet. Kennen Sie Mikros, die es mit einer relativ billigen Schnittstelle und einer einfach einzurichtenden gcc/gdb-Toolchain unterstützen? Ich weiß, dass Sie ARM erwähnt haben, aber ich weiß nicht, ob diese JTAG-Tools kostengünstig sind oder nicht. Alle Empfehlungen sind willkommen, da ich gerne mit den neuesten Optionen Schritt halten möchte.
Die auf Arduino verwendeten ATMegas unterstützen das Debuggen über Debugwire - nicht sicher, ob die Arduino-Reset-Pin-Hardware kompatibel ist, aber wenn nicht, würde es nicht viel zum Hacken brauchen, da es nur ein Pin ist. Ein weiteres potenziell wichtiges Problem bei der Verwendung von Boards anderer Leute ist, wenn Sie sich für Dinge wie EMV, FCC-Zertifizierung usw. interessieren.
@Dave - Das Debuggen von Haltepunktzielen ist kaum einzigartig in Visual Studio, es ist wirklich eine Funktion der meisten IDEs und eingebetteten Tools, sobald Sie sich von den kleinsten und ressourcenbeschränktesten Zielprozessoren entfernen, z. B. funktioniert jede Plattform, die mit gdb/gdbserver umgehen kann mit jeder IDE, die die Befehlssprache von GDB beherrscht.
@Chris Ja, das ist mir klar. Ich denke, es ist nur so, dass ich noch nie zuvor etwas so Einfaches erlebt habe. Sie müssen nur verstehen, dass mein Hintergrund nicht die Embedded-Programmierung (und das Einrichten von gcc / gdb-Toolchains) ist, und dass es mich in der Vergangenheit (z. B. unter Linux) wirklich am meisten überzeugt hat, die Embedded-Tools zu bekommen. Aber in der Welt der PC-S/W-Entwicklung wird Sie Visual Studio verwöhnen.
@Dave - bis Sie etwas tun möchten, was es nicht kann, oder auf einer Plattform laufen oder für eine Plattform entwickeln, die es nicht verarbeiten kann. Aber ich stimme zu, dass die OSS-Tools eine echte Qual sein können, um sie perfekt einzurichten.

Grundsätzlich spricht nichts dagegen, Produkte von der Stange zu verwenden. Wir alle tun dies auf einer bestimmten Ebene, ich denke, die Arduino-Hasser entwickeln keine eigenen Chips, selbst wenn dies bei einem höheren Volumen der wirtschaftlich sinnvoll wäre.

Es läuft immer auf Kosten, Zeitplan und Qualität (und vielleicht auch auf die langfristige Verfügbarkeit) hinaus. Wenn ein Arduino diese Kriterien besser erfüllt als ein benutzerdefiniertes Board, ist die Wahl ein Kinderspiel.

Der schwierige Teil besteht darin, die richtigen Zahlen zu erhalten, insbesondere für Ihr Volumen. Aber wenn Sie die richtigen Zahlen und ein wenig Mathematik verwenden, erhalten Sie das Break-Even-Volumen für die Wahl zwischen der Verwendung von, sagen wir, dem Arduino oder einem benutzerdefinierten Board. Wenn das weit über Ihren Erwartungen liegt oder weit darunter liegt, ist die Wahl einfach. Vergessen Sie also alle Ratschläge, die entweder "auf jeden Fall ein Arduino verwenden" oder "immer ein benutzerdefiniertes Board verwenden" sagen. Beide sind an eine Denkweise gebunden, die zu einer bestimmten Lautstärke gehört. Führen Sie Ihre eigenen Berechnungen durch.

Beachten Sie, dass ich keine spezifischen Kenntnisse des Arduino habe. Ob es beispielsweise Ihren Qualitätsanforderungen entspricht, müssen Sie selbst entscheiden.

Maßgeschneiderte Boards sind schön, wenn Sie ein Budget dafür haben und die Produktion groß genug ist, um die Arbeit zu rechtfertigen. Ansonsten bleiben Sie bei Produkten aus dem Regal wie Arduino, Netduino, Fez Domino und SBC - Boards (wie in PC104 und verschiedenen ITX-Formaten). Das Erstellen eines benutzerdefinierten AVR / Arduino-Boards ist nicht zu komplex, aber umfangreiche Änderungen an Netduino oder sogar das Entwerfen (und spätere Unterstützen) eines Linux-Boards (wie Gumstix) erfordern einen oder mehrere Spezialisten und kosten Zehntausende von Dollar und mehr. Wenn Sie den Großteil der harten Arbeit von jemand anderem erledigen lassen und nur einige Teile davon anpassen möchten, dann ist Modul das Zauberwort für Sie.

Da stimme ich dir definitiv zu, aber irgendwann brauchst du doch noch eine Platine. Ich habe genug Geschick, um eine für *duino und andere zu bauen, um eine einfache Platine zum Ausbrechen von Signalen und Strom zu erstellen, also ist das zumindest immer noch ziemlich billig.
Es ist billig, wenn Sie nicht Tausende benötigen, und wenn Sie mehr Leistung benötigen, sind Module wie das von obigem Link auch nett. Beachten Sie, dass Sie sich wahrscheinlich mit Brownout-Erkennung, Stromstörungen beim Schreiben auf EEPROM, zuverlässiger Stromversorgung und vielen anderen Dingen befassen müssen, die von Ihrer spezifischen Anwendung abhängen.