Arduino MKR Zero

In diesem Beitrag möchte ich dir den Arduino MKR Zero vorstellen und zeigen, wie du diesen Mikrocontroller programmieren kannst.

Der Arduino MKR Zero ist der günstigste Mikrocontroller aus der Reihe der Arduino MKRs. Ein wichtiges Merkmal von diesem ist, dass der Mikrocontroller nicht über eine WiFi-Schnittstelle verfügt.

Bezug des Arduino MKR Zero

Den mir vorliegenden Mikrocontroller habe ich im offiziellen Shop von Arduino.cc für knapp 27 € zzgl. 6 € Versandkosten aus Italien per UPS erworben. Obwohl dieses Paket einmal quer durch Europa musste, hat die Lieferung nur 3 Tage gedauert.

Lieferumfang

Zum Lieferumfang gehörte neben dem Mikrocontroller, noch ein paar kleine Aufkleber und ein gefalteter Garantiezettel.

Technische Daten des Arduino MKR Zero

Auf dem Mikrocontroller ist ein Atmel ATSAMD21 verbaut, welcher nachfolgende technische Daten hat.

MikrocontrollerSAMD21 Cortex®-M0+ 32bit low power ARM MCU
USB AnschlussMicro-USB (USB-B)
Betriebsspannung5 V bis 5.5 V
Spannung an GPIOs3.3 V
max. Stromstärke an GPIOs7 mA
LiPo Batterie3.7 V, min. 700 mAh, JST PH Anschluss
Taktgeschwindigkeit48 MHz
Speicher256 KB Flash,
32 KB SRAM
PWM Pins13 (0-8, 10,12, A3, A4)
externe Interrupts10 (0, 1, 4-9, A1, A2)
SchnittstellenUART, I²C, SPI
Abmaße (L x B x H)61,5 mm x 25 mm x 21 mm
Gewicht32 g
Technische Daten des Arduino MKR Zero

Features

Der Mikrocontroller verfügt zusätzlich über:

  • einen SD-Kartenslot für Speicherkarten bis 16 GB,
  • einen JST PH Anschluss für LiPo 3.7 V LiPo Batterien,
  • eine LED für den Zustand ob der LiPo akku geladen wird,
  • einen separaten I²C Anschluss,
  • eine RTC mit 32.768 kHz,
  • eine Built-in LED

Aufbau & Pinout

Wie bei den Mikrocontrollern der originalen Arduino Familie üblich, sind auf den Buchsenleisten die Pins beschriftet, dieses macht die Arbeit mit diesen deutlich besser.

Auf der Seite Arduino MKR ZERO (I2S bus & SD for sound, music & digital audio data) im offiziellen Shop, findest du den schematischen Aufbau, sowie das Pinout.

Programmieren

Der Mikrocontroller lässt sich in der Arduino IDE sowie über Arduino CLI sowie über den Arduino Web Editor programmieren.

Für die Einrichtung des Web Editors benötigst du ein zusätzliches Plugin, welches derzeit nur unter Google Chrome läuft.

Verbinden des Mikrocontrollers mit dem PC

Der Mikrocontroller wird über ein Micro-USB Datenkabel mit dem PC verbunden. Beim erstmaligen Anschluss wird dieser zunächst eingerichtet. Hier erhält man zwei Benachrichtigungen vom Windows System, einmal das der Mikrocontroller erkannt wurde und etwas später, wenn dieser fertig eingerichtet ist.

Im Geräte-Manager unter Windows 10 wird dieser einfach nur als „Serielles USB-Gerät“ angezeigt.

Arduino MKR Zero im Gerätemanager von Windows 10
Arduino MKR Zero im Gerätemanager von Windows 10

Programmieren über die Arduino IDE

Wenn du meinen Blog bereits länger verfolgst, dann wirst du bereits gesehen haben, dass ich in den meisten Projekten die Arduino IDE verwende. Diese Anwendung hat den großen Vorteil, dass sehr viele Mikrocontroller unterstützt werden und wenn man Bibliotheken einbinden möchte oder muss dieses in wenigen Sekunden erledigt ist.

Im Fall des Arduino MKR Zero wird dieser in der Arduino IDE 2.0 korrekt am COM34 erkannt.

Arduino MKR Zero in der Arduino IDE 2.0

Beispiel mit der RealTimeClock

Hier nun ein Beispiel mit der internen RTC des Mikrocontrollers.

Das boolsche Feld „setTime“ wird beim ersten Upload auf true gesetzt, damit werden die Werte für das Datum & die Uhrzeit geschrieben. Wenn dieses erfolgt ist, dann wird beim zweiten Schreiben des Codes auf den Mikrocontroller wird diese Variable auf false gesetzt.

#include <RTCZero.h>

//Objekt initialisieren
RTCZero rtc;

//Felder zum setzen der Uhrzeit
const byte seconds = 0;
const byte minutes = 42;
const byte hours = 19;

//Felder zum setzen des Datums
const byte day = 9;
const byte month = 2;
const byte year = 23;

bool setTime = false;

void setup() {
  Serial.begin(9600);

  //initialisieren der RTC
  rtc.begin();

  if (setTime) {
    // setzen der Uhrzeit
    rtc.setHours(hours);
    rtc.setMinutes(minutes);
    rtc.setSeconds(seconds);

    // setzen des Datums
    rtc.setDay(day);
    rtc.setMonth(month);
    rtc.setYear(year);
  }
}

void loop() {
  //lesen des Tages von der RTC
  print2digits(rtc.getDay());
  Serial.print(".");
  //lesen des Monats von der RTC
  print2digits(rtc.getMonth());
  Serial.print(".");
  //lesen des Jahres von der RTC
  print2digits(rtc.getYear());
  Serial.print(" ");
  //lesen der Stunde von der RTC
  print2digits(rtc.getHours());
  Serial.print(":");
  //lesen der Minuten von der RTC
  print2digits(rtc.getMinutes());
  Serial.print(":");
  //lesen der Sekunden von der RTC
  print2digits(rtc.getSeconds());
  //eine Pause von 500 ms.
  delay(500);
  //ein Zeilenumbruch vor der nächsten Ausgabe
  Serial.println();
}

//schreib eine zweistellige Zahl auf
//der seriellen Schnittstelle
void print2digits(int number) {
  if (number < 10) {
    Serial.print(0);
  }
  Serial.print(number);
}

Wenn der obige Code auf den Mikrocontroller überspielt wurde, dann wird auf der seriellen Schnittstelle das Datum inkl. Uhrzeit ausgegeben.

Ausblick

Der Mikrocontroller wird auf der Shopseite mit dem Text „for sound, music & digital audio data“ beworben, dieses möchte ich als nächstes nun testen und das Projekt aufbauen.

Ein Kommentar

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert