Kategorien: Ausgewählte Artikel » Praktische Elektronik
Anzahl der Ansichten: 67360
Kommentare zum Artikel: 7

Anschließen und Programmieren von Arduino für Anfänger

 

Scheint das Studium von Mikrocontrollern kompliziert und unverständlich? Vor dem Erscheinen von Arudino war es wirklich nicht einfach und erforderte eine bestimmte Gruppe von Programmierern und anderen Geräten.


Was ist ein Arduino?

Dies ist eine Art elektronischer Konstruktor. Das ursprüngliche Ziel des Projekts ist es, den Menschen das einfache Programmieren elektronischer Geräte zu ermöglichen und gleichzeitig nur minimale Zeit für den elektronischen Teil aufzuwenden.

Die Montage der kompliziertesten Schaltkreise und der Anschluss der Platinen kann ohne Lötkolben und mit Hilfe von Steckbrücken mit abnehmbaren Verbindungen „Vater“ und „Mutter“ erfolgen. Auf diese Weise können sowohl Anhänge als auch Erweiterungskarten verbunden werden, die im Lexikon der Arduinisten einfach als „Schilde“ bezeichnet werden.

Was ist Arduino?

Was ist das erste Arduino-Board, das für einen Neuling gekauft wird?

Die Basis und beliebteste Tafel wird berücksichtigt Arduino uno. Diese Gebühr ähnelt einer Kreditkarte. Ziemlich groß. Die meisten Schilde, die zum Verkauf stehen, sind perfekt für sie. Auf der Platine befinden sich Buchsen zum Anschließen externer Geräte.

Arduino uno

In inländischen Geschäften für 2017 liegt der Preis bei etwa 4-5 Dollar. Bei modernen Modellen ist Atmega328 ihr Herz.

Arduino uno

Bild- und Funktionsdecodierung der Arduino-Platine für jeden Pin, Arduino UNO-Pinbelegung

Der Mikrocontroller auf dieser Platine ist ein langer Chip im DIP28-Gehäuse, der anzeigt, dass er 28 Beine hat.

Das nächstbeliebteste Board kostet fast doppelt so viel wie das vorherige - 2-3 Dollar. Das ist das Board Arduino Nano. Tatsächliche Boards werden von demselben Atmega328 gebaut, sie ähneln funktionell UNO, es gibt Größenunterschiede und eine passende Lösung mit USB, dazu später mehr. Ein weiterer Unterschied besteht darin, dass ein Stecker in Form von Nadeln zum Anschließen von Geräten an die Leiterplatte vorgesehen ist.

Arduino Nano

Die Anzahl der Stifte (Beine) dieser Platine ist gleich, aber Sie können beobachten, dass der Mikrocontroller in einem kompakteren TQFP32-Gehäuse hergestellt ist. ADC6 und ADC7 werden in dem Fall hinzugefügt, die anderen beiden „zusätzlichen“ Beine duplizieren den Leistungsbus. Die Abmessungen sind recht kompakt - ungefähr so ​​groß wie ein Daumen Ihrer Hand.

Aruino Nano Pinbelegung 

Das drittbeliebteste Board ist Arduino Pro MiniDa es keinen USB-Anschluss für den Anschluss an einen Computer gibt, werde ich Ihnen später erläutern, wie Sie kommunizieren können.

Arduino Nano vs Pro Mini Größenvergleich

Arduino Nano vs Pro Mini Größenvergleich

Dies ist das kleinste Motherboard aller in Betracht gezogenen Modelle, ansonsten ähnelt es den beiden vorherigen und Atmega328 ist immer noch sein Herz. Wir werden andere Boards nicht berücksichtigen, da dies ein Artikel für Anfänger ist und der Vergleich von Boards das Thema eines separaten Artikels ist.

Arduino Pro Mini PinbelegungIm oberen Teil ist das USB-UART-Anschlussdiagramm, Pin „GRN“, mit der Rücksetzschaltung des Mikrocontrollers verbunden. Es kann auch anders aufgerufen werden, was Sie später herausfinden müssen.

Zusammenfassung:

Wenn UNO für das Prototyping geeignet ist, sind Nano und Pro Mini für die endgültigen Versionen Ihres Projekts geeignet, da sie wenig Platz beanspruchen.

Arduino für Anfänger

Wie verbinde ich Arduino mit einem Computer?

