10 Dinge, die Sie vor dem Start eines Arduino-Projekts wissen müssen

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

Sie haben gesehen, was andere mit Arduino-Platinen machen. Es sieht aus, als sei es ein Vergnügen, und Sie können es nun selbst ausprobieren. Sie haben eine Arduino-Platine, Jumper, ein Netzteil, ein paar LEDs und einen umfangreichen Zubehörsatz gekauft. Damit dies alles wirklich zu einem Vergnügen wird, folgen nun einige Dinge, die Ihnen dabei Zeitverlust und Frustrationen ersparen.

Einer dieser Tipps verhindert vielleicht, dass Sie aufgeben und das ganze neue Zeug verärgert in den Mülleimer werfen.

1: Arduinos bieten sich zum Experimentieren und Lernen an

Sie eignen sich hervorragend für kleine, spezielle Aufgaben. Arduinos sind eine Art experimentierfreundliche Version des Inhalts eines Rauchmelders. Die Aufgabenliste für den Mikrocontroller ist bei dieser Art von Anwendung relativ kurz. Ihr Thermostat muss nicht so leistungsfähig sein, dass darauf Linux läuft oder damit umfangreiche Berechnungen durchgeführt werden können. Wenn Sie beabsichtigen, Code zu schreiben, der unter einem Betriebssystem ausgeführt werden soll, sollten Sie vielleicht Einplatinencomputer wie den Raspberry Pi oder den BeagleBone Black in Erwägung ziehen.

Wer mobile Anwendungen und Anwendungen für das Internet der Dinge (Internet of things, IoT) plant, sollte wissen, dass alle Arduino-Platinen portabel eingesetzt werden können, aber manche Platinen aufgrund ihrer geringen Abmessungen und ihrer geringen Leistungsaufnahme dafür besser geeignet sind. Trinket, Gemma und Arduino Mini von Adafruit sind für derartige Projekte hervorragend geeignet.

2: Schreiben Sie ein „Sketch“

Zur Programmierung für Arduino-Platinen gehört das Verfassen eines „Sketch in der Arduino-Entwicklungsumgebung und das Hochladen auf die Platine (Abbildung 1). Diese Sketche werden in C geschrieben und haben daher identische Kontrollstrukturen. Keine Angst, wenn Sie mit dem bisher Gesagten nichts anfangen können. Es sind gute Neuigkeiten. Es bedeutet, dass Ihnen das Verfassen von Sketchen leicht fallen wird, wenn Sie etwas C oder C++ können. Umgekehrt bedeutet es, dass Sie die Grundlagen von C erlernen, wenn Sie das Verfassen von Sketchen lernen. Es ist in jedem Fall ein Gewinn für Sie.

Screenshot der Arduino-Entwicklungsumgebung

Abbildung 1: Arduino zu programmieren bedeutet, Sketche in C zu schreiben. Ein Screenshot der Entwicklungsumgebung. (Quelle: DigiKey)

Eine Anmerkung zur Arduino-Entwicklungsumgebung: Sie umfasst keinen Debugger. Wenn Sie daran gewöhnt sind, Code mit in Entwicklungsumgebungen wie Eclipse oder MPLAB integrierten Debuggern zu korrigieren, dann müssen Sie es klug anstellen. Sie müssen primitivere Methoden zur Fehlersuche einsetzen: z. B. eine Codezeile einfügen, die einen Text ausgibt, oder eine LED aktivieren, wenn ein bestimmter Codeabschnitt erreicht wurde. Das Fehlen eines Debuggers ist sicher vorteilhaft zur Entwicklung Ihrer Fähigkeiten zur Problemlösung.

3: Verwenden Sie Marken-Module und -Zubehör

Sie haben den Arduino wahrscheinlich deswegen angeschafft, weil Sie ein Projekt im Sinn hatten oder weil Sie mehr über Elektronik wissen wollten. Das Lernen ist sehr viel schwieriger, wenn Sie Lernhilfen mit unzureichender Dokumentation und schlechtem Support verwenden. Sie sollten sich auf die Lektionen und Konzepte und nicht auf die Fehlersuche bei der Hardware konzentrieren.

Die Fehlersuche ist übrigens ein wichtiger und unvermeidbarer Teil der Aufgabe, und Sie sollten nicht bereits mit einem Handicap beginnen.

Sparkfun, Adafruit und Seeed Studio sind hervorragende Lieferanten für Module (Shields) und Zubehör. Diese Leute stellen nicht nur großartige Produkte her. Ein Teil ihrer Stärke ist auch ihre Beliebtheit. Wenn Sie an einer Stelle Schwierigkeiten haben, ist es sehr wahrscheinlich, dass ein anderer bereits dasselbe Problem hatte, es gelöst und die Lösung in einem Forum veröffentlicht hat. Nutzen Sie dies.

4: Notieren Sie Ihre Vorgehensweise beim Lernen und Entwickeln

Dies ist besonders wichtig, wenn Sie mit verschiedenen Entwicklungsstufen desselben Programms experimentieren. Es ist sehr leicht, die Übersicht darüber zu verlieren, welche Version was und warum getan hat. Sie glauben vielleicht, dass Sie diese Versionsnotizen nicht benötigen, aber ich versichere Ihnen, dass Sie sie brauchen werden. Die Anzahl der Änderungen und Entwicklungsstufen bei nur einem Wochenende Arbeit an einem Projekt kann in die Hunderte gehen.

Ich habe einen ausgeprägten CAD-Hintergrund, daher zeichne ich meine Schaltpläne mit DraftSight. Eine andere Möglichkeit ist Scheme-it® von DigiKey (Abbildung 2). Ich verwende DraftSight aus Gewohnheit, aber ein spezielles Tool wie Scheme-it ist viel besser geeignet und ich bin dabei, zu Scheme-it zu wechseln.

Scheme-it hat den Vorteil, dass es mit dem riesigen Bestand von DigiKey-Komponenten verknüpft ist. Es verfügt außerdem über viele Möglichkeiten, Notizen einzufügen. Sie können Notizen auf dem Hauptblatt anlegen oder sie bestimmten Komponenten zuordnen. Das Programm arbeitet darüber hinaus in der Cloud, d. h. Ihre Daten werden gesichert und stehen Ihnen an jedem Ort mit Internetverbindung zur Verfügung- Sie können auch Notizen und Zeichnungen in einem Notizbuch anlegen. Ich ziehe es allerdings vor, alle wichtigen Informationen elektronisch bereitzuhalten.

Bild einer einfachen Arduino-Schaltung in DigiKey Scheme-it

Abbildung 2: Eine einfache Schaltung, gezeichnet mit Digi-Keys Scheme-it. (Quelle: DigiKey)

5: Gehen Sie es ruhig an

Sie müssen zuerst individuelle Techniken und Konzepte beherrschen. Beginnen Sie mit dem Blinken einer LED im Beispiel „Blink“ aus der Arduino-IDE. Lassen Sie dann eine LED blinken, die mit einem Ausgang verdrahtet ist. Schreiben Sie dann ein Sketch, in dem Sie mehrere LEDs gleichzeitig blinken lassen. Lassen Sie dann eine LED auf Tastendruck blinken. Schreiben Sie dann ein Sketch, das die analoge Ausgabe eines Potenziometers ausliest und damit die Blinkgeschwindigkeit einer LED steuert.

Jedes Projekt, das Sie in Angriff nehmen, kann in kleinere Aufgaben zerlegt werden. Für einen temperaturgesteuerten Schalter können Sie z. B. kleine Aufgaben wie das Entprellen eines Tastendrucks, die Ausgabe auf einem LCD-Display, das Auslesen eines Temperatursensors und das Blinken einer LED zusammensetzen.

Jedes Konzept, das Sie erlernen, stellt einen Baustein dar und Ihr Projekt ist eine Mauer, die sich aus diesen Steinen zusammensetzt.

Eine letzte Anmerkung: Bevor Sie über triviale blinkende LEDs die Nase rümpfen, möchte ich Ihnen etwas verraten. Ich habe über 10 Jahre als Elektroingenieur gearbeitet und das Erste, was ich normalerweise mit einer unbekannten Platine oder einem neuen Mikrocontoller mache, ist: Ich lasse ein paar LEDs blinken. Diese blinkenden Lichter sagen mir, dass ich den Chip zumindest teilweise richtig initialisiert habe und dass ich bereits teilweise die Kontrolle über die Hardware übernommen habe.

6: Beachten Sie die maximale Taktfrequenz

Der Arduino UNO hat eine interne Taktfrequenz von 16 MHz. Das sind 16 Millionen Taktzyklen pro Sekunde. Dies hört sich nach viel an, aber bedenken Sie: Jede Anweisung oder Überprüfung im Sketch verbraucht Taktzyklen. Je mehr Taktzyklen Ihr Sketch ausführen muss, desto schneller ist der anscheinend endlose Überfluss von Taktzyklen erschöpft und überraschenderweise verpasst der Arduino dann Eingangssignale und ist bei Ausgangsimpulsen am Limit, ehe Sie sich versehen. Er hat buchstäblich nicht genug Zeit, alles das zu tun, was Sie von ihm erwarten.

