Arduino Zero: Ano ito, para saan ito ginagamit, at sa anong mga proyekto sa pag-develop ito maaaring gamitin?

Huling pag-update: 15/09/2022
Arduino Zero: Ano ito, para saan ito ginagamit, at kung saang mga proyekto sa pag-develop ito maaaring gamitin.

Ang Arduino ZERO board Ito ay dinisenyo para sa mga gumagamit na Nagpapatupad sila ng mga proyektong hindi nila kayang suportahan ang klasikong Arduino UNOIto ay dahil sa kapasidad sa pagproseso ng MCU, ng flash memory, at ng CPU clock.

Kaya naman, mahalagang malaman mo kung ano ang mga Arduino ZERO board at kung para saan ginagamit ang mga board na ito sa electronics. Makikita mo ang impormasyong ito sa mga talata ng artikulong ito.

Gayundin, ipapakita namin sa iyo Ang mga pangunahing tampok ng board at ang mga pamantayan na dapat mong isaalang-alang kapag nagtatrabaho sa Arduino ZEROTingnan ang makapangyarihang motherboard na ito.

Ano ang mga Arduino Zero board at para saan ginagamit ang mga development board na ito sa electronics?

Ang plato Arduino ZERO Ito ay isang aparato na may elektronikong bus na kinabibilangan ng 32-bit na core na ATMEL Cortex-M0 SAMD21 MCUIto ay nailalarawan sa pamamagitan ng pagkakaroon ng pag-debug ng programa, o pag-debug, na ginagawang posible para sa user na hindi na kailanganin ang anumang panlabas na hardware.

Mayroon itong lahat ng kinakailangang teknolohiya para nagtatrabaho sa mga proyekto ng Internet of ThingsKinakailangang linawin na ang pagganap nito ay bahagyang mas mababa kaysa sa iba pang mga board, dahil Ang boltaheng sinusuportahan nito ay 3.3VLahat ng pin, maliban sa pin 4, Gumagana sila sa mga panlabas na pagkaantala ng uri 0 at 1. Sa kabilang banda, ang direktang kuryente, parehong input at output, ay 7 MA at ang bilis ng orasan ng CPU ay umaabot 48 MHz.

Mga Katangian: Ano ang mga pangunahing katangian ng Arduino board na ito?

Mga Katangian: Ano ang mga pangunahing katangian ng Arduino board na ito?

Ang mga pangunahing katangian ng Arduino board na ito ay: 

  • Ito ay mainam para sa pagtatrabaho sa robotics, sa automation at sa mga proyektong teknolohiya.
  • May nagmamay-ari a naka-embed na scrubber na kumokonekta sa hardware ng MCU na nagbibigay-daan sa iyong i-program ang SAMD21 sa pamamagitan ng isang interface SWD. Nagbibigay-daan din ito ng ganap na access sa microcontroller at ng kakayahang gumamit ng mga program code upang baguhin ang mga ito.
  • Ang panlabas na suplay ng kuryente na mayroon ang Arduino ZERO Ang kuryente ay ibinibigay sa pamamagitan ng isang center-positive connector o sa pamamagitan ng mga GND at VIN pin na matatagpuan sa header ng 2,1 mm connector na ito. Nangangahulugan ito na walang USB port para paganahin ang board.
  • Los Ang mga PWM ay 3, 4, 5, 6, 8, 9, 10, 11, 12 at 13habang ang mga analog input Pumasok na sila A0 hanggang A5Ang output voltage ay nasa DAC, na siyang channel A0.
  • Ang SPI ay matatagpuan sa SS, MOSI, MISO at SCK ng plato.
  • Mayroon siyang gumaganang relo. 48MHz, para mabilang mo ang totoong oras at ang kalendaryo.

Ano ang dapat kong tandaan kapag gumagamit ng Arduino ZERO boards?

Ano ang dapat kong tandaan kapag gumagamit ng Arduino ZERO boards?