Arduino Uno und Nano verbinden sich über USB mit einem Computer. Gleichzeitig gibt es keine Hardware-Unterstützung für den USB-Anschluss. Hier wird eine Schaltungslösung für die Pegelkonvertierung verwendet, die üblicherweise als USB-zu-Seriell oder USB-UART (rs-232) bezeichnet wird. Gleichzeitig wird ein spezieller Arduino-Bootloader in den Mikrocontroller geflasht, der das Flashen auf diesen Bussen ermöglicht.

In Arduino Uno ist diese Ligatur auf einem Mikrocontroller mit USB-Unterstützung implementiert - ATmega16U2 (AT16U2). Es stellt sich heraus, dass der zusätzliche Mikrocontroller auf der Platine zum Flashen des Hauptmikrocontrollers benötigt wird.

In Arduino Nano wird dies vom FT232R-Chip oder seinem analogen CH340 implementiert. Dies ist kein Mikrocontroller - es ist ein Pegelwandler. Diese Tatsache macht es einfach, den Arduino Nano von Grund auf mit Ihren eigenen Händen zusammenzubauen.

In der Regel werden Treiber automatisch installiert, wenn die Arduino-Karte angeschlossen wird. Als ich jedoch eine chinesische Kopie des Arduino Nano kaufte, wurde das Gerät erkannt, aber es funktionierte nicht. Ein runder Aufkleber mit Daten zum Veröffentlichungsdatum wurde auf den Konverter geklebt. Ich weiß nicht, ob dies absichtlich gemacht wurde, aber nach dem Abziehen sah ich die Markierung CH340.

Zuvor war ich nicht darauf gestoßen und dachte, dass alle USB-UART-Konverter auf FT232 montiert waren. Ich musste Treiber herunterladen. Sie sind auf Anfrage des „Arduino ch340-Treibers“ sehr leicht zu finden. Nach einer einfachen Installation hat es funktioniert!

Über denselben USB-Anschluss kann der Mikrocontroller auch mit Strom versorgt werden, d. H. Wenn Sie es von einem Mobiltelefon aus an den Adapter anschließen, funktioniert Ihr System.


Was soll ich tun, wenn mein Board keinen USB hat?

Der Arduino Pro Mini ist kleiner. Dies wurde erreicht, indem der USB-Anschluss für die Firmware und derselbe USB-UART-Konverter entfernt wurden. Daher muss es separat erworben werden. Der einfachste Konverter für CH340 (der billigste), CPL2102 und FT232R, zum Verkauf kostet ab 1 USD.

Achten Sie beim Kauf darauf, für welche Spannung dieser Adapter ausgelegt ist. Pro mini ist in den Versionen 3.3 und 5 V erhältlich. An den Wandlern befindet sich häufig eine Brücke, um die Versorgungsspannung umzuschalten.

Arduino Pro Mini

Wenn Sie den Pro Mini kurz vor dem Start flashen, müssen Sie auf RESET klicken. Bei Konvertern mit DTR müssen Sie dies jedoch nicht tun, wie in der folgenden Abbildung dargestellt.

Anschlussplan für Firmware

Zu ihnen gesellen sich spezielle Terminals "Mama-Mama" (weiblich-weiblich).

Arduino-Verbindung

Tatsächlich können alle Verbindungen mit solchen Klemmen (Dupont) hergestellt werden. Beide befinden sich auf zwei Seiten mit Buchsen und Steckern und auf der einen Seite mit einer Buchse und auf der anderen Seite mit einem Stecker.

Stecker

Wie schreibe ich Programme für Arduino?

Um mit Skizzen arbeiten zu können (der Name der Firmware ist in der Sprache des Arduino), gibt es eine spezielle integrierte Umgebung für die Entwicklung der Arduino-IDE. Sie können sie kostenlos von der offiziellen Website oder von einer beliebigen thematischen Ressource herunterladen. Normalerweise gibt es keine Probleme bei der Installation.

Programm für Arduino

So sieht die Programmoberfläche aus. Sie können Programme in der vereinfachten C AVR-Sprache schreiben, die speziell für Arduino entwickelt wurde. Tatsächlich handelt es sich um eine Reihe von Bibliotheken namens Wiring sowie in reinem C AVR. Die Verwendung erleichtert den Code und beschleunigt seine Arbeit.

