Ich verstehe Arduino: Was nun?

18

Okay, ich habe mit Arduino genug rumgespielt, dass ich mich ziemlich wohl dabei fühle. Alles, was jetzt getan wird, ist mehr das Erlernen der Elektronik als die Arduino-Seite.

Was ist der nächste Schritt für mein Lernen? Arduino ist ein kombinierter Programmierer / Controller. Vermutlich muss ich diese Verbindung trennen und anfangen, mit einem Controller-Chip zu arbeiten, der vom Controller getrennt ist. Kann mich jemand in die richtige Richtung weisen?

Chris B. Behrens
quelle
Haben Sie ein bestimmtes Ziel oder Projekt vor Augen?
Genau. Für mich dreht sich alles darum, bestimmte Dinge zu erledigen. Arduino ist nur ein Werkzeug wie alles andere.
Dirk
Woran ich gerade arbeite, ist ein Multiplex-LED-Array. In Arduino nicht so schwer, aber ich möchte die Stützräder loswerden. Ich meine, letztendlich gibt es einen ATmega168-Chip auf dem Arduino-Board. Wenn ich herausfinden könnte, wie ich direkt damit arbeiten soll, würde das meiner Meinung nach das befriedigen, was ich erreichen möchte.
Chris B. Behrens
Mit dem Arduino kommst du direkt zum Chip. Es sind nicht so viele Treiber oder ähnliches an den Stiften befestigt. Die Header gehen direkt dorthin. Vielleicht ein Breadboarduino?
AngryEE
@angryee - Ich denke, Chris bedeutet, den ATmega-Chip direkt zu programmieren, ohne die Arduino IDE + -Bibliotheken, die als Trainingsräder angesehen werden könnten.
J. Polfer

Antworten:

12

Ich stimme Joby zu - Arduino ist großartig, aber ich fühle mich immer erstickt von den Rahmenbedingungen, mit denen sie mich umgeben. Ich würde fortfahren, direktes C auf Ihrem Arduino zu verwenden und einen Großteil der Bibliotheksfunktionalität zu erstellen, die sie von Grund auf bereitgestellt haben. Im Allgemeinen bevorzuge ich die Tiefe vor der Breite. Beginnen Sie nicht einfach mit einer anderen Mikrocontroller-Familie, indem Sie mehr bereitgestellte Frameworks verwenden. Erfahren Sie mehr darüber, wie Sie einige dieser Funktionen selbst implementieren.

Beginnen Sie mit einem Arbeitsprogramm und ersetzen Sie die Arduino-Bibliotheksaufrufe nacheinander durch Ihre eigenen Versionen. Sie werden eine Menge über die Steuerregister, das Timing, die Bitoperationen usw. lernen, wenn Sie dies nicht bereits getan haben. Lesen Sie das ATMega328-Datenblatt ausführlich durch - alles, was Sie brauchen, finden Sie dort.

Probieren Sie eine andere IDE wie AVR Studio oder Code :: Blocks aus. Lernen Sie die GCC-Toolchain. Probieren Sie fortgeschrittenere Codierungstechniken aus - Komponententests, Abdeckung, Profilerstellung, Flusen- / Schienenprüfung. Legen Sie ein RTOS auf den Arduino.

Ein kombinierter Programmierer / Controller ist kein Zeichen von Schwäche - es ist nur eine Design-Wahl. Die einzige "Schwäche", die daraus entstehen könnte, ist das Fehlen von In-Circuit-Debugging. Kaufen Sie einen AVR-Drachen und Sie werden ihn für 50 US-Dollar bekommen.

AngryEE
quelle
9

Ich denke, was als nächstes zu lernen ist, hängt davon ab, was Sie tun möchten, was der Arduino nicht kann. Das heißt, ich kann nicht viel Sinn darin sehen, einen ähnlichen Chip zu programmieren, um die gleichen Dinge zu tun, aber mit schwierigeren Mitteln.

Hier sind einige Arduino-Schwächen:

  • Threading bedeutet, dass zwei Codeabschnitte so verschachtelt ausgeführt werden, dass sie zur gleichen Zeit ausgeführt werden
  • Internet-Inhalte mit mittlerer oder hoher Bandbreite, z. B. Audio-Streaming
  • Ernsthafte Berechnungen oder Aufgaben, die eine schnelle Berechnung erfordern, um schnell reagieren zu können
  • Alles, was durch das Vorhandensein eines Dateisystems einfacher wird, z. B. das Datalogging oder der Umgang mit Bildern