Ang unang bagay na dapat mong malaman ay ang board Ang Arduino ZERO ay gumagana sa boltahe na 3.3VIto ay bahagyang mas mababa kaysa sa ibang mga motherboard. Kaya naman, dapat mong isaalang-alang ang paghihigpit na ito dahil maaari mong masira ang microprocessor at iba pang mga bahagi. Kapag Nagtatrabaho ka sa IDE at binuksan mo ang monitorHindi nagre-restart ang mga microcontroller at ang sketch execution, kaya kakailanganin mong i-restart ang proseso gamit ang isang button na matatagpuan sa software dashboard. Arduino.

Hindi ibinibigay ang kuryente sa pamamagitan ng USB inputMaaari nitong gawing kumplikado ang proyekto kung gusto mong gamitin ang 2,1mm connector para sa isa pang koneksyon sa circuit. Panghuli, Dapat kang maging maingat sa bilang ng mga prosesong iyong iniuugnay sa proyekto.Bagama't totoo na ang motherboard na ito ay mas nakahihigit sa lakas kaysa sa Arduino UNO At kung mayroon kang isang malakas na microcontroller, mahusay na memorya, at isang 48 MHz clock, dapat mong laging isaalang-alang ang load na inililipat mo dito.

Listahan ng mga pinakamahusay na proyekto na magagawa mo gamit ang mga Arduino ZERO board

Tuklasin ang pinakamahusay na mga proyektong maaari mong isagawa gamit ang isang Arduino ZERO board:

NeoPixel display na kinokontrol ng WiFi

NeoPixel display na kinokontrol ng WiFi

Sa proyektong ito, makakagawa ka ng isang screen ng NeoPixel pinamamahalaan ni WiFi Kakailanganin mo ng isa Arduino ZERO boardKakailanganin mo ng NeoPixel-type ring light, ilang LED, breadboard, 1000 µF capacitor, 475 ohm resistor, at mga wire para sa paggawa ng mga koneksyon. Ikaw mismo ang mag-assemble nito. pagsunod sa mga paglalarawan at detalye ng mga bahagi At kung isasaalang-alang ang mga pin sa board, alinsunod sa lahat ng ating tinalakay sa post na ito.

Kapag handa na ang assembly, kakailanganin mong ilagay ang sumusunod na code:

#isama #isama #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. Kulay (255, 0, 0); uint32_t asul = mga pixel. Kulay (0, 0, 255); uint32_t berde = mga pixel. Kulay (0, 255, 0); uint32_t pixelColour; uint32_t lastColor; float activeColor[] = {255, 0, 0}; IPAddress apIP(192, 168, 0, 150); IPAddress netMsk(255, 255, 255, 0); IP Address gw(192, 168, 0, 1); dns IP Address(192, 168, 0, 1); string IP; char APssid[] = "MKR1000"; char APpass[] = "MKR1000"; char ssid[] = "Iyong SSID"; char pass[] = "Iyong Password"; int keyIndex=0; int katayuan = WL_IDLE_STATUS; WiFiServer Server (80); const char html1 [] PROGMEM = "<! DOCTYPE html>  Tagapili ng Kulay ng 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: red; color: white;}. berde {likod: # 0C0; kulay: puti;}. asul {background: asul; kulay: puti;}" ".puti {background: puti; kulay: itim; hangganan: 1px solidong itim;}. naka-off {background: # 666; kulay: puti;}. colorpicker {background: puti; kulay: itim;}. colorWipe {font-size: 40px; background: linear-gradient(kanan, pula, #0C0, asul);} " ".theatreChase {font-size: 40px; background: linear-gradient(kanan, pula, itim, pula, itim, #0C0, itim, #0C0, itim, asul, itim, asul);}" ".rainbow {font-size: 40px; background: pula; background: linear-gradient(kanan, pula, kahel, dilaw, berde, asul, indigo, lila, pula, kahel, dilaw, berde, asul, indigo, lila) );} " ".rainbowCycle {font-size: 40px; background: pula; background: linear-gradient(kanan, pula, kahel, dilaw, berde, asul, indigo, lila);}" ".rainbowChase {font-size: 40px; background: pula; background: linear gradient (sa kanan, pula, itim, kahel, itim, dilaw, itim, berde, itim, asul, itim, indigo, itim, lila); } " ; const char html2 [] PROGMEM = ".breathe {background: asul; kulay: puti;}. silindro {likod: pula; kulay: itim;}. tibok ng puso {background: pula; kulay: puti;}. PASKO {laki ng font: 40px; background: pula; background: linear gradient (kanan, pula, berde, pula, berde, pula, berde, pula, berde, pula, berde, pula, berde, pula, berde, pula, berde);} " ".LAHAT {background: puti; kulay: asul;}. At {background: #EE0; taas: 100px; lapad: 100px; radius ng hangganan: 50px;}. B { background: #000; taas: 100px; lapad: 100px; border-radius: 50px;}. Isang {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)}};" // baguhin ang halaga ng website dito sa iyong static na website na "function myFunction () {document.getElementById ('brilloLevel'). isumite();} " " v = 1 '> Pula Kulay ng Punas " " Berde Theatre Chase " " Asul Bahaghari " " Puti Habol ng Bahaghari " ; const char html4 [] PROGRAM = " Cylon Chaser Siklo ng Bahaghari " " Huminga Tibok ng puso " " Pasko LAHAT ng Siklo " " Na-deactivate  " " " ; String sendHtml3 = html3 ; String sendHtml4 = html4 ; String currentLine; boolean NeoState[] = {mali, mali, mali, mali, mali, mali, mali, mali, mali, mali, mali, mali, mali, totoo}; //I-activate ang Tungkulin ng Neopixel (naka-off bilang default) 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 ; walang laman na configuration () { pixels . simula(); mga pixel. setBrightness (liwanag); writeLEDS (0, 0, 0); Serial. magsimula (9600); Serye. println(ssid); kung(WiFi. katayuan() == WL_NO_SHIELD) { Serye. println(F("Walang WiFi shield")); while(true); } WiFi. config(apIP); //WiFi.config(apIP, dns, gw, netMsk); habang(katayuan! = WL_CONNECTED) { para sa (int x = 0; x <= wifiRetryTimes; x++) { Serye. print(F("Sinusubukang kumonekta sa network na pinangalanang:")); Serial. println(ssid); } Serye. print(F("Hindi makakonekta sa Wifi")); estado = WiFi. beginAP (APssid); // lumikha ng AP - ang IP ay kasalukuyang static sa 192.168.1.1 // estado = WiFi.beginAP(APssid, APpass); delay (10000); break; } printWifiStatus (); sendHtml3. palitan ("#IPADDRESS", IP); ipadalaHtml4. palitan("#MAKALIWANAG", "150"); Serye. println(F("Nagsimula na ang USP Server!!" )); tagapagsilbi. simulan(); Serye. println(F("Nagsimula na ang HTTP server!!" )); } walang laman na loop() { WiFiClient Client = server . magagamit (); kung (kliyente) { println(F("bagong kliyente")); kasalukuyangLine = ""; habang (kliyente.konektado()) { kung (kliyente.magagamit()) { char c = kliyente.basahin(); Serye. isulat (c); kung (c == '\n') {klien. println("Uri ng nilalaman: teksto/html"); client. println(); kliyente. print(F(html1)); kostumer. print(F(html2)); kostumer. i-print (ipadalaHtml3); customer. i-print (ipadalaHtml4); customer. println(); break; } else { // kung mayroon itong bagong linya, kakailanganin mong burahin ang currentLine: if (currentLine. indexOf ("Referer") < 0) { // palaging gumaganap kung ang Referer ay wala sa ibinalik na halaga kung (currentLine. indexOf("/L00") > 0) { // kung ang /L00 ay nasa string na handle_L00(); // isagawa ang function } kung (currentLine. indexOf ("/L01") > 0) {handle_L01();} kung (currentLine. indexOf ("/L02") > 0) {handle_L02();} kung (currentLine. indexOf ("/L03") > 0) {handle_L03();} kung (currentLine. indexOf ("/L04") > 0) {handle_L04();} kung (currentLine. indexOf ("/L05") > 0) {handle_L05();} kung (currentLine. indexOf ("/L06") > 0) {handle_L06();} kung (currentLine. indexOf ("/L07") > 0) {handle_L07();} kung (currentLine. indexOf ("/L08") > 0) {handle_L08();} kung (currentLine. indexOf ("/L09") > 0) {handle_L09();} kung (currentLine. indexOf ("/L10") > 0) {handle_L10();} kung (currentLine. indexOf ("/L11") > 0) {handle_L11();} kung (currentLine. indexOf ("/L12") > 0) {handle_L12();} kung (currentLine. indexOf ("/L13") > 0) {handle_L13();} kung (currentLine. indexOf ("/L14") > 0) {handle_L14();} kung (currentLine. indexOf ("maliwanag") > 0) { handle_bright(); } } currentLine = ""; } } kung hindi man kung (c! = '\r') kasalukuyangLinya + = c; } kung (kasalukuyangLinya. endsWith("/generate_204")) { handle_root(); } } } // isinasara ang koneksyon: client. ihinto(); Serye. println(F("nadiskonekta ang kliyente")); } NeoPixModes(); }

