Arduino Zero: Što je to, za što se koristi i u kojim razvojnim projektima se može koristiti?

Zadnje ažuriranje: 15/09/2022
Arduino Zero: Što je to, za što se koristi i u kojim razvojnim projektima se može koristiti.

Arduino ZERO ploča Namijenjen je onim korisnicima koji Izvode projekte koje ne mogu podržati klasični Arduino UNOTo je zbog procesorskog kapaciteta MCU-a, flash memorije i takta CPU-a.

Stoga je važno da znate što su Arduino ZERO ploče i za što se te ploče koriste u elektronici. Ove informacije možete pronaći u odlomcima ovog članka.

Također, pokazat ćemo vam Glavne značajke ploče i kriteriji koje biste trebali uzeti u obzir pri radu s Arduino ZERO-omPogledajte ovu moćnu matičnu ploču.

Što su Arduino Zero ploče i za što se ove razvojne ploče koriste u elektronici?

Tanjur Arduino NULA To je uređaj koji ima elektroničku sabirnicu koja uključuje 32-bitni ATMEL Cortex-M0 SAMD21 MCUKarakterizira ga to što ima otklanjanje pogrešaka u programu, ili debug, što korisniku omogućuje da ne treba nikakav vanjski hardver.

Ima svu potrebnu tehnologiju za rad na projektima Interneta stvariPotrebno je pojasniti da su njegove performanse nešto niže od performansi drugih ploča, budući da Napon koji podržava je 3.3 VSvi pinovi, osim pina 4, Rade s vanjskim prekidima tipa 0 i 1. S druge strane, istosmjerna struja, i ulazna i izlazna, je 7 mA i brzina takta CPU-a doseže 48 MHz.

Karakteristike: Koje su glavne karakteristike ove Arduino ploče?

Karakteristike: Koje su glavne karakteristike ove Arduino ploče?

Glavne karakteristike ove Arduino ploče su: 

  • Idealan je za rad u robotici, u automatizaciji i tehnološkim projektima.
  • Vlasnik je ugrađeni scrubber koji se spaja na hardver MCU koji vam omogućuje programiranje SAMD21 putem sučelja SWD. To također omogućuje potpuni pristup mikrokontroleru i mogućnost rada s programskim kodovima radi njihove izmjene.
  • Vanjsko napajanje koje Arduino ZERO ima Napajanje se dovodi putem središnje pozitivnog konektora ili putem GND i VIN pinova koji se nalaze na konektoru ovog 2,1 mm konektora. To znači da nema USB priključka za napajanje ploče.
  • The PWM su 3, 4, 5, 6, 8, 9, 10, 11, 12 i 13dok analogni ulazi Ulaze A0 do A5Izlazni napon je na DAC-u, što je kanal A0.
  • SPI se nalazi u SS, MOSI, MISO i SCK tanjura.
  • Posjeduje ispravan sat. 48 MHz, tako da možete brojati stvarno vrijeme i kalendar.

Što trebam imati na umu pri radu s Arduino ZERO pločama?

Što trebam imati na umu pri radu s Arduino ZERO pločama?

Prvo što trebate znati je da je ploča Arduino ZERO radi na naponu od 3.3 VNešto je niža od ostalih matičnih ploča. Stoga morate uzeti u obzir ovo ograničenje jer biste mogli oštetiti mikroprocesor i ostale komponente. Kada Radite u IDE-u i otvoriš monitorMikrokontroleri i izvršavanje skice se ne ponovno pokreću, pa ćete morati ponovno pokrenuti proces pomoću gumba koji se nalazi na softverskoj nadzornoj ploči. Arduino.

Napajanje se ne dovodi putem USB ulazaTo bi moglo zakomplicirati projekt ako želite koristiti 2,1 mm konektor za drugi priključak strujnog kruga. Konačno, Morate biti oprezni s brojem procesa koje pripisujete projektu.Iako je istina da je ova matična ploča daleko superiornija po snazi ​​od Arduino UNO A ako imate snažan mikrokontroler, dobru memoriju i takt od 48 MHz, uvijek biste trebali biti svjesni opterećenja koje prenosite na njega.

Popis najboljih projekata koje možete napraviti s Arduino ZERO pločama

Otkrijte najbolje projekte koje možete izvesti s Arduino ZERO pločom:

NeoPixel zaslon s WiFi kontrolom

NeoPixel zaslon s WiFi kontrolom

S ovim projektom moći ćete stvoriti ekran od NeoPixel kojim upravlja Wi-Fi. Trebat će ti jedan Arduino ZERO pločaTrebat će vam prstenasta svjetiljka tipa NeoPixel, nekoliko LED dioda, probna ploča, kondenzator od 1000 µF, otpornik od 475 ohma i žice za spajanje. Morat ćete ga sami sastaviti. slijedeći opise i specifikacije dijelova A uzimajući u obzir pinove na ploči, u skladu sa svime što smo raspravljali u ovom postu.

Nakon što je sklop spreman, morat ćete unijeti sljedeći kod:

#uključi #uključi #define PIN 12 #define NUMPIXELS 10 #define interval 50 #define wifiRetryTimes 0 Adafruit_NeoPixel pikseli = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t crvena = pikseli. Boja (255, 0, 0); uint32_t plava = pikseli. Boja (0, 0, 255); uint32_t zelena = pikseli. Boja(0, 255, 0); uint32_t bojaPixela; uint32_t zadnjaBoja; float aktivnaBoja[] = {255, 0, 0}; IP adresa apIP(192, 168, 0, 150); IP adresa netMsk(255, 255, 255, 0); IP adresa gw(192, 168, 0, 1); dns IP adresa(192, 168, 0, 1); string IP; char APssid[] = "MKR1000"; char APpass[] = "MKR1000"; char ssid[] = "VašSSID"; char pass[] = "VašaLozinka"; int indeksKljuča = 0; int status = WL_IDLE_STATUS; WiFiServer Server (80); const char html1 [] PROGMEM = "<! DOCTYPE html>  Neopixel alat za odabir boja < / 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;}. zelena {pozadina: # 0C0; boja: bijela;}. plava {pozadina: plava; boja: bijela;}" ".bijela {pozadina: bijela; boja: crna; obrub: 1px čvrsto crna;}. isključeno {pozadina: # 666; boja: bijela;}. colorPicker {pozadina: bijela; boja: crna;}. colorWipe {font-size: 40px; background: linear-gradient(desno, crvena, #0C0, plava);} " ".theatreChase {font-size: 40px; background: linear-gradient(desno, crvena, crna, crvena, crna, #0C0, crna, #0C0, crna, plava, crna, plava);}" " ".rainbow {font-size: 40px; background: crvena; background: linear-gradient(desno, crvena, narančasta, žuta, zelena, plava, indigo, ljubičasta, crvena, narančasta, žuta, zelena, plava, indigo, ljubičasta) );} " ".rainbowCycle {font-size: 40px; background: crvena; background: linear-gradient(desno, crvena, narančasta, žuta, zelena, plava, indigo, ljubičasta);} " ".rainbowChase {font-size: 40px; background: crvena; pozadina: linearni gradijent (desno, crvena, crna, narančasta, crna, žuta, crna, zelena, crna, plava, crna, indigo, crna, ljubičasta); } " ; const char html2 [] PROGMEM = ".breathe {pozadina: plava; boja: bijela;}. cylon {pozadina: crvena; boja: crna;}. otkucaji srca {pozadina: crvena; boja: bijela;}. BOŽIĆ {veličina fonta: 40px; pozadina: crvena; pozadina: linearni gradijent (desno, crvena, zelena, crvena, zelena, crvena, zelena, crvena, zelena, crvena, zelena, crvena, zelena);} " ".SVE {pozadina: bijela; boja: plava;}. I {pozadina: #EE0; visina: 100px; širina: 100px; radijus obruba: 50px;}. B { pozadina: #000; visina: 100px; širina: 100px; polumjer obruba: 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: // # IPADDRESS /') {window.open ('http: // # IPADDRESS /', '_ self', true)}};" // promijenite vrijednost web-stranice ovdje u vašu statičku web-stranicu "function myFunction () {document.getElementById ('brilloLevel'). poslati();} "" v = 1 '> Crvena Brisanje u boji "" Zelena Kazališna potjera "" Plava Duga "" Bijela Potjera za dugom " ; const char html4 [] PROGMEM = " Cylonski lovac Dugin ciklus "" Disati Otkucaj srca "" Božić SVI ciklusi "" Deaktivirano  "" "; String sendHtml3 = html3; String sendHtml4 = html4; String currentLine; boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; //Aktiviraj Neopixel funkciju (isključeno prema zadanim postavkama) 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. početak(); pikseli. postaviSvjetlost(svjetlina); writeLEDS(0, 0, 0); Serijski. početak (9600); Serijski. println(ssid); ako (WiFi). status () == WL_NO_SHIELD) { Serijski. println(F("WiFi štit nije prisutan")); while(true); } WiFi. config(apIP); //WiFi.config(apIP, dns, gw, netMsk); dok (status !) = WL_CONNECTED) { za (int x = 0; x <= wifiRetryTimes; x++) { Serijski. print(F("Pokušaj povezivanja s mrežom pod nazivom:")); Serijski. println(ssid); } Serijski. print(F("Nije moguće spojiti se na Wifi")); state = WiFi. beginAP(APssid); // kreiraj AP - IP adresa je trenutno statična na 192.168.1.1 // stanje = WiFi.beginAP(APssid, APpass); delay(10000); break; } printWifiStatus(); sendHtml3. zamijeni ("#IPADRESA", IP); pošaljiHtml4. zamijeni("#BRIGHT", "150"); Serijski. println(F("USP poslužitelj pokrenut!!" )); poslužitelj. početi(); Serijski . println(F("HTTP poslužitelj pokrenut!!" )); } prazna petlja () { WiFiClient Klijent = poslužnik . dostupno(); ako (klijent) { println(F("novi klijent")); currentLine = ""; dok (klijent.povezan()) { ako (klijent.dostupno()) { char c = klijent.čitaj(); Serijski. write(c); if(c == '\n') {client. println("Vrsta sadržaja: tekst/html"); klijent. println(); klijent. ispis(F(html1)); kupac . ispis(F(html2)); kupac . ispis (sendHtml3); kupac . ispis (sendHtml4); kupac . println(); break; } else { // ako ima novi redak, morat ćete izbrisati trenutni redak: if (trenutni_redak. indexOf("Referer") < 0) { // uvijek se izvršava ako Referer nije u vraćenoj vrijednosti if (currentLine). indexOf("/L00") > 0) { // ako je /L00 prisutan u nizu handle_L00(); // izvršava funkciju } if (currentLine. indexOf("/L01") > 0) { handle_L01(); } ako (trenutnaLinija). indexOf("/L02") > 0) { handle_L02(); } ako (trenutnaLinija). indexOf("/L03") > 0) { handle_L03(); } ako (trenutnaLinija). indexOf("/L04") > 0) { handle_L04(); } ako (trenutnaLinija). indexOf("/L05") > 0) { handle_L05(); } ako (trenutnaLinija). indexOf("/L06") > 0) { handle_L06(); } ako (trenutnaLinija). indexOf("/L07") > 0) { handle_L07(); } ako (trenutnaLinija). indexOf("/L08") > 0) { handle_L08(); } ako (trenutnaLinija). indexOf("/L09") > 0) { handle_L09(); } ako (trenutnaLinija). indexOf("/L10") > 0) { handle_L10(); } ako (trenutnaLinija). indexOf("/L11") > 0) { handle_L11(); } ako (trenutnaLinija). indexOf("/L12") > 0) { handle_L12(); } ako (trenutnaLinija). indexOf("/L13") > 0) { handle_L13(); } ako (trenutnaLinija). indexOf("/L14") > 0) { handle_L14(); } ako (trenutnaLinija). indexOf("svijetlo") > 0) { handle_svijetlo(); } } currentLine = "" ; } } inače ako (c !) = '\r') trenutnaLinija + = c; } ako (trenutnaLinija. endsWith("/generate_204")) { handle_root(); } } } // zatvara vezu: klijent. zaustavi(); Serijski . println(F("klijent isključen")); } NeoPixModes(); }

