„Arduino Zero“: kas tai yra, kam jis naudojamas ir kokiuose plėtros projektuose jis gali būti naudojamas?

Paskutiniai pakeitimai: 15/09/2022
„Arduino Zero“: kas tai yra, kam jis naudojamas ir kokiuose plėtros projektuose jis gali būti naudojamas.

Arduino ZERO plokštė Jis skirtas tiems vartotojams, kurie Jie vykdo projektus, kurių negali paremti klasikinis „Arduino UNO“Taip yra dėl mikrokontrolerio, „flash“ atminties ir procesoriaus laikrodžio apdorojimo pajėgumų.

Todėl svarbu žinoti, kas yra „Arduino ZERO“ plokštės ir kam jos naudojamos elektronikoje. Šią informaciją galite rasti šio straipsnio pastraipose.

Be to, mes jums parodysime Pagrindinės plokštės savybės ir kriterijai, į kuriuos turėtumėte atsižvelgti dirbdami su „Arduino ZERO“Peržiūrėkite šią galingą pagrindinę plokštę.

Kas yra „Arduino Zero“ plokštės ir kam šios kūrimo plokštės naudojamos elektronikoje?

Lėkštė Arduino ZERO Tai įrenginys, turintis elektroninę magistralę, kurioje yra 32 bitų branduolio ATMEL Cortex-M0 SAMD21 mikroprocesoriusJam būdinga tai, kad jis turi programos derinimasarba derinti, todėl vartotojui nereikės jokios išorinės įrangos.

Jame yra visos reikalingos technologijos, dirbant su daiktų interneto projektaisBūtina patikslinti, kad jo našumas yra šiek tiek mažesnis nei kitų plokščių, nes Palaikoma įtampa yra 3.3 VVisi kaiščiai, išskyrus 4 kaištį, Jie dirba su išoriniais trukdžiais 0 ir 1 tipo. Kita vertus, nuolatinė srovė, tiek įėjimo, tiek išėjimo, yra 7 mA ir procesoriaus taktinis dažnis pasiekia 48 MHz.

Savybės: Kokios yra pagrindinės šios Arduino plokštės savybės?

Savybės: Kokios yra pagrindinės šios Arduino plokštės savybės?

Pagrindinės šios „Arduino“ plokštės savybės yra šios: 

  • Idealiai tinka darbui robotikoje, automatizavime ir technologijų projektuose.
  • Turi a įterptas šveitiklis kuris jungiasi prie aparatinės įrangos MCU kuris leidžia jums programuoti SAMD21 per sąsają SWD. Tai taip pat suteikia visišką prieigą prie mikrovaldiklio ir galimybę dirbti su programos kodais, juos modifikuoti.
  • Išorinis maitinimo šaltinis, kurį turi „Arduino ZERO“ Maitinimas tiekiamas per centrinę teigiamą jungtį arba per GND ir VIN kontaktus, esančius šios 2,1 mm jungties antgalyje. Tai reiškia, kad nėra USB prievado, skirto maitinti plokštę.
  • Los PWM yra 3, 4, 5, 6, 8, 9, 10, 11, 12 ir 13kol analoginiai įėjimai Jie yra A0 - A5Išėjimo įtampa yra DAC, kuris yra A0 kanalas.
  • SPI yra įsikūręs SS, MOSI, MISO ir SCK lėkštės.
  • Jis turi veikiantį laikrodį. 48MHz, kad galėtumėte skaičiuoti realų laiką ir kalendorių.

Į ką turėčiau atkreipti dėmesį dirbdamas su Arduino ZERO plokštėmis?

Į ką turėčiau atkreipti dėmesį dirbdamas su Arduino ZERO plokštėmis?

Pirmas dalykas, kurį turėtumėte žinoti, yra tai, kad lenta Arduino ZERO veikia esant 3.3 V įtampaiJis yra šiek tiek mažesnis nei kitų pagrindinių plokščių. Todėl turite atsižvelgti į šį apribojimą, nes galite sugadinti mikroprocesorių ir kitus komponentus. Kai Dirbate IDE aplinkoje. ir atidarote monitoriųMikrovaldikliai ir eskizo vykdymas nepaleidžiami iš naujo, todėl procesą reikės paleisti iš naujo naudojant mygtuką, esantį programinės įrangos prietaisų skydelyje. Arduino.

Maitinimas netiekiamas per USB įvestįTai gali apsunkinti projektą, jei norite naudoti 2,1 mm jungtį kitai grandinės jungtiai. Galiausiai, Turite būti atsargūs dėl procesų, kuriuos priskiriate projektui, skaičiaus.Nors tiesa, kad ši pagrindinė plokštė yra daug galingesnė nei Arduino UNO O jei turite galingą mikrovaldiklį, gerą atmintį ir 48 MHz laikrodį, visada turėtumėte atkreipti dėmesį į jam perduodamą apkrovą.

Geriausių projektų, kuriuos galite atlikti su „Arduino ZERO“ plokštėmis, sąrašas

Atraskite geriausius projektus, kuriuos galite įgyvendinti su „Arduino ZERO“ plokšte:

„NeoPixel“ ekranas valdomas per „WiFi“

„NeoPixel“ ekranas valdomas per „WiFi“

Su šiuo projektu galėsite sukurti ekraną NeoPixel valdo WiFi Tau reikės vieno Arduino ZERO plokštėJums reikės „NeoPixel“ tipo žiedinio šviestuvo, kelių šviesos diodų, maketo, 1000 µF kondensatoriaus, 475 omų rezistoriaus ir laidų jungtims. Jį turėsite surinkti patys. laikantis dalių aprašymų ir specifikacijų Ir atsižvelgiant į lentos kaiščius, pagal viską, ką aptarėme šiame įraše.

Kai surinkimas bus paruoštas, turėsite įvesti šį kodą:

#įtraukti #įtraukti #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. Spalva (255, 0, 0); uint32_t mėlyna = pikseliai. Spalva (0, 0, 255); uint32_t žalia = pikseliai. Color(0, 255, 0); uint32_t pixelColour; uint32_t lastColor; float activeColor[] = {255, 0, 0}; IP adresas apIP(192, 168, 0, 150); IP adresas netMsk(255, 255, 255, 0); IP adresas gw(192, 168, 0, 1); dns IP adresas(192, 168, 0, 1); string IP; char APssid[] = "MKR1000"; char APass[] = "MKR1000"; char ssid[] = "JūsųSSID"; char pass[] = "JūsųSlaptažodis"; int keyIndex = 0; int status = WL_IDLE_STATUS; „WiFiServer“ serveris (80); const char html1[] PROGMEM = "<! DOCTYPE html>  „Neopixel“ spalvų rinkiklis < / 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;}. žalia {fonas: # 0C0; spalva: balta;}. mėlyna {fonas: mėlyna; spalva: balta;}" ".balta {fonas: balta; spalva: juoda; kraštinė: 1 pikselis juoda;}. išjungta {fonas: # 666; spalva: balta;}. spalvų rinkiklis {fonas: balta; spalva: juoda;}. 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; } fonas: linijinis gradientas (į dešinę, raudona, juoda, oranžinė, juoda, geltona, juoda, žalia, juoda, mėlyna, juoda, indigo, juoda, violetinė); } " ; const char html2 [] PROGMEM = ".breathe {fonas: mėlyna; spalva: balta;}. cilindras {fonas: raudonas; spalva: juoda;} širdies plakimas {fonas: raudonas; spalva: balta;}. KALĖDOS {šrifto dydis: 40 pikselių; fonas: raudonas; fonas: linijinis gradientas (dešinė, raudona, žalia, raudona, žalia, raudona, žalia, raudona, žalia, raudona, žalia, raudona, žalia);} " ".VISI {fonas: balta; spalva: mėlyna;}. Ir {fonas: #EE0; aukštis: 100 pikselių; plotis: 100 pikselių; kraštinės spindulys: 50 pikselių;}. B { fonas: #000; aukštis: 100 pikselių; plotis: 100 pikselių; kraštinės spindulys: 50 pikselių;} A {font-size: 35px;} td {vertical-align: middle;} " "td {vertical-align: middle;} „“ " ;

const char  html3 []  PROGMEM  =

"función ResetWebpage () {if (window.location.href! = 'http: // # IPADRESAS /') {window.open ('http: // # IPADRESAS /', '_ self', true)}};" // pakeiskite svetainės reikšmę į savo statinę svetainę "function myFunction () {document.getElementById ('brilloLevel'). pateikti();} „“ v = 1 '> Raudona Spalvų valymas „“ Žalia Teatro gaudynė „“ Mėlyna Vaivorykštė „“ Balta Vaivorykštės persekiojimas "; const char html4 [] PROGMEM = " Cylon Chaser Vaivorykštės ciklas „“ Kvėpuoti Širdies plakimas „“ Kalėdos VISAS ciklas „“ Išaktyvinta  „“ " ; 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}; //Aktyvuoti „Neopixel“ funkciją (pagal numatytuosius nustatymus išjungta) 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 ; tuščia konfigūracija () { pixels . " pradėti(); pikseliai. setBrightness(ryškumas); writeLEDS(0, 0, 0); Serial. pradėti (9600); Serijos numeris. println(ssid); jei(„WiFi“. būsena () == WL_NO_SHIELD) { Serijos numeris . println(F("Nėra „WiFi“ skydo")); while(true); } WiFi. config(apIP); //WiFi.config(apIP, dns, gw, netMsk); while (statusas ! = WL_CONNECTED) { for (int x = 0; x <= wifiRetryTimes; x++) { Serial. print(F("Bandoma prisijungti prie tinklo, nurodyto:")); Serial. println(ssid); } Serijos kodas. print(F("Nepavyko prisijungti prie Wi-Fi")); būsena = Wi-Fi. beginAP(APssid); // sukuriame AP – IP šiuo metu yra statinis ir yra 192.168.1.1 // state = WiFi.beginAP(APssid, APass); delay(10000); break; } printWifiStatus(); sendHtml3. pakeisti ("#IPADRESAS", IP); sendHtml4. pakeisti("#RYŠKUS", "150"); Serial. println(F("USP serveris paleistas!!") )); serveris. pradėti(); Serijos. println(F("HTTP serveris paleistas!!" )); } tuščia kilpa () { „WiFiClient“ klientas = serveris. available(); if (klientas) { println(F("naujas klientas")); currentLine = ""; while (klientas.prisijungęs()) { if (klientas.available()) { char c = klientas.read(); Serial. write(c); if(c == '\n') { klientas. println("Turinio tipas: tekstas/html"); klientas. println(); klientas. spausdinti(F(html1)); klientas. spausdinti(F(html2)); klientas. spausdinti (sendHtml3); klientas. spausdinti (sendHtml4); klientas. println(); break; } else { // jei yra nauja eilutė, turėsite ištrinti currentLine: if (currentLine. indexOf("Referer") < 0) { // visada vykdoma, jei grąžinamoje reikšmėje nėra refererio if (currentLine. indexOf("/L00") > 0) { // jei eilutėje handle_L00() yra /L00; // vykdyti funkciją } if (currentLine. indexOf("/L01") > 0) { handle_L01(); } if (dabartinėLine. indexOf("/L02") > 0) { handle_L02(); } if (dabartinėLine. indexOf("/L03") > 0) { handle_L03(); } if (dabartinėLine. indexOf("/L04") > 0) { handle_L04(); } if (dabartinėLine. indexOf("/L05") > 0) { handle_L05(); } if (dabartinėLine. indexOf("/L06") > 0) { handle_L06(); } if (dabartinėLine. indexOf("/L07") > 0) { handle_L07(); } if (dabartinėLine. indexOf("/L08") > 0) { handle_L08(); } if (dabartinėLine. indexOf("/L09") > 0) { handle_L09(); } if (dabartinėLine. indexOf("/L10") > 0) { handle_L10(); } if (dabartinėLine. indexOf("/L11") > 0) { handle_L11(); } if (dabartinėLine. indexOf("/L12") > 0) { handle_L12(); } if (dabartinėLine. indexOf("/L13") > 0) { handle_L13(); } if (dabartinėLine. indexOf("/L14") > 0) { handle_L14(); } if (dabartinėLine. indexOf("ryškus") > 0) { handle_bright(); } } currentLine = ""; } } else if (c ! = '\r') dabartinėLinija + = c; } jei (dabartinėLinija. endsWith("/generate_204")) { handle_root(); } } } // uždaro ryšį: client. stop(); Serijinis. println(F("klientas atjungtas")); } NeoPixModes(); }

Temperatūros verčių įrašymas

Temperatūros verčių įrašymas

Tau reikės lėkštės Arduino MKR Zero, 100 nF kondensatorius, 4.75 k omų rezistorius, temperatūros ir drėgmės jutiklis, įdėklų plokštė, kabeliai ir „MicroSD“ kortelė. Šis projektas skirtas jūsų įrenginio užfiksuotų temperatūros ir drėgmės verčių įrašymui.

Teks Surinkite Arduino su duonos plokšteToliau prijunkite temperatūros ir drėgmės jutiklį prie maketo. Po to turėsite prijungti jutiklio maitinimo kontaktą. prie VCC kaiščio ir galiausiai prijunkite jutiklio duomenų kaištį prie 7 kaiščioBaigę turėsite prijungti drėgmės ir temperatūros jutiklio įžeminimo kaištį prie kaiščio GND iš lėkštės Arduino. Toliau prijungsite kondensatorių prie GND ir ištvermė.

Kai baigsite, turėsite įvesti šiuos kodus:

#įtraukti #įtraukti #įtraukti #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("Duomenų registratoriaus pavyzdys:"); if (!SD.begin(chipSelect)) { println("Kortelė sugedo arba nėra"); return; } println("Kortelė inicializuota."); //Kai DHT22 jutikliui tiekiamas maitinimas, //nesiųsti jokių instrukcijų jutikliui per vieną sekundę, kad būtų praeitas nestabilios būsenos delay(1000); println("Inicijuojama DHT"); begin(); println("Inicijuojama RTC"); begin(); setTime(valandos, minutės, sekundės); setDate(diena, mėnuo, metai); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Sistema paruošta..."); } 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 += "Temperatūra: " + String(temperatūra) + " C" + "\t" + "Drėgmė: " + String(drėgmė) + "%\t" + "Laikas: " + getTime(); Failas dataFile = SD.open("datalog.txt", FILE_WRITE); // jei failas prieinamas, į jį rašoma: if (dataFile) { println(dataString); close(); // spausdinama ir į nuoseklųjį prievadą: 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()); kitaip grąžintiEilutę += String(rtc.getMinutes()); grąžintiEilutę += ":"; jei (rtc.getSeconds() < 10) grąžintiEilutę += "0" + String(rtc.getSeconds()); kitaip grąžintiEilutę += String(rtc.getSeconds()); grąžinti grąžintiEilutę; }

Arduino nulinis robotas

Arduino nulinis robotas

Galite sukurti robotą su Arduino plokšteTam jums reikės adapterio Arduino MKR2UNO„Arduino MotorShield Rev3“ plokštė, nuolatinės srovės variklis, laidai ir baterija 9 V. Kai turėsite šias medžiagas, turėsite jas surinkti klijuodami variklį ir tada atlikdami ant dalių nurodytas jungtis.

Toliau turėsite įvesti šiuos kodus:

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

}
El. knygos IPAP
Ebooks IPAP

🔥PRISIJUNKITE🔥 PRIE NAUJOS IP@P BENDRUOMENĖS! REGISTRUOKITĖS ČIA!

Tematika

Autorius: Félix Albornoz

Turiu daugiau nei 20 metų darbo patirties technologijų sektoriuje, padėdamas įmonėms ir vartotojams tobulėti ir mokytis šioje srityje. Nuolat mokausi naujovių.

Susijęs