Bei Grundaufgaben ist dies selten ein Problem, aber sobald der Umfang Ihres Projekts zunimmt, könnte so etwas auf Sie zukommen. Die Obergrenze der Taktfrequenz macht sich bemerkbar, sobald Sie versuchen, Schrittmotoren zu steuern oder die Encoder-Rückmeldungen von Servomotoren zu verarbeiten.

Wenn Sie befürchten, dass die Taktzyklen knapp werden, könnten Sie sich für einen Arduino Zero mit 48 MHz entscheiden.

Das Auslagern der Verarbeitung in ein Modul (Shield) ist eine weitere Möglichkeit, das Problem anzugehen. Trinamic Motion Control hat genau für diesen Zweck ein tolles Modul zur Steuerung von Schrittmotoren, das TOS-100 V1.1.

7: Machen Sie sich mit den Arduino-Bibliotheken vertraut.

Was wäre, wenn nun große Teile des von Ihnen benötigten Codes bereits geschrieben wurden und verfügbar sind? Könnte dies die Fertigstellung Ihres Projekts nicht beschleunigen? Nun, dieser Code ist da und wartet nur darauf, dass Sie ihn sich holen und in Ihr Sketch einfügen. Diese Codesammlungen heißen „Bibliotheken“.

Eine vollständige Erklärung von Bibliotheken würden den Rahmen eines Artikels über schelle Tipps sprengen, aber es besteht eine Analogie, die das Verständnis des Konzepts erleichtert. Eine Bibliothek ist eine Art Werkzeugkasten für eine bestimmte Gruppe von Aufgaben. Sie müssen nur die Werkzeugkästen mit den für Ihr Projekt benötigten Werkzeugen in das Programm aufnehmen.

Die Arduino-Entwicklungsumgebung enthält z. B. die Bibliothek „Wire“ (Abbildung 3). „Wire“ ist ein Werkzeugkasten mit Werkzeugen für die serielle I2C-Kommunikation. Die Werkzeuge aus „Wire“ automatisieren die meisten mit der I2C-Kommunikation zusammenhängenden Aufgaben. Sie könnten Code schreiben, mit dem Sie dies alles selbst machen – als Lernerfahrung ist dies sicher die Mühe wert –, aber Sie müssen es nicht tun, wenn Sie lernen, die Bibliotheken effizient zu nutzen.

Bild der in ein Sketch aufgenommenen Bibliothek „Wire“

Abbildung 3: In ein Sketch aufgenommene Bibliothek „Wire“ (Quelle: DigiKey)

8: Erlernen Sie die Verwendung der grundlegenden Anschlüsse und seien Sie vorsichtig mit paralleler Kommunikation

Beschäftigen Sie sich mit der parallelen und insbesondere mit der seriellen Kommunikation. Informieren Sie sich über die Bedeutung des Akronyms UART (dies ist für einen Mikrocontroller eine Art universelles serielles Telefon). Informieren Sie sich über SPI (Serial Peripheral Interface) und I2C, ausgesprochen „eye-squared-see“, auf Deutsch „I-quadrat-C“. Atmel, das die wichtigen Chips der meisten Arduino-Platinen herstellt, stellt sehr hilfreiche Anwendungshinweise zu den Themen SPI- und I2C-Kommunikation zur Verfügung. Die meisten Sensoren und Zubehörteile, die Sie einsetzen werden, kommunizieren über eine serielle SPI- oder I2C-Verbindung mit Ihrem Arduino. Kenntnisse über diese Kommunikationstechniken erleichtern die Verwendung dieser Zusatzkomponenten erheblich.

Vermeiden Sie bei Projekten Zusatzkomponenten, die eine parallele Kommunikation erfordern, z. B. Displays. Parallele COM-Ports benötigen erheblich mehr Pins als serielle COM-Ports. Sie werden feststellen, dass Ihr Arduino dafür nicht einmal genug Pins hat, und wenn dies der Fall ist, könnte es sein, dass Sie dafür so viele Pins benötigen, dass keine Pins für andere Zwecke übrig bleiben. Wenn Sie nur lernen möchten, wie ein LCD-Display über Parallelkommunikation gesteuert wird, tun Sie es, aber Bauteile wie diese sind normalerweise zu E/A-lastig für Projekte, die mehrere Komponenten umfassen.

9: Vergessen Sie nicht die Grenzen des Arbeitsspeichers

Viele Anfänger beginnen mit einer einfachen Platine wie UNO oder Trinket. Irgendwann füllen Sie dann den Arbeitsspeicher und das RAM ist voll. Das Erreichen dieser Grenzen ist wichtig. Die Feststellung mag albern klingen, aber lassen Sie mich erklären.

