Arduino Zero: Ce este, la ce se folosește și în ce proiecte de dezvoltare poate fi folosit?

Ultima actualizare: 15/09/2022
Arduino Zero: Ce este, la ce se folosește și în ce proiecte de dezvoltare poate fi folosit.

Placa Arduino ZERO Este conceput pentru acei utilizatori care Ei execută proiecte pe care nu le pot susține clasicul Arduino UNOAcest lucru se datorează capacității de procesare a MCU, a memoriei flash și a frecvenței de ceas a procesorului.

Prin urmare, este important să știi ce sunt plăcile Arduino ZERO și la ce se folosesc aceste plăci în electronică. Puteți găsi aceste informații în paragrafele acestui articol.

De asemenea, vă vom arăta Principalele caracteristici ale plăcii și criteriile pe care ar trebui să le luați în considerare atunci când lucrați cu Arduino ZEROUite această placă de bază puternică.

Ce sunt plăcile Arduino Zero și la ce se folosesc aceste plăci de dezvoltare în electronică?

Farfuria Arduino ZERO Este un dispozitiv care are o magistrală electronică ce include un Microcontroler ATMEL Cortex-M0 SAMD21 pe 32 de bițiSe caracterizează prin faptul că are o depanare programsau depanare, permițând utilizatorului să nu aibă nevoie de hardware extern.

Are toată tehnologia necesară pentru a lucrând la proiecte Internet of ThingsEste necesar să se clarifice faptul că performanța sa este puțin mai mică decât cea a altor plăci, deoarece Tensiunea pe care o suportă este de 3.3 VToți pinii, cu excepția pinului 4, Lucrează cu întreruperi externe de tip 0 și 1. Pe de altă parte, curentul continuu, atât la intrare, cât și la ieșire, este 7 mA și viteza de ceas a procesorului atinge 48 MHz.

Caracteristici: Care sunt principalele caracteristici ale acestei plăci Arduino?

Caracteristici: Care sunt principalele caracteristici ale acestei plăci Arduino?

Principalele caracteristici ale acestei plăci Arduino sunt: 

  • Este ideal pentru lucrul în robotică, în automatizare și în proiecte tehnologice.
  • Detine un scruber încorporat care se conectează la hardware-ul MCU care vă permite să programați SAMD21 printr-o interfață SWD. Acest lucru permite, de asemenea, acces complet la microcontroler și posibilitatea de a lucra cu coduri de program pentru a le modifica.
  • Sursa externă de alimentare pe care o are Arduino ZERO Alimentarea se face printr-un conector central-pozitiv sau prin pinii GND și VIN situați pe conectorul acestui conector de 2,1 mm. Aceasta înseamnă că nu există un port USB pentru alimentarea plăcii.
  • L PWM sunt 3, 4, 5, 6, 8, 9, 10, 11, 12 și 13în timp ce intrări analogice Sunt înăuntru A0 la A5Tensiunea de ieșire este la DAC, care este canalul A0.
  • SPI-ul este situat în SS, MOSI, MISO și SCK a plăcii.
  • El deține un ceas funcțional. 48MHz, astfel încât să poți număra timpul real și calendarul.

La ce ar trebui să am în vedere când lucrez cu plăci Arduino ZERO?

La ce ar trebui să am în vedere când lucrez cu plăci Arduino ZERO?

Primul lucru pe care trebuie să-l știi este că placa Arduino ZERO funcționează la o tensiune de 3.3VEste puțin mai mic decât la alte plăci de bază. Prin urmare, trebuie să țineți cont de această restricție, deoarece ați putea deteriora microprocesorul și alte componente. Când Lucrezi în IDE și deschizi monitorulMicrocontrolerele și execuția schiței nu repornesc, așa că va trebui să reporniți procesul folosind un buton găsit pe tabloul de bord al software-ului. Arduino.

