Arduino Zero: Was ist das, wofür wird es verwendet und in welchen Entwicklungsprojekten kann es eingesetzt werden?

Letzte Aktualisierung: 15/09/2022
Arduino Zero: Was es ist, wofür es verwendet wird und in welchen Entwicklungsprojekten es eingesetzt werden kann.

Das Arduino ZERO Board Es ist für diejenigen Benutzer konzipiert, die Sie führen Projekte durch, die sie nicht unterstützen können. der klassische Arduino UNODies liegt an der Verarbeitungskapazität des Mikrocontrollers, des Flash-Speichers und des CPU-Takts.

Daher ist es wichtig, dass Sie wissen, was Arduino ZERO-Platinen sind und wofür diese Platinen in der Elektronik eingesetzt werden. Diese Informationen finden Sie in den Abschnitten dieses Artikels.

Außerdem zeigen wir es Ihnen Die wichtigsten Merkmale des Boards und die Kriterien, die Sie bei der Arbeit mit Arduino ZERO berücksichtigen solltenSchau dir dieses leistungsstarke Motherboard an.

Was sind Arduino Zero Boards und wofür werden diese Entwicklungsboards in der Elektronik eingesetzt?

Der Teller Arduino ZERO Es handelt sich um ein Gerät mit einem elektronischen Bus, der Folgendes umfasst: 32-Bit-Kern ATMEL Cortex-M0 SAMD21 Mikrocontroller. Es zeichnet sich dadurch aus, dass es a Programm-Debuggingoder zum Debuggen, sodass der Benutzer keine externe Hardware benötigt.

Es verfügt über die gesamte notwendige Technologie, um Ich arbeite an Projekten im Bereich Internet der Dinge.Es muss klargestellt werden, dass seine Leistung etwas geringer ist als die anderer Boards, da Die unterstützte Spannung beträgt 3.3 V.Alle Pins, außer Pin 4, Sie arbeiten auch unter externen Störungen. vom Typ 0 und 1. Andererseits ist der Gleichstrom, sowohl Eingangs- als auch Ausgangsstrom, 7 mA und die CPU-Taktfrequenz erreicht 48 MHz.

Merkmale: Was sind die Hauptmerkmale dieses Arduino-Boards?

Merkmale: Was sind die Hauptmerkmale dieses Arduino-Boards?

Die wichtigsten Merkmale dieses Arduino-Boards sind: 

  • Es eignet sich ideal für die Arbeit in Robotik, in der Automatisierung und in Technologieprojekten.
  • Es hat eine eingebetteter Wäscher das mit der Hardware verbunden ist MCU wodurch Sie die Programmierung der SAMD21 über eine Schnittstelle SWD. Dies ermöglicht auch den vollständigen Zugriff auf den Mikrocontroller und die Möglichkeit, mit Programmcodes zu arbeiten, um diese zu modifizieren.
  • Das externe Netzteil, das Arduino ZERO hat Die Stromversorgung erfolgt über einen Pluspol in der Mitte oder über die GND- und VIN-Pins des 2,1-mm-Steckers. Daher ist kein USB-Anschluss zur Stromversorgung der Platine vorhanden.
  • Die PWM sind 3, 4, 5, 6, 8, 9, 10, 11, 12 und 13während der analoge Eingänge sind in A0 bis A5Die Ausgangsspannung liegt am DAC an, Kanal A0.
  • Das SPI befindet sich in SS, MOSI, MISO und SCK des Tellers.
  • Er besitzt eine funktionierende Uhr. 48MHz, So können Sie Echtzeit und Kalender berücksichtigen.

Was sollte ich bei der Arbeit mit Arduino ZERO-Boards beachten?

Was sollte ich bei der Arbeit mit Arduino ZERO-Boards beachten?

Das Erste, was Sie wissen sollten, ist, dass das Board Arduino ZERO arbeitet mit einer Spannung von 3.3 V.Es ist etwas niedriger als bei anderen Motherboards. Daher müssen Sie diese Einschränkung berücksichtigen, da Sie sonst den Mikroprozessor und andere Komponenten beschädigen könnten. wenn Sie arbeiten in der IDE. und Sie öffnen den MonitorDie Mikrocontroller und die Sketch-Ausführung werden nicht neu gestartet, daher müssen Sie den Prozess über eine Schaltfläche im Software-Dashboard neu starten. Arduinos.

