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.
Mikrocontroller | SAMD21 Cortex®-M0+ 32bit low power ARM MCU |
USB Anschluss | Micro-USB (USB-B) |
Betriebsspannung | 5 V bis 5.5 V |
Spannung an GPIOs | 3.3 V |
max. Stromstärke an GPIOs | 7 mA |
LiPo Batterie | 3.7 V, min. 700 mAh, JST PH Anschluss |
Taktgeschwindigkeit | 48 MHz |
Speicher | 256 KB Flash, 32 KB SRAM |
PWM Pins | 13 (0-8, 10,12, A3, A4) |
externe Interrupts | 10 (0, 1, 4-9, A1, A2) |
Schnittstellen | UART, I²C, SPI |
Abmaße (L x B x H) | 61,5 mm x 25 mm x 21 mm |
Gewicht | 32 g |
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.
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.
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.