Ich kann mir zwei Richtungen vorstellen:

  1. Leistungsstärkere Embedded-Boards mit kleinen Betriebssystemen wie Beagleboard oder Gumstix
  2. Mit Hardware-Interrupts mehr Leistung aus kleinen Atmega-Chips herausholen.

Ich kann ausführlicher darauf eingehen, wenn Sie sich dazu äußern, welche Richtung ansprechender ist. (Der zweite ist definitiv billiger.)

pingswept
quelle
Es ist lustig ... einen ähnlichen Chip zu programmieren, um die gleichen Dinge zu tun, aber mit schwierigeren Mitteln ist genau das, was ich vorhabe :). Ein kleiner Hintergrund - ich bin ein Software-Architekt mit langjähriger Erfahrung. Die Software, die Berechnung, das Dateisystem ... das ist alles ganz einfach für mich. Was ich wirklich brauche, um mich anzustoßen, ist die Elektronik. Der Grund, warum ich mich über Arduino hinausbewegen möchte, ist einfach, dass ich in der Lage sein möchte, Geräte für einen einzigen Zweck zu produzieren, die nicht den physischen (und preislichen) Overhead einer Arduino-Platine haben. Ich denke, von dem, was Sie gesagt haben, ist # 2 das, wonach ich suche.
Chris B. Behrens
Wow ... dieser Kommentar klang wirklich egoistisch. Ich habe es nicht so gemeint ... jedenfalls habe ich nur gemeint, dass ich die Hardware-Trainingsräder loswerden möchte, die Arduino mir gibt. Insbesondere arbeite ich an einem LED-Array, das dem LOLShield ähnelt, obwohl ich denke, dass ich es stattdessen multiplexen werde. Ich kann es mit Arduino tun, aber ohne es brauche ich eine Richtung. TIA.
Chris B. Behrens
Ah, mehr elektronische Dinge als Software. Vielleicht haben Sie ein paar nette Erfahrungen mit der Sensoranbindung / Datenerfassung. Es ist nicht glamourös, aber um die Sensoren an Ihr Board anzuschließen, müssen Sie noch ein paar Dinge über Hardware lernen. Der Arduino hat nicht wirklich so viele Hardware-Trainingsräder - schon gar nicht so viele wie Software. Vielleicht ein Roboter, der verschiedene Arten von Sensoren enthält - Ultraschall, IR-Abstand, Drehgeber usw. Sicherlich nur mit dem Arduino und viel mehr Hardware möglich.
AngryEE
7

Lernen Sie I2C, SPI, 1wire und versuchen Sie, Sensoren mit solchen Schnittstellen zu verbinden. Lesen Sie viele Datenblätter solcher Sensoren und versuchen Sie, alles in ihnen zu verstehen. Stellen Sie Fragen, wenn Sie nicht weiterkommen. Lernen Sie MODBUS (RTU / ASCII / TCP) oder ein ähnliches Protokoll kennen, das Ihr Gerät für die Welt öffnen kann, sobald Sie es in das Gerät einbetten. Lernen Sie die allgemeine Elektronik und versuchen Sie, Relais, Triacs, Pull-Up- und Pull-Down-Funktionen, Sourcing- und Sink-Funktionen, das Zeichnen von Schaltplänen und das Anschließen grundlegender Treiber an Ihre MCU miteinander zu verbinden.

avra
quelle
6

Zunächst möchten Sie möglicherweise von Arduino als Plattform zu AVR als Plattform wechseln. Das heißt, Sie lernen, wie Sie anstelle des Arduino einen neuen AVR-Mikrocontroller für Ihre Projekte programmieren / verwenden. Auf diese Weise müssen Sie nicht für jedes Projekt, das Sie durchführen, oder für Projekte mit Freunden ein anderes Arduino-Board kaufen. Dies ist ein ziemlich einfacher Schritt (ein Arduino ist nur ein herkömmlicher Atmel AVR-Mikrocontroller, aber mit einem speziellen Board und einem Bootloader), aber ein großer Schritt, um Projekte an Freunde zu verkaufen / weiterzugeben. Die Toolchain ist ähnlich: Sie verwenden avr-gcc oder avr-g ++ mit make in Verbindung mit einem Programmierdienstprogramm, um Ihr Programm zu installieren.

J. Polfer
quelle
Es ist ziemlich einfach, den Bootloader auf einen Chip zu laden und ein eigenes Board zu verlöten, wenn Sie ein Projekt verschenken möchten. Oder bestellen Sie ein RBBB-Kit für 12,50 USD ( goo.gl/0yqr ), ohne dass Sie für jedes Arduino-Projekt ein Board für mehr als 30 USD kaufen müssen.
Davorak