Die Stromversorgung erfolgt nicht über einen USB-Eingang.Dies könnte das Projekt verkomplizieren, wenn Sie den 2,1-mm-Stecker für eine andere Schaltungsverbindung verwenden möchten. Abschließend Sie müssen vorsichtig sein, wie viele Prozesse Sie dem Projekt zuordnen.Es stimmt zwar, dass dieses Motherboard in puncto Leistung weitaus überlegen ist, Arduino UNO Und wenn Sie über einen leistungsstarken Mikrocontroller, guten Speicher und einen 48-MHz-Takt verfügen, sollten Sie stets darauf achten, welche Last Sie ihm zuweisen.

Liste der besten Projekte, die Sie mit Arduino Zero-Boards umsetzen können.

Entdecken Sie die besten Projekte, die Sie mit einem Arduino ZERO Board durchführen können:

NeoPixel-Display, gesteuert über WLAN

NeoPixel-Display, gesteuert über WLAN

Mit diesem Projekt können Sie einen Bildschirm erstellen NeoPixel verwaltet von WiFi. Du wirst einen brauchen. Arduino ZERO-BoardSie benötigen eine NeoPixel-Ringleuchte, mehrere LEDs, ein Steckbrett, einen 1000-µF-Kondensator, einen 475-Ohm-Widerstand und Drähte für die Verbindungen. Sie müssen die Leuchte selbst zusammenbauen. gemäß den Beschreibungen und Spezifikationen der Teile Und unter Berücksichtigung der Pins auf dem Board, in Übereinstimmung mit allem, was wir in diesem Beitrag besprochen haben.

Sobald die Baugruppe fertig ist, müssen Sie folgenden Code eingeben:

#enthalten #enthalten #define PIN 12 #define NUMPIXELS 10 #define interval 50 #define wifiRetryTimes 0 Adafruit_NeoPixel pixels = Adafruit_NeoPixel ( NUMPIXELS , PIN , NEO_GRB + NEO_KHZ800 ); uint32_t red = pixels . Farbe ( 255 , 0 , 0 ); uint32_t blau = Pixel . Farbe ( 0 , 0 , 255 ); uint32_t grün = Pixel . Farbe(0, 255, 0); uint32_t Pixelfarbe; uint32_t letzteFarbe; float aktiveFarbe[] = {255, 0, 0}; IP-Adresse apIP(192, 168, 0, 150); IP-Adresse netMsk(255, 255, 255, 0); IP-Adresse gw(192, 168, 0, 1); DNS-IP-Adresse(192, 168, 0, 1); string IP; char APssid[] = "MKR1000"; char APpass[] = "MKR1000"; char ssid[] = "IhreSSID"; char pass[] = "IhrPasswort"; int keyIndex = 0 ; int status = WL_IDLE_STATUS ; WiFiServer Server ( 80 ); const char html1 [] PROGMEM = "<! DOCTYPE html>  Neopixel Farbauswahl </title> "" <style type='text/css'>. bt {display: block; width: 250px; height: 100px; padding: 10px; margin: 10px; text-align: center; border-radius: 5px; colour: white; font-weight: bold; font-size: 40px; text-decoration: none;} body {background: #000;} " ".red {background: red; color: white;}. grün {Hintergrund: # 0C0; Farbe: weiß;}. blau {Hintergrund: blau; Farbe: weiß;}" ".weiß {Hintergrund: weiß; Farbe: schwarz; Rahmen: 1px durchgezogen schwarz;}. off {background: # 666; color: white;}. Farbauswahl {Hintergrund: weiß; Farbe: schwarz;}. colorWipe {font-size: 40px; background: linear-gradient(right, red, #0C0, blue);} " ".theatreChase {font-size: 40px; background: linear-gradient(right, red, black, red, black, #0C0, black, #0C0, black, blue, black, blue);}" ".rainbow {font-size: 40px; background: red; background: linear-gradient(right, red, orange, yellow, green, blue, indigo, violet, red, orange, yellow, green, blue, indigo, violet) );} " ".rainbowCycle {font-size: 40px; background: red; background: linear-gradient(right, red, orange, yellow, green, blue, indigo, violet);}" ".rainbowChase {font-size: 40px; background: red; background: linear gradient (to the right, red, black, orange, black, yellow, black, green, black, blue, black, indigo, black, violet); } " ; const char html2 [] PROGMEM = ".breathe {background: blue; color: white;}. cylon {background: red; color: black;}. Herzschlag {Hintergrund: rot; Farbe: weiß;}. WEIHNACHTEN {Schriftgröße: 40px; Hintergrund: rot; Hintergrund: linearer Farbverlauf (rechts, rot, grün, rot, grün, rot, grün, rot, grün, rot, grün, rot, grün);} " ".ALLE {Hintergrund: weiß; Farbe: blau;}. Und {background: #EE0; height: 100px; width: 100px; border radius: 50px;}. B { background: #000; height: 100px; width: 100px; border-radius: 50px;}. A {font-size: 35px;} td {vertical-align: middle;} " "td {vertical-align: middle;} " " ;

