Arduino Uno R3

Der Arduino Uno R3 ist ein Open-Source Microcontroller aus der Arduino Familie.Er ist zwar kein Produkt der Raspberry Pi Foundation wie der Pico, aber es schadet nie, breiter aufgestellt zu sein, denn nicht jeder MCU ist für jeden Zweck gleich gut geeignet.

Die Arduino Plattform

Arduino ist nicht nur ein MCU sondern eine Plattform, die inzwischen ein ganzes Bündel an Boards hervorgebracht hat.Alles ist unter Open-Source Lizenz freigegeben, so dass es viele Clones des Referenz Designs gibt, ich benutze einen R3 von AZ-Delivery, bei dem der ATmega Prozessor nicht im DIL-Gehäuse gesockelt sondern als SMD Baustein verlötet ist. Dadurch ist die Platine etwas kleiner.

Arduino Uno R3

Die Platine des Arduino Uno R3 misst 68,6mm * 53,4mm . Die Stromversorgung wird durch einen Hohlstecker sichergestellt. Dort muss eine Spannung zwischen 7 bis 12V anliegen. Alternativ kann der MCU auch über die USB-B Buchse angetrieben werden, dann hat er allerdings weniger „Saft“ als spezifiziert. Während der Entwicklung ist dies aber die beste Möglichkeit. Mit insgesamt 20 GPIO Pins (analog und digital), ist er sehr gut für den Anschluss von Sensoren und Aktoren ausgestattet. Jeder Pin liefert max. 20mA Strom.

Ich finde es sehr praktisch, dass die Header nicht als Stiftleiste sondern als Buchsen ausgelegt sind, dadurch muss man den MCU nicht zwangsweise auf ein Breadboard stecken. Bei dem Format wäre das auch nicht möglich.

Shields

Wie beim Raspberry Pi gibt es Erweiterungsplatinen, die du auf den R3 stecken kannst, die heißen be Arduino Shields im Gegensatz zu HAT beim Raspi Ich weiß nicht, warum jeder Hersteller neue Namen für sowas erfindet.

Es gibt Shields, die den MCU um eine Ethernet Schnittstelle erweitern, Experimentier-Shields mit verschiedenen Bauelementen oder Prototype-Shields mit Minibreadboard bis hin zu Shields mit Motortreibern, die eine komplettes CNC Fräse steuern können.

Arduino Uno R3 Pinout (CC-BY-SA Bruni /Arduino.cc)
Arduino Uno R3 Pinout (CC-BY-SA Bouni /Arduino.cc)
Stromversorgung7-12V
Betriebsspannung5V
CPUATmega328P / ATmega16U2 für USB
Speicher2 KB SRAM / 32 KB Flash / 1KB EEPROM
Takt16 MHz
GPIO6 Analog / 14 Digital
I²C1
PWM6x
USB1.1 (USB-B)
SPI1
UARTJa
BesonderheitenReset-Button

Arduino IDE

Für den Arduino gibt es ein dediziertes Integrated Desktop Environment (IDE), die dir die Programmierung erleichtert. Diese kannst du kostenfrei herunterladen.

Programmiert wird der Arduino üblicherweise in C / C++. Es aber wohl auch möglich, den MCU auf MicroPython umzuflashen. Darauf gehe ich vielleicht in einem anderen Beitrag noch ein. Auf dem Uno ist bereits von Werk ein Sketch aufgeflasht, der die Onboard LED zum Blinken bringt, damit weißt du sofort nach Herstellen der Stromversorgung, dass der MCU funktioniert.

Rechtsstreit

2015 entbrannte ein Rechtsstreit um die Marke Arduino, aufgrund dessen auch Boards unter dem Namen Genuino auf den Markt kamen, die aber völlig identisch zu den Arduino Boards sind.

Ampelschaltung

Ampel am AZ-Delivery Uno
Ampel am AZ-Delivery Uno

Von Waveshare gibt es komplett vorgefertigtes Breakoutboard mit drei LED und den dazugehörigen Widerständen zu kaufen. Dieses Modul kostet aktuell lediglich 3,29€. Damit möchte ich, auch bei weiteren MCU die Programmierung testen. Das Board wird einfach in Längsrichtung mit seinen vier Pins auf das Breakoutboard gesteckt und mit vier Jumperkabeln mit dem Uno verbunden. Beim Arduino Uno R3 schließe ich die vier Pins wie folgt an

  • GND auf GND
  • Rot an Pin 10
  • Gelb an Pin 11
  • und Grün an Pin 12.

Das Sketch (so heißen Programme bei Arduino), um eine Ampelschaltung zu simulieren sieht so aus:

int ledRot = 10;
int ledGelb = 11;
int ledGruen = 12;
boolean blinkmode = false;
int phase = 1;// Ampelphase

void setup() {
  // put your setup code here, to run once:
    pinMode(ledRot, OUTPUT);
   pinMode(ledGelb, OUTPUT);
    pinMode(ledGruen, OUTPUT);
}

void loop() {

  // put your main code here, to run repeatedly:
  if(blinkmode) {
    // Blinkmodus
  digitalWrite(ledRot, HIGH);
  digitalWrite(ledGelb, HIGH);
  digitalWrite(ledGruen, HIGH);
  delay(1500);              
  digitalWrite(ledRot, LOW);
  digitalWrite(ledGelb, LOW);
  digitalWrite(ledGruen, LOW);
  delay(200);
  }
  else {
    // Ampelmodus
    printf("Phase: %d", phase);
    switch(phase) {
      case 1:  // Phase rot
        digitalWrite(ledRot, HIGH);
        digitalWrite(ledGelb, LOW);
        digitalWrite(ledGruen, LOW);
        delay(1500);
        phase = 2;
        break;
      case 2: // Phase Rot/Gelb
        digitalWrite(ledRot, HIGH);
        digitalWrite(ledGelb, HIGH);
        digitalWrite(ledGruen, LOW);
        delay(1000);
        phase = 3;
        break;
      case 3:  // Phase Grün
        digitalWrite(ledRot, LOW);
        digitalWrite(ledGelb, LOW);
        digitalWrite(ledGruen, HIGH);
        delay(2000);
        phase = 4;
        break;
      case 4:  // Phase Gelb
        digitalWrite(ledRot, LOW);
        digitalWrite(ledGelb, HIGH);
        digitalWrite(ledGruen, LOW);
        delay(1500);
        phase = 1;
        break;
    }
  }
}

Das Sketch hat zwei Betriebszustände, wenn blinkmode true ist, blinken alle LED zeitgleich. Damit teste ich die korrekte Verkabelung. Bei false simuliert das Sketch die Zustände einer 4-Phasen Verkehrsampel. Den Code findest du auch im GIT Repository

Fazit

Im Arduino Uno R3 MCU steckt eine Menge Potential für kreative Bastler und liegt durch seinen Formfaktor gut in der Hand. Die Durchgänge Beschriftung aller Anschlüsse macht den Schaltungsaufbau sehr einfach und vermeidet Fehler.

Als Fan des Open-Source Gedanken, begeistert mich die freie Verfügbarkeit aller Ressourcen (Schaltpläne und Platinenlayout inbegriffen). Dadurch existieren viele Klone, was sich im Preis und der Verfügbarkeit bemerkbar macht.

Schreibe einen Kommentar

Cookie Consent Banner von Real Cookie Banner