Zapisivanje temperaturnih vrijednosti

Zapisivanje temperaturnih vrijednosti

Trebat će ti tanjur Arduino MKR Zero, kondenzator od 100 nF, otpornik od 4.75 kΩ, senzor temperature i vlažnosti, umetnuta ploča, kabeli i MicroSD kartica. Ovaj projekt služi za vođenje evidencije o vrijednostima temperature i vlažnosti koje je zabilježio vaš uređaj.

Morati ces sastavite Arduino s probnom pločomZatim spojite senzor temperature i vlažnosti na probnu ploču. Nakon toga, morat ćete spojiti pin za napajanje senzora. na VCC pin i na kraju spojite podatkovni pin senzora na pin 7Kada završite, morat ćete spojiti pin za uzemljenje senzora vlažnosti i temperature na pin GND s tanjura Arduino. Zatim ćete spojiti kondenzator na GND i izdržljivost.

Nakon što završite, morat ćete unijeti ove kodove:

#uključi #uključi #uključi #define DHTPIN 7 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); const int chipSelect = SS1; unsigned long previousTime; int loadDataCheck; RTCZero rtc; const bajt sekundi = 50; const bajt minuta = 44; const bajt sati = 17; const bajt dan = 1; const bajt mjesec = 9; const bajt godina = 16; void setup() { pinMode(LED_BUILTIN, OUTPUT); begin(9600); println("Primjer DataLoggera:"); if (!SD.begin(chipSelect)) { println("Kartica nije uspjela ili nije prisutna"); return; } println("kartica inicijalizirana."); //Kada se senzoru DHT22 dovede napajanje, //nemojte slati nikakve upute senzoru //unutar jedne sekunde kako biste prošli nestabilno stanje delay(1000); println("Inicijalizacija DHT-a"); begin(); println("Inicijalizacija RTC-a"); begin(); setTime(sati, minute, sekunde); setDate(dan, mjesec, godina); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Sustav spreman..."); } 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 += "Temperatura: " + String(temperatura) + " C" + "\t" + "Vlažnost: " + String(vlažnost) + "%\t" + "Vrijeme: " + getTime(); Datoteka dataFile = SD.open("datalog.txt", FILE_WRITE); // ako je datoteka dostupna, zapiši u nju: if (dataFile) { println(dataString); close(); // ispiši i na serijski port: 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 += ":"; ako (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); inače returnString += String(rtc.getSeconds()); return returnString; }

Arduino Zero Robot

Arduino Zero Robot

Možete napraviti robota s Arduino pločomZa ovo će vam trebati adapter Arduino MKR2UNOArduino MotorShield Rev3 ploča, DC motor, žice i baterija 9V. Nakon što imate ove materijale, morat ćete ih sastaviti lijepljenjem motora, a zatim izradom spojeva naznačenih na dijelovima.

Zatim ćete morati unijeti ove kodove:

#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-knjige od IPAP
Ebooks IPAP

🔥PRIDRUŽITE SE🔥 NOVOJ IP@P ZAJEDNICI! PRIJAVITE SE OVDJE!

Teme

Autor: Félix Albornoz

Imam preko 20 godina iskustva rada u tehnološkom sektoru, pomažući tvrtkama i korisnicima da se razvijaju i obučavaju u ovom području. Uvijek učim nove stvari.

Povezano