const char  html3 []  PROGMEM  =

"función ResetWebpage () {if (window.location.href! = 'http://#IPADRESSE/') {window.open('http://#IPADRESSE/', '_self', true)}};" // Ändern Sie hier den Wert für die Website in Ihre statische Website "function myFunction() {document.getElementById('brilloLevel'). einreichen();} " v = 1 '> Rot Farbtuch " Grün Theaterjagd " Blau Regenbogen " Weiß Regenbogenjagd " ; const char html4 [] PROGMEM = " Cylonenjäger Regenbogenzyklus " Atmen Herzschlag " Weihnachten ALLE Zyklen " Deaktiviert  " " ; String sendHtml3 = html3 ; String sendHtml4 = html4 ; String currentLine; boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, true}; //Aktiviert die Neopixel-Funktion (standardmäßig deaktiviert) int neopixMode = 0; long previousMillis = 0 ; long lastAllCycle = 0 ; long previousColorMillis = 0 ; int i = 0 ; int vent = 0 ; int beat = 0 ; ; uint32_t lastAllColor = 0 ; empty configuration () { pixels . start(); Pixel . setBrightness (brightness); writeLEDS ( 0 , 0 , 0 ); Serial. begin ( 9600 ); Serial . println ( ssid ); if ( WiFi . status () == WL_NO_SHIELD ) { Serial . println(F("WiFi-Shield nicht vorhanden")); while(true); } WiFi. config ( apIP ); //WiFi.config(apIP, dns, gw, netMsk); while ( status ! = WL_CONNECTED ) { for ( int x = 0 ; x <= wifiRetryTimes ; x ++ ) { Serial . print(F("Versuche, eine Verbindung zum Netzwerk mit dem Namen:"); Serial. println ( ssid ); } Serial . print(F("Konnte keine Verbindung zum WLAN herstellen")); state = WiFi. beginAP (APssid); // Erstellen eines AP - IP ist derzeit statisch auf 192.168.1.1 // state = WiFi.beginAP(APssid, APpass); delay ( 10000 ); break ; } printWifiStatus (); sendHtml3 . replace ( "#IPADDRESS" , IP ); sendHtml4 . replace("#BRIGHT", "150"); Serial. println(F("USP-Server gestartet!!") )); Server . begin(); Serial . println(F("HTTP-Server gestartet!") )); } leere Schleife () { WiFiClient Client = server . verfügbar (); falls ( Client ) { println(F("neuer Client")); aktuelleZeile = ""; solange (Client verbunden()) { falls (Client verfügbar()) { char c = Client.lesen(); Seriell. write(c); if (c == '\n') { client. println("Content type: text/html"); client. println(); client. print(F(html1)); customer . print(F(html2)); customer . print (sendHtml3); customer . print (sendHtml4); customer . println(); break; } else { // Wenn eine neue Zeile vorhanden ist, muss currentLine gelöscht werden: if (currentLine. indexOf ( "Referer" ) < 0 ) { // wird immer ausgeführt, wenn Referer nicht im Rückgabewert enthalten ist if ( currentLine . indexOf("/L00") > 0) { // wenn /L00 in der Zeichenkette vorhanden ist handle_L00(); // führe die Funktion aus } if (currentLine. indexOf ( "/L01" ) > 0 ) { handle_L01 (); } if ( currentLine . indexOf ( "/L02" ) > 0 ) { handle_L02 (); } if ( currentLine . indexOf ( "/L03" ) > 0 ) { handle_L03 (); } if ( currentLine . indexOf ( "/L04" ) > 0 ) { handle_L04 (); } if ( currentLine . indexOf ( "/L05" ) > 0 ) { handle_L05 (); } if ( currentLine . indexOf ( "/L06" ) > 0 ) { handle_L06 (); } if ( currentLine . indexOf ( "/L07" ) > 0 ) { handle_L07 (); } if ( currentLine . indexOf ( "/L08" ) > 0 ) { handle_L08 (); } if ( currentLine . indexOf ( "/L09" ) > 0 ) { handle_L09 (); } if ( currentLine . indexOf ( "/L10" ) > 0 ) { handle_L10 (); } if ( currentLine . indexOf ( "/L11" ) > 0 ) { handle_L11 (); } if ( currentLine . indexOf ( "/L12" ) > 0 ) { handle_L12 (); } if ( currentLine . indexOf ( "/L13" ) > 0 ) { handle_L13 (); } if ( currentLine . indexOf ( "/L14" ) > 0 ) { handle_L14 (); } if ( currentLine . indexOf ( "bright" ) > 0 ) { handle_bright (); } } currentLine = "" ; } } else if ( c ! = '\r' ) currentLine + = c ; } if ( currentLine . endsWith("/generate_204")) { handle_root(); } } } // schließt die Verbindung: client. stop(); Serial . println(F("Client getrennt")); } NeoPixModes(); }