Alimentarea nu este furnizată printr-o intrare USBAcest lucru ar putea complica proiectul dacă doriți să utilizați conectorul de 2,1 mm pentru o altă conexiune de circuit. În cele din urmă, Trebuie să fii atent la numărul de procese pe care le atribui proiectului.Deși este adevărat că această placă de bază este mult superioară în putere față de Arduino UNO Și dacă aveți un microcontroler puternic, o memorie bună și o frecvență de ceas de 48 MHz, ar trebui să fiți întotdeauna atenți la sarcina pe care o transferați asupra acestuia.

Listă cu cele mai bune proiecte pe care le poți realiza cu plăci Arduino ZERO

Descoperă cele mai bune proiecte pe care le poți realiza cu o placă Arduino ZERO:

Ecran NeoPixel controlat prin WiFi

Ecran NeoPixel controlat prin WiFi

Cu acest proiect veți putea crea un ecran de NeoPixel condus de Wi-Fi. Vei avea nevoie de unul Placă Arduino ZEROVei avea nevoie de o lumină inelară de tip NeoPixel, mai multe LED-uri, o placă de testare, un condensator de 1000 µF, o rezistență de 475 ohmi și fire pentru realizarea conexiunilor. Va trebui să o asamblezi singur. urmând descrierile și specificațiile pieselor Și având în vedere pinii de pe tablă, în conformitate cu tot ceea ce am discutat în această postare.

După ce ați pregătit ansamblul, va trebui să introduceți următorul cod:

#include #include #definește PIN 12 #definește NUMPIXELS 10 #definește intervalul 50 #definește wifiRetryTimes 0 Adafruit_NeoPixel pixeli = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t red = pixeli. Culoare (255, 0, 0); uint32_t albastru = pixeli. Culoare (0, 0, 255); uint32_t verde = pixeli. Culoare(0, 255, 0); uint32_t pixelColour; uint32_t lastColor; float activeColor[] = {255, 0, 0}; Adresă IP apIP(192, 168, 0, 150); Adresă IP netMsk(255, 255, 255, 0); Adresă IP gw(192, 168, 0, 1); Adresă IP dns(192, 168, 0, 1); string IP; char APssid[] = "MKR1000"; char APpass[] = "MKR1000"; char ssid[] = "SSID-ul dvs."; char pass[] = "Parola dvs."; int keyIndex = 0; int status = WL_IDLE_STATUS; Server WiFiServer(80); const char html1[] PROGMEM = "<! DOCTYPE html>  Selector de culori Neopixel</title> " " <style type = 'text / css' >. bt {display: block; width: 250px; height: 100px; padding: 10px; margin: 10px; text-align: center; border-radius: 5px; color: white; font-weight: bold; font-size: 40px; text-decoration: none;} body {background: #000;} " ".red {background: roșu; color: white;}. verde {fundal: # 0C0; culoare: alb;}. albastru {fundal: albastru; culoare: alb;}" ".white {fundal: alb; culoare: negru; chenar: 1px negru solid;}. dezactivat {fundal: # 666; culoare: alb;}. colorPicker {fundal: alb; culoare: negru;}. colorWipe {font-size: 40px; background: linear-gradient(dreapta, roșu, #0C0, albastru);} " ".theatreChase {font-size: 40px; background: linear-gradient(dreapta, roșu, negru, roșu, negru, #0C0, negru, #0C0, negru, albastru, negru, albastru);}" ".rainbow {font-size: 40px; background: roșu; background: linear-gradient(dreapta, roșu, portocaliu, galben, verde, albastru, indigo, violet, roșu, portocaliu, galben, verde, albastru, indigo, violet) );} " ".rainbowCycle {font-size: 40px; background: roșu; background: linear-gradient(dreapta, roșu, portocaliu, galben, verde, albastru, indigo, violet);}" ".rainbowChase {font-size: 40px; background: roșu; fundal: gradient liniar (spre dreapta, roșu, negru, portocaliu, negru, galben, negru, verde, negru, albastru, negru, indigo, negru, violet); } "; const char html2 [] PROGMEM = ".breathe {fundal: albastru; culoare: alb;}. cylon {fundal: roșu; culoare: negru;}. bătăi ale inimii {fundal: roșu; culoare: alb;}. CRĂCIUN {dimensiune font: 40px; fundal: roșu; fundal: gradient liniar (dreapta, roșu, verde, roșu, verde, roșu, verde, roșu, verde, roșu, verde, roșu, verde);} " ".TOATE {fundal: alb; culoare: albastru;}. Și {fundal: #EE0; înălțime: 100px; lățime: 100px; raza bordurii: 50px;}. B { fundal: #000; înălțime: 100px; lățime: 100px; raza bordurii: 50px;}. Un {font-size: 35px;} td {vertical-align: middle;} " "td {vertical-align: middle;} „” " ;

const char  html3 []  PROGMEM  =

"función ResetWebpage () {if (window.location.href! = 'http: // # IPADDRESS /') {window.open ('http: // # IPADDRESS /', '_ self', true)}};" // schimbă valoarea site-ului web aici la site-ul tău web static "function myFunction () {document.getElementById ('brilloLevel'). trimite();} „” v = 1 '> Roșu Ștergere de culoare „” Verde Urmărirea Teatrului „” Albastru Curcubeu „” Alb Urmărirea curcubeului " ; const char html4 [] PROGMEM = " Vânător de Cyloni Ciclul Curcubeului „” Respira Bătăi de inimă „” Crăciun ALL Cycle „” Dezactivat  „” "; String sendHtml3 = html3; String sendHtml4 = html4; String currentLine; boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, true}; //Activează funcția Neopixel (dezactivată implicit) 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; configurație goală () { pixels. start(); pixeli. setBrightness (luminozitate); writeLEDS (0, 0, 0); Serial. început (9600); Serial. println(ssid); dacă (WiFi. stare() == WL_NO_SHIELD) { Serial. println(F("Scutul WiFi nu este prezent")); while(true); } WiFi. config(apIP); //WiFi.config(apIP, dns, gw, netMsk); while (stare ! = WL_CONNECTED) { pentru (int x = 0; x <= wifiRetryTimes; x++) { Serial. print(F("Se încearcă conectarea la rețeaua numită:")); Serial. println(ssid); } Serial. print(F("Nu s-a putut conecta la Wifi")); state = WiFi. beginAP(APssid); // creează un AP - IP-ul este momentan static la 192.168.1.1 // stare = WiFi.beginAP(APssid, APpass); delay(10000); break; } printWifiStatus(); sendHtml3. înlocuiește("#ADRESĂIP", IP); sendHtml4. înlocuiește("#BRIGHT", "150"); Serial. println(F("Serverul USP a pornit!!" )); server. începe(); Serial. println(F("Serverul HTTP a pornit!!" )); } buclă goală () { WiFiClient Client = server. disponibil(); dacă (client) { println(F("client nou")); linia_curentă = ""; în timp ce (client.connected()) { dacă (client.available()) { char c = client.read(); Serial. scrie (c); dacă (c == '\n') { client. println("Tip conținut: text/html"); client. println(); client. tipărire(F(html1)); client. tipărire(F(html2)); client. tipărire(sendHtml3); client. tipărire(sendHtml4); client. println(); break; } else { // dacă are o linie nouă, va trebui să ștergeți currentLine: if (currentLine. indexOf("Referer") < 0) { // se execută întotdeauna dacă Referer-ul nu se află în valoarea returnată if (currentLine. indexOf("/L00") > 0) { // dacă /L00 este prezent în șirul handle_L00(); // execută funcția } if (currentLine. indexOf("/L01") > 0) {handle_L01();} dacă (linea_curentă. indexOf("/L02") > 0) {handle_L02();} dacă (linea_curentă. indexOf("/L03") > 0) {handle_L03();} dacă (linea_curentă. indexOf("/L04") > 0) {handle_L04();} dacă (linea_curentă. indexOf("/L05") > 0) {handle_L05();} dacă (linea_curentă. indexOf("/L06") > 0) {handle_L06();} dacă (linea_curentă. indexOf("/L07") > 0) {handle_L07();} dacă (linea_curentă. indexOf("/L08") > 0) {handle_L08();} dacă (linea_curentă. indexOf("/L09") > 0) {handle_L09();} dacă (linea_curentă. indexOf("/L10") > 0) {handle_L10();} dacă (linea_curentă. indexOf("/L11") > 0) {handle_L11();} dacă (linea_curentă. indexOf("/L12") > 0) {handle_L12();} dacă (linea_curentă. indexOf("/L13") > 0) {handle_L13();} dacă (linea_curentă. indexOf("/L14") > 0) {handle_L14();} dacă (linea_curentă. indexOf("bright") > 0) { handle_bright(); } } currentLine = ""; } } altfel dacă (c!) = '\r' ) linia_curent + = c ; } dacă ( linia_curent . endsWith("/generate_204")) { handle_root(); } } } // închide conexiunea: client. stop(); Serial. println(F("client deconectat")); } NeoPixModes(); }