Oben im Fenster befindet sich ein bekanntes Menü, in dem Sie die Datei und die Einstellungen öffnen, das Board auswählen können, mit dem Sie arbeiten (Uno, Nano und viele, viele andere) und Projekte mit vorgefertigten Codebeispielen öffnen können. Unten finden Sie eine Reihe von Schaltflächen zum Arbeiten mit Firmware. Die Tasten sehen Sie in der folgenden Abbildung.

Programmschnittstelle

Am unteren Rand des Fensters befindet sich ein Bereich, in dem Informationen zum Projekt, zum Status des Codes, zur Firmware und zum Vorhandensein von Fehlern angezeigt werden.


Grundlagen der Arduino IDE-Programmierung

Zu Beginn des Codes müssen Sie Variablen deklarieren und zusätzliche Bibliotheken verbinden. Wenn diese vorhanden sind, gehen Sie wie folgt vor:

#include biblioteka.h; // verbinde die Bibliothek mit dem Namen "Biblioteka.h"

#define peremennaya 1234; // Deklariere eine Variable mit einem Wert von 1234

Mit dem Befehl Definieren kann der Compiler den Typ der Variablen auswählen. Sie können ihn jedoch manuell festlegen, z. B. eine Ganzzahl int oder einen Gleitkomma-Gleitkommawert.

int led = 13; // die Variable "led" erstellt und ihr den Wert "13" zugewiesen

Das Programm kann den Zustand des Pins als 1 oder 0 bestimmen. 1 ist eine logische Einheit. Wenn Pin 13 1 ist, entspricht die Spannung an seinem physischen Zweig der Versorgungsspannung des Mikrocontrollers (für Arduino UNO und Nano - 5 V).

Das digitale Signal wird mit dem Befehl digitalWrite (Pin, Wert) aufgezeichnet, zum Beispiel:

digitalWrite (LED, hoch); // schreibe das Gerät auf Pin 13 (wir haben es oben angekündigt) log. Einheiten.

Wie Sie verstehen können, erfolgt der Zugriff auf die Ports durch Nummerierung auf der Karte, entsprechende Abbildung. Hier ist ein Beispiel ähnlich dem vorherigen Code:

digitalWrite (13, hoch); // Pin 13 auf eins setzen

Oft wird die gesuchte Zeitverzögerungsfunktion durch den Befehl delay () aufgerufen, dessen Wert in Millisekunden eingestellt wird, wobei Mikrosekunden mit erreicht werden

delayMicroseconds () Verzögerung (1000); // Mikrocontroller wartet 1000 ms (1 Sekunde)

Die Porteinstellungen für Ein- und Ausgabe werden in der Funktion void setup {} mit dem folgenden Befehl festgelegt:

void setup () {

pinMode (NOMERPORTA, OUTPUT / INPUT); // Argumente - Variablenname oder Portnummer, Eingabe oder Ausgabe zur Auswahl

}

Leere Schleife {}


Das erste Blink-Programm verstehen

Als eine Art „Hallo Welt“ für Mikrocontroller gibt es ein LED-Blinkprogramm. Lassen Sie uns den Code analysieren:

Am Anfang haben wir mit dem Befehl pinMode den Mikrocontroller angewiesen, dem Ausgang einen Port mit einer LED zuzuweisen.Sie haben bereits bemerkt, dass der Code die Variable „LED_BUILTIN“ nicht deklariert. Tatsache ist, dass bei Uno, Nano und anderen werkseitigen Karten die eingebaute LED an Pin 13 angeschlossen und mit der Karte verlötet ist. Es kann von Ihnen zur Anzeige in Ihren Projekten oder zur einfachsten Überprüfung Ihrer Flash-Programme verwendet werden.