Sowohl Neulinge als auch erfahrene Programmierer neigen dazu, unorganisierten und wuchernden Code zu schreiben, der mehr Ressourcen als nötig verbraucht. Fast immer besteht die Möglichkeit, den Code zu straffen. Das Ziel ist, den Code so kompakt wie möglich zu machen und aus den vorhandenen Ressourcen das Optimum herauszuholen. Warum sollten Sie sich um Beschränkungen kümmern, bevor Sie an eine Grenze stoßen? Erst dann, wenn Sie an eine Speichergrenze stoßen, müssen Sie sich etwas einfallen lassen. Sie werden gezwungen, Ihre bisherige Arbeit zu überdenken und nach Verbesserungen zu suchen. Wenn Sie einfach zu einer Platine mit mehr Arbeitsspeicher wechseln, enthalten Sie sich diese Erfahrung vor.

Es kann sein, dass Sie am Ende eine Platine mit mehr RAM verwenden müssen, aber überstürzen Sie es nicht.

Hier ein kleiner Tipp für den Anfang: Wenn Sie feststellen, dass das RAM knapp wird, versuchen Sie den folgenden Trick zum Lesen von Textstrings direkt aus dem Speicher des Programms anstatt aus dem RAM:

Serial.println(F(„Ihr Text“,));

Das Makro „F“, das hier in Klammern steht, verhindert, dass der Text beim Start des Programms ins RAM geladen wird. Der String wird dann bei Bedarf direkt aus dem Flash-Speicher gelesen.

10: Manche Arduino-Platinen verfügen über kein natives USB

Ich weiß, dass dies auf den ersten Blick keinen Sinn ergibt. Sie werden sagen, dass Sie Ihren Arduino, der über eine USB-Buchse verfügt, programmieren, indem Sie ihn in den USB-Anschluss Ihres Computers einstecken. Das ist richtig, aber bei einigen Arduino-Platinen finden hinter den Kulissen einige clevere Softwarekunststücke statt. Platinen wie Adafruit Trinket verfügen über einen vorinstallierten Bootlader, mit dessen Hilfe der Mikrocontroller zum Laden von Sketchen als USB-Komponente fungiert. Hier handelt es sich um ein schönes Beispiel für Ad-hoc-Programmierung.

Die meisten Mikrocontroller beherrschen von Haus aus keine USB-Kommunikation. Es gibt zwei gängige Möglichkeiten, dies zu umgehen, und eine ungebräuchliche Möglichkeit, die beim Trinket verwendet wird. Die gebräuchlichste Abhilfe besteht darin, auf die Platine einen Chip für USB-Kommunikation zu setzen. Dieser Chip konvertiert außerdem Daten von der USB-Verbindung in eine Form, die vom UART des Haupt-Mikrocontrollers verstanden wird. Die andere übliche Methode besteht darin, ein zusätzliches Stück Hardware zu verwenden, das auf den Mikrocontroller gesteckt wird, wenn dieser über USB kommunizieren muss.

Ich beziehe mich bei diesem Tipp aufgrund eines Zwischenfalls bei meiner Arbeit speziell auf den Trinket: Es wurden einige Trinkets als Schnittstelle zwischen einem PC, auf dem LabVIEW läuft, und einer experimentellen Steuerungskomponente bestellt. Als die Trinkets ankamen, stellten wir fest, dass sie keine On-Board-Hardware zur USB-Steuerung hatten.

Das Problem wurde schnell gelöst. Wir bestellten einfach ein paar Arduino UNOs. Diese verfügen auf der Platine über einen dedizierten ATmega-Chip für die USB-Kommunikation. Das ist nur ein kleines Problem, das vermeidbar gewesen wäre, wenn ich diesen Tipp vor der Bestellung der Hardware gelesen hätte.

Kurz: Wenn Sie über den USB-Anschluss Ihres Arduino eine Verbindung mit einem Computer, einer Kamera oder einem USB-Laufwerk herstellen möchten, achten Sie darauf, eine Platine zu kaufen, die über einen eingebauten USB-Controller verfügt. Sie können USB auch mit einem USB-Host-Modul nachrüsten.

Fazit

Arduino hat bewiesen, dass es eine großartige Lernumgebung für jeden – vom Anfänger bis zum Ingenieur – ist, der ein elektronisches System programmieren und implementieren möchte. Es macht Spaß und es ist nützlich, und mit den richtigen Vorinformationen und der richtigen Vorgehensweise kann das Lernen sehr angenehm machen. Und denken Sie immer an Tipp 5: „Gehen Sie es ruhig an“.

 
DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey