Arduino Zero: Co to je, k čemu se používá a v jakých vývojových projektech se dá použít?

Poslední aktualizace: 15/09/2022
Arduino Zero: Co to je, k čemu se používá a v jakých vývojových projektech se dá použít.

Deska Arduino ZERO Je určen pro ty uživatele, kteří Realizují projekty, které nemohou udržet klasické Arduino UNOTo je způsobeno výpočetní kapacitou MCU, flash pamětí a taktem CPU.

Proto je důležité, abyste věděli, co jsou desky Arduino ZERO a k čemu se tyto desky v elektronice používají. Tyto informace naleznete v odstavcích tohoto článku.

Také vám ukážeme Hlavní vlastnosti desky a kritéria, která byste měli zvážit při práci s Arduinem ZEROPodívejte se na tuto výkonnou základní desku.

Co jsou desky Arduino Zero a k čemu se tyto vývojové desky používají v elektronice?

Talíř Arduino NULA Jedná se o zařízení, které má elektronickou sběrnici, která obsahuje 32bitový mikrokontrolér ATMEL Cortex-M0 SAMD21Je charakterizován tím, že má ladění programunebo ladění, což uživateli umožňuje nepotřebovat žádný externí hardware.

Disponuje veškerou potřebnou technologií k tomu, práce na projektech internetu věcíJe nutné objasnit, že jeho výkon je o něco nižší než u jiných desek, protože Podporované napětí je 3.3 VVšechny piny, kromě pinu 4, Pracují s vnějšími přerušeními typu 0 a 1. Na druhou stranu, stejnosměrný proud, jak vstupní, tak výstupní, je 7 mA a taktovací frekvence CPU dosáhne 48 MHz.

Vlastnosti: Jaké jsou hlavní vlastnosti této desky Arduino?

Vlastnosti: Jaké jsou hlavní vlastnosti této desky Arduino?

Hlavní vlastnosti této desky Arduino jsou: 

  • Je ideální pro práci v robotice, automatizaci a technologických projektech.
  • Vlastní a vložený scrubber který se připojuje k hardwaru MCU který vám umožňuje naprogramovat SAMD21 přes rozhraní SWD (Silniční pohon). To také umožňuje plný přístup k mikrokontroléru a možnost pracovat s programovými kódy a upravovat je.
  • Externí napájecí zdroj, který má Arduino ZERO Napájení je dodáváno přes kladný středový konektor nebo přes piny GND a VIN umístěné na hlavičce tohoto 2,1mm konektoru. To znamená, že deska není napájena žádným USB portem.
  • L PWM jsou 3, 4, 5, 6, 8, 9, 10, 11, 12 a 13zatímco analogové vstupy jsou uvnitř A0 až A5Výstupní napětí je na DAC, což je kanál A0.
  • SPI se nachází v SS, MOSI, MISO a SCK talíře.
  • Vlastní funkční hodinky. 48MHz, takže můžete počítat reálný čas a kalendář.

Na co si mám dát pozor při práci s deskami Arduino ZERO?

Na co si mám dát pozor při práci s deskami Arduino ZERO?

První věc, kterou byste měli vědět, je, že deska Arduino ZERO pracuje s napětím 3.3 VJe o něco nižší než u ostatních základních desek. Proto je nutné toto omezení vzít v úvahu, protože byste mohli poškodit mikroprocesor a další komponenty. Kdy Pracujete v IDE a otevřeš monitorMikrokontroléry a provádění náčrtu se nerestartují, takže budete muset proces restartovat pomocí tlačítka na softwarovém dashboardu. Arduino.

Napájení není dodáváno přes USB vstupTo by mohlo projekt zkomplikovat, pokud chcete použít 2,1mm konektor pro připojení jiného obvodu. A konečně, Musíte si dávat pozor na počet procesů, které projektu přiřazujete.I když je pravda, že tato základní deska je co do výkonu mnohem lepší než Arduino UNO A pokud máte výkonný mikrokontrolér, dobrou paměť a 48 MHz hodiny, měli byste si vždy dávat pozor na zátěž, kterou na něj přenášíte.

Seznam nejlepších projektů, které můžete realizovat s deskami Arduino ZERO

Objevte nejlepší projekty, které můžete realizovat s deskou Arduino ZERO:

Displej NeoPixel ovládaný přes WiFi

Displej NeoPixel ovládaný přes WiFi

S tímto projektem budete moci vytvořit obrazovku NeoPixel spravováno WiFi. Budeš jeden potřebovat Deska Arduino ZEROBudete potřebovat kruhové světlo typu NeoPixel, několik LED diod, nepájivé pole, kondenzátor 1000 µF, rezistor 475 ohmů a vodiče pro zapojení. Budete si ho muset sestavit sami. podle popisů a specifikací dílů A s ohledem na piny na desce, v souladu se vším, co jsme v tomto příspěvku probrali.

Jakmile budete mít sestavu připravenou, budete muset zadat následující kód:

#zahrnout #zahrnout #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. Barva (255, 0, 0); uint32_t modrá = pixely. Barva (0, 0, 255); uint32_t zelená = pixely. Barva (0, 255, 0); uint32_t pixelColor; uint32_t lastColor; float activeColor[] = {255, 0, 0}; IPAdresa apIP(192, 168, 0, 150); IPAdresa 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šeSSID"; char pass[] = "VašeHeslo"; int keyIndex = 0; int status = WL_IDLE_STATUS; WiFiServer Server (80); const char html1 [] PROGMEM = "<! TYP DOC html>  Výběr barev Neopixel </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;}. zelená {pozadí: # 0C0; barva: bílá;}. modrá {pozadí: modrá; barva: bílá;}" ".bílá {pozadí: bílá; barva: černá; ohraničení: 1px plná černá;}. vypnuto {pozadí: # 666; barva: bílá;}. colorPicker {pozadí: bílá; barva: černá;}. colorWipe {font-size: 40px; background: linear-gradient(pravá, červená, #0C0, modrá);} " ".theatreChase {font-size: 40px; background: linear-gradient(pravá, červená, černá, červená, černá, #0C0, černá, #0C0, černá, modrá, černá, modrá);} " ".rainbow {font-size: 40px; background: červená; background: linear-gradient(pravá, červená, oranžová, žlutá, zelená, modrá, indigo, fialová, červená, oranžová, žlutá, zelená, modrá, indigo, fialová) );} " ".rainbowCycle {font-size: 40px; background: červená; background: linear-gradient(pravá, červená, oranžová, žlutá, zelená, modrá, indigo, fialová);} " ".rainbowChase {font-size: 40px; background: červená; pozadí: lineární gradient (vpravo, červená, černá, oranžová, černá, žlutá, černá, zelená, černá, modrá, černá, indigo, černá, fialová); } " ; const char html2 [] PROGMEM = ".breathe {pozadí: modrá; barva: bílá;}. cylon {pozadí: červené; barva: černá;}. tlukot srdce {pozadí: červená; barva: bílá;}. VÁNOCE {velikost písma: 40px; pozadí: červená; pozadí: lineární přechod (vpravo, červená, zelená, červená, zelená, červená, zelená, červená, zelená, červená, zelená, červená, zelená);} " ".VŠE {pozadí: bílá; barva: modrá;}. A {pozadí: #EE0; výška: 100px; šířka: 100px; poloměr ohraničení: 50px;}. B { pozadí: #000; výška: 100px; šířka: 100px; poloměr okraje: 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)}};" // změňte hodnotu webu zde na váš statický web "function myFunction () {document.getElementById ('brilloLevel'). předložit();} "" v = 1 '> Červená Barevné utírání "" Zelený Divadelní honička "" Modrý Duha "" Bílý Duhová honička " ; const char html4 [] PROGMEM = " Cylonský pronásledovatel Duhový cyklus "" Dýchat Srdeční tep "" Vánoce VŠECHNY cyklus "" Deaktivováno  "" " ; 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, true }; //Aktivace funkce Neopixel (ve výchozím nastavení vypnuta) 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(); pixely. setBrightness(jas); writeLEDS(0, 0, 0); Serial. začátek (9600); Sériové číslo. println(ssid); pokud (WiFi). status () == WL_NO_SHIELD ) { Sériové číslo . println(F("Štít WiFi není k dispozici")); while(true); } WiFi. config(apIP); //WiFi.config(apIP, dns, gw, netMsk); while (status !) = WL_CONNECTED) { pro (int x = 0; x <= wifiRetryTimes; x++) { Sériové číslo. print(F("Pokus o připojení k síti s názvem:")); Sériové. println(ssid); } Sériové číslo. print(F("Nepodařilo se připojit k Wi-Fi")); state = WiFi. beginAP(APssid); // vytvoření AP - IP adresa je aktuálně statická na 192.168.1.1 // state = WiFi.beginAP(APssid, APpass); delay(10000); break; } printWifiStatus(); sendHtml3. nahradit("#IPADRESA", IP); sendHtml4. replace("#BRIGHT", "150"); Sériové číslo. println(F("Server USP spuštěn!!" server. begin(); Sériové číslo. println(F("HTTP server spuštěn!!" )); } prázdná smyčka () { WiFiClient Klient = server . dostupný(); pokud (klient) { println(F("nový klient")); aktuálnířádek = ""; while (klient.připojen()) { pokud (klient.dostupný()) { char c = klient.čtení(); Sériové. write(c); pokud(c == '\n') {client. println("Typ obsahu: text/html"); klient. println(); klient. tisk(F(html1)); zákazník . tisk(F(html2)); zákazník . tisk (sendHtml3); zákazník . tisk (sendHtml4); zákazník . println(); break; } else { // pokud má nový řádek, budete muset smazat currentLine: if (currentLine. indexOf("Referer") < 0) { // provede se vždy, pokud Referer není ve vrácené hodnotě if (currentLine). indexOf("/L00") > 0) { // pokud je /L00 přítomen v řetězci handle_L00(); // spustí funkci } if (currentLine. indexOf("/L01") > 0) { handle_L01(); } pokud (currentLine). indexOf("/L02") > 0) { handle_L02(); } pokud (currentLine). indexOf("/L03") > 0) { handle_L03(); } pokud (currentLine). indexOf("/L04") > 0) { handle_L04(); } pokud (currentLine). indexOf("/L05") > 0) { handle_L05(); } pokud (currentLine). indexOf("/L06") > 0) { handle_L06(); } pokud (currentLine). indexOf("/L07") > 0) { handle_L07(); } pokud (currentLine). indexOf("/L08") > 0) { handle_L08(); } pokud (currentLine). indexOf("/L09") > 0) { handle_L09(); } pokud (currentLine). indexOf("/L10") > 0) { handle_L10(); } pokud (currentLine). indexOf("/L11") > 0) { handle_L11(); } pokud (currentLine). indexOf("/L12") > 0) { handle_L12(); } pokud (currentLine). indexOf("/L13") > 0) { handle_L13(); } pokud (currentLine). indexOf("/L14") > 0) { handle_L14(); } pokud (currentLine). indexOf("bright") > 0) { handle_bright(); } } currentLine = "" ; } } else if (c !) = '\r') aktuálníŘádek + = c; } pokud (aktuálníŘádek). endsWith("/generate_204")) { handle_root(); } } } // ukončí spojení: klient. stop(); Sériové číslo. println(F("klient odpojen")); } NeoPixModes(); }

Záznam teplotních hodnot

Záznam teplotních hodnot

Budeš potřebovat talíř Arduino MKR Zero, kondenzátor 100 nF, rezistor 4.75 kΩ, senzor teploty a vlhkosti, vkládací deska, kabely a karta MicroSD. Tento projekt slouží k zaznamenávání hodnot teploty a vlhkosti zaznamenaných vaším zařízením.

Budeš muset sestavte Arduino s nepájivým polemDále připojte senzor teploty a vlhkosti k nepájivé desce. Poté budete muset připojit napájecí pin senzoru. k pinu VCC a nakonec připojte datový pin senzoru k pinu 7Po dokončení budete muset připojit uzemňovací pin senzoru vlhkosti a teploty k pinu GND z talíře Arduino. Dále připojíte kondenzátor k GND a vytrvalost.

Jakmile budete hotovi, budete muset zadat tyto kódy:

#zahrnout #zahrnout #zahrnout #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("Příklad datového záznamníku:"); if (!SD.begin(chipSelect)) { println("Karta selhala nebo není přítomna"); return; } println("karta inicializována."); //Pokud je senzor DHT22 napájen, //neodesílat do senzoru žádné instrukce //během jedné sekundy, aby se překonala zpoždění nestabilního stavu (1000); println("Inicializace DHT"); begin(); println("Inicializace RTC"); begin(); setTime(hodiny, minuty, sekundy); setDate(den, měsíc, rok); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Systém připraven..."); } 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 += "Teplota: " + String(temperature) + " C" + "\t" + "Vlhkost: " + String(humidity) + "%\t" + "Čas: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // pokud je soubor dostupný, zapíše se do něj: if (dataFile) { println(dataString); close(); // vypíše se i na sériový 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 += ":"; pokud (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); else returnString += String(rtc.getSeconds()); return returnString; }

Arduino Zero Robot

Arduino Zero Robot

S deskou Arduino si můžete vytvořit robotaK tomu budete potřebovat adaptér Arduino MKR2UNOdeska Arduino MotorShield Rev3, stejnosměrný motor, vodiče a baterie 9V. Jakmile budete mít tyto materiály, budete je muset sestavit slepením motoru a následným provedením spojů vyznačených na dílech.

Dále budete muset zadat tyto kódy:

#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-knihy IPAP
Ebooks IPAP

🔥PŘIDEJTE SE🔥 K NOVÉ KOMUNITĚ IP@P! ZAREGISTRUJTE SE ZDE!

Témata

Autor: Félix Albornoz

Mám více než 20 let zkušeností s prací v technologickém sektoru, kde pomáhám firmám a uživatelům s rozvojem a školením v této oblasti. Neustále se učím nové věci.

Příbuzný