Pagtatala ng mga halaga ng temperatura

Pagtatala ng mga halaga ng temperatura

Kakailanganin mo ng plato Arduino MKR Zero, isang 100 nF capacitor, isang 4.75 k ohm resistor, isang temperature at humidity sensor, isang insert board, mga kable, at isang MicroSD card. Ang proyektong ito ay gumagana upang mapanatili ang isang talaan ng mga halaga ng temperatura at halumigmig na naitala ng iyong aparato.

Kailangan mong tipunin ang Arduino gamit ang breadboardSusunod, ikonekta ang temperature at humidity sensor sa breadboard. Pagkatapos nito, kakailanganin mong ikonekta ang power pin ng sensor. sa pin ng VCC at sa wakas ay ikonekta ang pin ng data ng sensor sa pin 7Kapag natapos mo na, kakailanganin mong ikonekta ang ground pin ng humidity at temperature sensor sa pin GND mula sa plato Arduino. Susunod, ikokonekta mo ang kapasitor sa GND at pagtitiis.

Kapag tapos ka na, kakailanganin mong ilagay ang mga code na ito:

#isama #isama #isama #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("Halimbawa ng DataLogger:"); if (!SD.begin(chipSelect)) { println("Nabigo ang card, o wala"); return; } println("na-initialize ang card."); //Kapag may kuryenteng ibinibigay sa DHT22 sensor, //huwag magpadala ng anumang instruksyon sa sensor //sa loob ng isang segundo para maipasa ang hindi matatag na status delay(1000); println("Pagsisimula ng DHT"); begin(); println("Pagsisimula ng RTC"); begin(); setTime(oras, minuto, segundo); setDate(araw, buwan, taon); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Handa na ang sistema..."); } 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" + "Halumigmig: " + String(halumigmig) + "%\t" + "Oras: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // kung available ang file, sumulat dito: if (dataFile) { println(dataString); close(); // i-print din sa Serial port: println(dataString); } String getTime(void) { String returnString = ""; if (rtc.getHours() < 10) returnString += "0" + String(rtc.getHours()); kung hindi returnString += String(rtc.getHours()); returnString += ":"; if (rtc.getMinutes() < 10) returnString += "0" + String(rtc.getMinutes()); kung hindi returnString += String(rtc.getMinutes()); returnString += ":"; kung (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); kung hindi returnString += String(rtc.getSeconds()); return returnString; }

Arduino Zero Robot

Arduino Zero Robot

Maaari kang lumikha ng isang robot gamit ang isang Arduino boardPara dito kakailanganin mo ng adaptor Arduino MKR2UNOisang Arduino MotorShield Rev3 board, isang DC motor, mga wire, at isang baterya 9V Kapag mayroon ka nang mga materyales na ito, kakailanganin mong tipunin ang mga ito sa pamamagitan ng pagdidikit sa motor at pagkatapos ay gawin ang mga koneksyon na nakasaad sa mga bahagi.

Susunod, kakailanganin mong ilagay ang mga code na ito:

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

}
Mga Ebook ng IPAP
Ebook IPAP

🔥SUMALI🔥 SA BAGONG KOMUNIDAD NG IP@P! MAG-SIGN UP DITO!

Paksa

May-akda: Félix Albornoz

Mayroon akong mahigit 20 taon na karanasan sa pagtatrabaho sa sektor ng teknolohiya, pagtulong sa mga kumpanya at mga gumagamit na umunlad at magsanay sa larangang ito. Palagi akong natututo ng mga bagong bagay.

Kaugnay