Aufzeichnung der Temperaturwerte

Aufzeichnung der Temperaturwerte

Du brauchst einen Teller. Arduino MKR Zero, ein 100 nF Kondensator, ein 4.75 k Ohm Widerstand, ein Temperatur- und Feuchtigkeitssensor, eine Einsteckplatine, Kabel und eine MicroSD-Karte. Dieses Projekt dient dazu, die von Ihrem Gerät aufgezeichneten Temperatur- und Feuchtigkeitswerte zu protokollieren.

Du wirst müssen Bauen Sie den Arduino mit dem Steckbrett zusammen.Verbinden Sie als Nächstes den Temperatur- und Feuchtigkeitssensor mit dem Steckbrett. Danach müssen Sie den Stromanschluss des Sensors anschließen. Verbinden Sie den VCC-Pin und schließlich den Datenpin des Sensors mit Pin 7.Wenn Sie fertig sind, müssen Sie den Erdungsstift des Feuchtigkeits- und Temperatursensors mit dem Stift verbinden. GND vom Teller Arduinos. Als Nächstes schließen Sie den Kondensator an den/die/das an. GND und Ausdauer.

Sobald Sie fertig sind, müssen Sie diese Codes eingeben:

#enthalten #enthalten #enthalten #define DHTPIN 7 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); const int chipSelect = SS1; unsigned long previousTime; int loadDataCheck; RTCZero rtc; const byte seconds = 50; const byte minutes = 44; const bytehours = 17; const byteday = 1; const byte month = 9; const byte year = 16; void setup() { pinMode(LED_BUILTIN, OUTPUT); begin(9600); println("DataLogger Beispiel:"); if (!SD.begin(chipSelect)) { println("Karte fehlgeschlagen oder nicht vorhanden"); return; } println("Karte initialisiert."); //Wenn der DHT22-Sensor mit Strom versorgt wird, //senden Sie innerhalb einer Sekunde keine Anweisungen an den Sensor, um den instabilen Status zu überbrücken. delay(1000); println("DHT wird initialisiert"); begin(); println("RTC wird initialisiert"); begin(); setTime(hours, minutes, seconds); setDate(day, month, year); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("System bereit..."); } void loop() { unsigned long currentTime=millis(); if ((currentTime-previousTime)>5000) { digitalWrite(LED_BUILTIN, HIGH); delay(100); digitalWrite(LED_BUILTIN, LOW); previousTime=millis(); } if (loadDataCheck) logData(); } void dataCheck(){ loadDataCheck=1; } void logData(void) { float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); String dataString = ""; dataString += "Temperatur: " + String(temperature) + " C" + "\t" + "Luftfeuchtigkeit: " + String(humidity) + "%\t" + "Zeit: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // Wenn die Datei verfügbar ist, schreiben wir hinein: if (dataFile) { println(dataString); close(); // Auch auf der seriellen Schnittstelle ausgeben: println(dataString); } String getTime(void) { String returnString = ""; if (rtc.getHours() < 10) returnString += "0" + String(rtc.getHours()); else returnString += String(rtc.getHours()); returnString += ":"; if (rtc.getMinutes() < 10) returnString += "0" + String(rtc.getMinutes()); else returnString += String(rtc.getMinutes()); returnString += ":"; if (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); else returnString += String(rtc.getSeconds()); return returnString; }

Arduino Zero Roboter

Arduino Zero Roboter

Mit einem Arduino-Board kann man einen Roboter bauen.Hierfür benötigen Sie einen Adapter. Arduino MKR2UNOein Arduino MotorShield Rev3 Board, ein Gleichstrommotor, Kabel und eine Batterie 9V. Sobald Sie diese Materialien haben, müssen Sie sie zusammenbauen, indem Sie den Motor ankleben und dann die auf den Teilen angegebenen Verbindungen herstellen.

Als Nächstes müssen Sie diese Codes eingeben:

#include <SPI.h>

#include <WiFi101.h>

#include <WiFiMDNSResponder.h>

#include "arduino_secrets.h"

char ssid[] = SECRET_SSID;

char pass[] = SECRET_PASS;

int keyIndex = 0;

char mdnsName[] = "WiFiRobot";

int status = WL_IDLE_STATUS;

WiFiServer server(80);

String readString;

const int pinDirA = 12;

const int pinDirB = 0;

const int pinPwmA = 3;

const int pinPwmB = 11;

const int pinBrakeA = 9;

const int pinBrakeB = 8;

const int motorSpeed = 200;

const int stepsDelay = 500;

void setup() {

pinMode(pinDirA, OUTPUT);

pinMode(pinPwmA, OUTPUT);

pinMode(pinBrakeA, OUTPUT);

pinMode(pinDirB, OUTPUT);

pinMode(pinPwmB, OUTPUT);

pinMode(pinBrakeB, OUTPUT);

brake();

begin(9600);

if (WiFi.status() == WL_NO_SHIELD) {

println("WiFi shield not present");

// don't continue:

while (true);

}

while ( status != WL_CONNECTED) {

print("Attempting to connect to SSID: ");

println(ssid);

status = WiFi.begin(ssid, pass);

delay(10000);

}

printWiFiStatus();

begin();

if (!mdnsResponder.begin(mdnsName)) {

println("Failed to start MDNS responder!");

while (1);

}

print("Server listening at http://");

print(mdnsName);

println(".local/");

println();

}

void loop() {

poll();

WiFiClient client = server.available();

if (client) {

println("new client");

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

readString += c;

write(c);

if (c == '\n' && currentLineIsBlank) {

// send a standard http response header

println("HTTP/1.1 200 OK");

println("Content-Type: text/html");

println("Connection: close");

//client.println("Refresh: 5");

println();

println("<!DOCTYPE HTML>");

println("<head><title>WiFi Robot</title></head>");

println("<center><hr/><p> Click the Buttons to move the robot <p/><hr/></center>");

println("<center><input type=button value='GO UP' onmousedown=location.href='/?GO_UP'></center><br/>");

println("<center><left><input type=button value='GO LEFT' onmousedown=location.href='/?GO_LEFT'><input type=button value='GO RIGHT' onmousedown=location.href='/?GO_RIGHT'></center><br/>");

println("<center><input type=button value='GO DOWN' onmousedown=location.href='/?GO_DOWN'></right></center><br/><br/>");

println("<hr/>");

println("</body>");

println("</html>");

break;

}

if (c == '\n') {

currentLineIsBlank = true;

}

else if (c != '\r') {

currentLineIsBlank = false;

}

}

}

delay(1);

stop();

if (readString.indexOf("/?GO_UP") > 0) {

println();

println("UP");

println();

goUp();

}

if (readString.indexOf("/?GO_DOWN") > 0) {

println();

println("DOWN");

println();

goDown();

}

if (readString.indexOf("/?GO_LEFT") > 0) {

println();

println("LEFT");

println();

goLeft();

}

if (readString.indexOf("/?GO_RIGHT") > 0) {

println();

println("RIGHT");

println();

goRight();

}

readString = "";

println("client disconnected");

}

}

void printWiFiStatus() {

print("SSID: ");

println(WiFi.SSID());

IPAddress ip = WiFi.localIP();

print("IP Address: ");

println(ip);

long rssi = WiFi.RSSI();

print("signal strength (RSSI):");

print(rssi);

println(" dBm");

}

void goDown(void) {

motorAforward();

motorBforward();

delay(stepsDelay);

brake();

}

void goUp(void) {

motorBbackward();

motorBbackward();

delay(stepsDelay);

brake();

}

void goLeft(void) {

motorAforward();

motorBbackward();

delay(2*stepsDelay);

brake();

}

void goRight(void) {

motorBforward();

motorAbackward();

delay(2*stepsDelay);

brake();

}

void motorAforward(void) {

digitalWrite(pinDirA, HIGH);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorAbackward(void) {

digitalWrite(pinDirA, LOW);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorBforward(void) {

digitalWrite(pinDirB, HIGH);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void motorBbackward(void) {

digitalWrite(pinDirB, LOW);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void brake(void) {

digitalWrite(pinBrakeA, HIGH);

digitalWrite(pinBrakeB, HIGH);

}
E-Books von IPAP
Ebooks IPAP

🔥WERDE TEIL DER NEUEN IP@P-COMMUNITY! MELDE DICH HIER AN!

Themen

Autor: Félix Albornoz

Ich verfüge über mehr als 20 Jahre Berufserfahrung im Technologiesektor und unterstütze Unternehmen und Anwender bei ihrer Entwicklung und Weiterbildung in diesem Bereich. Ich lerne ständig dazu.

Verwandte