Als nächstes setzen wir den Ausgang, an den die LED gelötet ist, auf Eins (5 V), die nächste Zeile lässt den MK 1 Sekunde warten und setzt dann den LED_BUILTIN-Pin auf Null, wartet eine Sekunde und das Programm wiederholt sich in einem Kreis, also wenn LED_BUILTIN 1 ist - die LED ( und jede andere an den Port angeschlossene Last wird eingeschaltet, wenn sie bei 0 ausgeschaltet ist.

Funktioniert alles und alles ist klar? Dann mach weiter!



Wir lesen den Wert vom analogen Port und verwenden die gelesenen Daten

Der Atmega328 AVR-Mikrocontroller verfügt über einen eingebauten 10-Bit-Analog-Digital-Wandler. Mit dem 10-Bit-ADC können Sie den Spannungswert von 0 bis 5 Volt in Schritten von 1/1024 des gesamten Amplitudenbereichs des Signals (5 V) ablesen.

Um es klarer zu machen, betrachten Sie die Situation, nehmen Sie an, dass der Spannungswert am Analogeingang 2,5 V beträgt, dann liest der Mikrocontroller den Wert von Pin "512", wenn die Spannung 0 - "0" ist und wenn 5 V - (1023). 1023 - weil die Zählung von 0 geht, d.h. 0, 1, 2, 3 usw. bis zu 1023 - insgesamt 1024 Werte.

So sieht es im Code am Beispiel der Standardskizze „analogInput“ aus

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

void setup () {

pinMode (ledPin, OUTPUT);

}

void loop () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

Verzögerung (sensorValue);

digitalWrite (ledPin, LOW);

Verzögerung (sensorValue);

}

Das Anschlussschema des Potentiometers an Arduino, analog den zentralen Ausgang, den Sie an jeden analogen Eingang anschließen können

Das Anschlussschema des Potentiometers an Arduino, analog den zentralen Ausgang, den Sie an jeden analogen Eingang anschließen können.

Variablen deklarieren:

  • Ledpin - Weisen Sie dem Ausgang unabhängig einen Pin mit integrierter LED zu und geben Sie ihm einen individuellen Namen.

  • sensorPin - Analogeingang, eingestellt gemäß der Markierung auf der Platine: A0, A1, A2 usw.;

  • sensorValue - eine Variable zum Speichern eines ganzzahligen Lesewerts und zum weiteren Arbeiten damit.

Der Code funktioniert folgendermaßen: sensorValue speichert den mit sensorPin gelesenen Analogwert (Befehl analogRead). - hier endet die Arbeit mit dem analogen Signal, dann ist alles wie im vorherigen Beispiel.

Wir schreiben die Einheit in ledPin, die LED leuchtet auf und warten auf eine Zeit, die dem Wert von sensorValue entspricht, d. H. von 0 bis 1023 Millisekunden. Schalten Sie die LED aus und warten Sie erneut für diesen Zeitraum. Danach wiederholt sich der Code.

Durch die Position des Potentiometers stellen wir also die Blinkfrequenz der LED ein.


Kartenfunktion für Arudino

Nicht alle Funktionen für Aktuatoren (ich kenne keine) unterstützen "1023" als Argument. Beispielsweise ist der Servoantrieb durch den Drehwinkel begrenzt, dh durch eine halbe Umdrehung (180 Grad) (halbe Umdrehung) des Servomotors ist das maximale Argument der Funktion "180".

Nun zur Syntax: map (der Wert, den wir übersetzen, ist die minimale Eingabe, die maximale Eingabe, die minimale Ausgabe, die maximale Ausgabe).

Im Code sieht es so aus:

(map (analogRead (pot), 0, 1023, 0, 180));

Wir lesen den Wert vom Potentiometer (analogRead (pot)) von 0 bis 1023 ab und erhalten am Ausgang Zahlen von 0 bis 180

Wertezuordnungswerte:

  • 0=0;

  • 1023=180;

In der Praxis wenden wir dies auf die Arbeit desselben Servocodes an. Sehen Sie sich den Code mit der Arduino-IDE an. Wenn Sie die vorherigen Abschnitte sorgfältig gelesen haben, ist keine Erklärung erforderlich.

Und das Anschlussdiagramm.

Schaltplan

Schlussfolgerungen Arduino ist ein sehr praktisches Werkzeug, um zu lernen, wie man mit Mikrocontrollern arbeitet. Wenn Sie reines C AVR verwenden oder es manchmal als "Pure C" bezeichnet wird, reduzieren Sie das Codegewicht erheblich und passen mehr in den Speicher des Mikrocontrollers. Dadurch erhalten Sie eine hervorragende werkseitig hergestellte Debugging-Karte mit USB-Firmware.

Arduino für Anfänger

Meinung des Autors:

Ich mag Arduino. Es ist schade, dass viele erfahrene Mikrocontroller-Programmierer es unangemessen kritisieren, dass es zu vereinfacht ist. Im Prinzip wird nur die Sprache vereinfacht, aber niemand zwingt Sie dazu, sie zu verwenden. Außerdem können Sie den Mikrocontroller über den ICSP-Anschluss flashen und den gewünschten Code eingeben, ohne dass Sie keine Bootloader benötigen.

Für diejenigen, die als fortgeschrittener Konstrukteur mit Elektronik spielen möchten, ist es perfekt, aber für erfahrene Programmierer ist auch ein Board nützlich, das keine Montage erfordert!

Weitere Informationen über Arduino und die Funktionen seiner Verwendung in verschiedenen Schemata finden Sie im E-Book -Arduino für Dummies. Illustrierte praktische Anleitung.

Siehe auch auf i.electricianexp.com:

  • Methoden zum Lesen und Verwalten von Arduino-E / A-Ports
  • Welches Arduino Board soll man wählen?
  • Arten und Anordnung von AVR-Mikrocontrollern
  • Mikrocontroller-Fernbedienung: IR-Fernbedienung, Arduino, ESP8266, 433 ...
  • Analoge Sensoren an Arduino anschließen, Sensoren lesen

  •  
     
    Kommentare:

    # 1 schrieb: Electromag | [Zitat]

     
     

    Welche Literatur zum Studium des Programmcodes empfehlen Sie?

     
    Kommentare:

    # 2 schrieb: Andrey | [Zitat]

     
     

    ElectromagUlli Sommer. Arduino / Freeduino Microcontroller Board Programming von Jeremy Bloom. Wir studieren Arduino. Werkzeuge und Techniken für technische Magie, John Boxell. Wir studieren Arduino. 65 Heimwerkerprojekte. Bücher über Arduino auf Ozon: i.electricianexp.com/arduino_books.php

     
    Kommentare:

    # 3 schrieb: Victor | [Zitat]

     
     

    Sehr interessantes und aufregendes Material, danke!

     
    Kommentare:

    # 4 schrieb: Ural | [Zitat]

     
     

    Vielen Dank für die Informationen, die "Karten" -Funktion war sehr praktisch. Ich fragte mich, wie ich mich fortbewegen sollte, als ich gerade anfing, Spielzeug auf Arduino zu lernen.

     
    Kommentare:

    # 5 schrieb: Dima | [Zitat]

     
     

    Etwas, das ich für Arduino-Shields zum Teilen auf mil-std-1553b nicht finde, obwohl für Comp-Busse - Heaps, eine sehr beliebte Schnittstelle. Stöbern Sie dort, wo Sie suchen und kaufen können.

    p.s. Das Datum des Artikels wird nicht angezeigt. Vielleicht ist sie 10 Jahre alt und sollte noch keine Kommentare schreiben.

     
    Kommentare:

    # 6 schrieb: Eremino | [Zitat]

     
     

    So erstellen Sie einen Eingangssignal-Repeater auf Arduino für 4 oder eine beliebige Anzahl von Ausgängen.

    Ähnliches gilt für 4 Eingangskanäle bis 16 Ausgangskanäle. In diesem Fall müssen Sie den Eingang auf jedem Eingangskanal gleichzeitig auf 4 beliebige Ausgänge schalten.

     
    Kommentare:

    # 7 schrieb: Oleg | [Zitat]

     
     

    Leute, sagt mir, wo hast du das Programmieren gelernt? Ich habe viele Informationen überprüft und niemand hat klar geschrieben. Hier sind alle Informationen nicht für Anfänger, wirklich viel ist nicht klar, Untertreibungen. Es wurden viele Wörter geschrieben, über die es keine Wörter gibt. Der Autor schreibt beispielsweise zu Beginn, dass Sie die Bibliothek deklarieren und #include biblioteka.h eingeben müssen. // aber über dieses Wort hat er nichts geschrieben #einschließen, warum es möglich ist, das alles zu verstehen. Mir fehlt bereits die Geduld, niemand kann es auf normale Weise erklären und erklären, was hier passieren würde, ist es notwendig, dies zu schreiben. Nun, natürlich ist es Null, aber ich versuche zu lesen, ich sehe nichts Unverständliches, viel Überflüssiges, das nicht erklärt. Und ich kann sagen, dass ich kein dummer Dummkopf bin, ich kann fast jede Elektronik reparieren, das heißt, ich bin mit meinem Kopf befreundet, aber ich verstehe es nicht, weil sie diejenigen schreiben, die es wissen, aber sie haben die Nuancen vergessen, als sie sich selbst damit beschäftigten.