Înregistrarea valorilor de temperatură

Înregistrarea valorilor de temperatură

Vei avea nevoie de o farfurie Arduino MKR Zero, un condensator de 100 nF, o rezistență de 4.75 k ohmi, un senzor de temperatură și umiditate, o placă de bază, cabluri și un card MicroSD. Acest proiect are ca scop păstrarea evidenței valorilor de temperatură și umiditate înregistrate de dispozitivul dumneavoastră.

Va trebui să asamblați Arduino-ul cu placa de testApoi, conectați senzorul de temperatură și umiditate la placa de test. După aceasta, va trebui să conectați pinul de alimentare al senzorului. la pinul VCC și în final conectați pinul de date al senzorului la pinul 7Când terminați, va trebui să conectați pinul de împământare al senzorului de umiditate și temperatură la pinul GND din farfurie Arduino. În continuare, veți conecta condensatorul la GND şi rezistenta.

După ce ați terminat, va trebui să introduceți aceste coduri:

#include #include #include #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("Exemplu de DataLogger:"); if (!SD.begin(chipSelect)) { println("Card defect sau absent"); return; } println("card inițializat."); //Când senzorul DHT22 este alimentat, //nu trimite nicio instrucțiune către senzor //în decurs de o secundă pentru a trece delay(1000) pentru starea instabilă; println("Se inițiază DHT"); begin(); println("Se inițiază RTC"); begin(); setTime(ore, minute, secunde); setDate(zi, lună, an); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Sistem gata..."); } 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 umiditate = dht.readHumidity(); float temperatură = dht.readTemperature(); String dataString = ""; dataString += "Temperatură: " + String(temperatură) + " C" + "\t" + "Umiditate: " + String(umiditate) + "%\t" + "Oră: " + getTime(); Fișier dataFile = SD.open("datalog.txt", FILE_WRITE); // dacă fișierul este disponibil, se scrie în el: if (dataFile) { println(dataString); close(); // se imprimă și pe portul serial: 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()); altfel returnString += String(rtc.getMinutes()); returnString += ":"; dacă (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); altfel returnString += String(rtc.getSeconds()); return returnString; }

Robotul Arduino Zero

Robotul Arduino Zero

Poți crea un robot cu o placă ArduinoPentru aceasta veți avea nevoie de un adaptor Arduino MKR2UNOo placă Arduino MotorShield Rev3, un motor de curent continuu, fire și o baterie 9V. După ce aveți aceste materiale, va trebui să le asamblezi prin lipirea motorului și apoi realizarea conexiunilor indicate pe piese.

În continuare, va trebui să introduceți aceste coduri:

#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);

}
Cărți electronice de IPAP
Ebooks IPAP

🔥ALĂTURĂ-TE🔥 NOII COMUNITĂȚI IP@P! ÎNSCRIE-TE AICI!

Tematică

Autor: Félix Albornoz

Am peste 20 de ani de experiență în sectorul tehnologic, ajutând companii și utilizatori să se dezvolte și să se formeze în acest domeniu. Învăț mereu lucruri noi.

Legate de