Arduino Zero: Nó là gì, được dùng để làm gì và có thể được sử dụng trong những dự án phát triển nào?

Cập nhật lần cuối: 15/09/2022
tác giả: Felix Albornoz
Arduino Zero: Nó là gì, được dùng để làm gì và có thể được sử dụng trong những dự án phát triển nào.

Bo mạch Arduino ZERO Nó được thiết kế dành cho những người dùng Họ thực hiện những dự án mà họ không đủ khả năng hỗ trợ. Arduino UNO cổ điểnĐiều này là do khả năng xử lý của MCU, bộ nhớ flash và xung nhịp CPU.

Do đó, điều quan trọng là bạn cần biết bo mạch Arduino ZERO là gì và chúng được sử dụng để làm gì trong lĩnh vực điện tử. Bạn có thể tìm thấy thông tin này trong các đoạn văn của bài viết này.

Ngoài ra, chúng tôi sẽ cho bạn thấy Các tính năng chính của bo mạch và các tiêu chí cần cân nhắc khi làm việc với Arduino ZEROHãy xem bo mạch chủ mạnh mẽ này.

Bo mạch Arduino Zero là gì và chúng được sử dụng để làm gì trong lĩnh vực điện tử?

Cái đĩa Arduino ZERO Đây là một thiết bị có bus điện tử bao gồm... Bộ vi xử lý SAMD21 lõi 32-bit ATMEL Cortex-M0Nó được đặc trưng bởi việc có một gỡ lỗi chương trìnhhoặc gỡ lỗi, cho phép người dùng không cần bất kỳ phần cứng bên ngoài nào.

Nó sở hữu tất cả các công nghệ cần thiết để đang làm việc trên các dự án Internet vạn vật (IoT).Cần làm rõ rằng hiệu năng của nó thấp hơn một chút so với các bo mạch khác, vì Điện áp hỗ trợ là 3.3V.Tất cả các chân cắm, trừ chân cắm số 4, Họ làm việc trong điều kiện có sự gián đoạn từ bên ngoài. thuộc loại 0 và 1. Mặt khác, dòng điện một chiều, cả đầu vào và đầu ra, là 7 mA và tốc độ xung nhịp CPU đạt đến 48 MHz.

Tính năng: Bo mạch Arduino này có những tính năng chính nào?

Tính năng: Bo mạch Arduino này có những tính năng chính nào?

Các tính năng chính của bo mạch Arduino này là: 

  • Nó rất lý tưởng để làm việc trong robot, trong tự động hóa và trong các dự án công nghệ.
  • Sở hữu một bộ lọc nhúng kết nối với phần cứng của MCU điều này cho phép bạn lập trình SAMD21 thông qua một giao diện SWD. Điều này cũng cho phép truy cập đầy đủ vào bộ vi điều khiển và khả năng làm việc với mã chương trình để sửa đổi chúng.
  • Bộ nguồn ngoài mà Arduino ZERO có Nguồn điện được cấp qua đầu nối có cực dương ở giữa hoặc qua các chân GND và VIN nằm trên đầu cắm của đầu nối 2,1 mm này. Điều này có nghĩa là không có cổng USB để cấp nguồn cho bo mạch.
  • Các Các giá trị PWM là 3, 4, 5, 6, 8, 9, 10, 11, 12 và 13.trong khi đầu vào tương tự Họ đang ở trong A0 đến A5Điện áp đầu ra nằm ở bộ chuyển đổi DAC, tức là kênh A0.
  • SPI nằm ở SS, MOSI, MISO và SCK của tấm.
  • Ông ấy sở hữu một chiếc đồng hồ vẫn hoạt động tốt. 48MHz, Vì vậy, bạn có thể tính toán thời gian thực và lịch.

Tôi cần lưu ý điều gì khi làm việc với bo mạch Arduino ZERO?

Tôi cần lưu ý điều gì khi làm việc với bo mạch Arduino ZERO?

Điều đầu tiên bạn cần biết là bảng Arduino ZERO hoạt động ở điện áp 3.3V.Mức độ lọc nhiễu này thấp hơn một chút so với các bo mạch chủ khác. Do đó, bạn phải lưu ý đến hạn chế này vì nó có thể làm hỏng bộ vi xử lý và các linh kiện khác. Khi Bạn làm việc trong môi trường phát triển tích hợp (IDE). và bạn mở màn hìnhCác vi điều khiển và quá trình thực thi chương trình sẽ không tự khởi động lại, vì vậy bạn cần khởi động lại quy trình bằng nút trên bảng điều khiển phần mềm. Arduino.

Nguồn điện không được cấp qua cổng USB.Điều này có thể làm phức tạp dự án nếu bạn muốn sử dụng đầu nối 2,1mm cho kết nối mạch khác. Cuối cùng, Bạn phải cẩn thận về số lượng quy trình mà bạn gán cho dự án.Mặc dù đúng là bo mạch chủ này có hiệu năng vượt trội hơn hẳn so với... UNO Arduino Và nếu bạn có một bộ vi điều khiển mạnh mẽ, bộ nhớ tốt và xung nhịp 48 MHz, bạn luôn phải lưu ý đến tải trọng mà bạn truyền tải đến nó.

Danh sách những dự án tốt nhất bạn có thể thực hiện với bo mạch Arduino ZERO.

Khám phá những dự án tuyệt vời nhất bạn có thể thực hiện với bo mạch Arduino ZERO:

Màn hình NeoPixel được điều khiển bằng WiFi

Màn hình NeoPixel được điều khiển bằng WiFi

Với dự án này, bạn sẽ có thể tạo ra một màn hình của NeoPixel được quản lý bởi WiFi Bạn sẽ cần một cái. Bo mạch Arduino ZEROBạn sẽ cần một đèn vòng loại NeoPixel, một vài đèn LED, một bảng mạch thử nghiệm (breadboard), một tụ điện 1000 µF, một điện trở 475 ohm và dây dẫn để kết nối. Bạn sẽ phải tự lắp ráp nó. tuân theo mô tả và thông số kỹ thuật của các bộ phận. Và xét đến các ghim trên bảng, phù hợp với tất cả những gì chúng ta đã thảo luận trong bài viết này.

Sau khi đã lắp ráp xong, bạn cần nhập đoạn mã sau:

#bao gồm #bao gồm #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 . Màu ( 255 , 0 , 0 ); uint32_t blue = pixels . Màu ( 0 , 0 , 255 ); uint32_t green = pixels . Color ( 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 [] = "YourSSID" ; char pass [] = "YourPassword" ; int keyIndex = 0 ; int status = WL_IDLE_STATUS ; WiFiServer Server ( 80 ); const char html1 [] PROGMEM = "<! DOCTYPE html>  Bộ chọn màu 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;}. màu xanh lá cây {background: # 0C0; color: white;}. ".màu xanh dương {background: blue; color: white;}" ".màu trắng {background: white; color: black; border: 1px solid black;}. tắt {background: # 666; color: white;}. Bộ chọn màu {nền: trắng; màu: đen;}. 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; background: linear gradient (to the right, red, black, orange, black, yellow, black, green, black, blue, black, indigo, black, violet); } " ; const char html2 [] PROGMEM = ".breathe {background: blue; color: white;}. Cylon {background: red; color: black;}. nhịp tim {nền: đỏ; màu: trắng;}. GIÁNG SINH {kích thước phông chữ: 40px; nền: đỏ; nền: gradient tuyến tính (phải, đỏ, xanh lá cây, đỏ, xanh lá cây, đỏ, xanh lá cây, đỏ, xanh lá cây, đỏ, xanh lá cây, đỏ, xanh lá cây);} " ".TẤT CẢ {nền: trắng; màu: xanh dương;}. Và {background: #EE0; height: 100px; width: 100px; border radius: 50px;}. B { background: #000; height: 100px; width: 100px; border-radius: 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)}};" // thay đổi giá trị trang web ở đây thành trang web tĩnh của bạn "function myFunction () {document.getElementById ('brilloLevel'). nộp();} " " v = 1 '> Đỏ Xóa màu " " Màu xanh lá Nhà hát Chase " " Màu xanh da trời Cầu vồng " " Trắng Cuộc rượt đuổi cầu vồng " ; const char html4 [] PROGMEM = " Kẻ săn đuổi Cylon Chu kỳ cầu vồng " " Thở Nhịp tim " " Giáng sinh Chu kỳ TẤT CẢ " " Đã vô hiệu hóa  " " " ; 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}; //Kích hoạt chức năng Neopixel (mặc định tắt) 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 . bắt đầu(); pixel. setBrightness (brightness); writeLEDS ( 0 , 0 , 0 ); Serial. bắt đầu ( 9600 ); Serial . println(ssid); if (WiFi. trạng thái () == WL_NO_SHIELD ) { Serial . println(F("Không có tấm chắn WiFi")); while(true); } WiFi. cấu hình ( apIP ); //WiFi.config(apIP, dns, gw, netMsk); trong khi ( trạng thái ! = WL_CONNECTED ) { for ( int x = 0 ; x <= wifiRetryTimes ; x ++ ) { Serial . print(F("Đang cố gắng kết nối với mạng có tên:")); Serial. println ( ssid ); } Serial . print(F("Không thể kết nối Wifi")); state = WiFi. beginAP (APssid); // tạo một AP - IP hiện tại là tĩnh tại 192.168.1.1 // state = WiFi.beginAP(APssid, APpass); delay ( 10000 ); break ; } printWifiStatus (); sendHtml3 . thay thế ( "#IPADDRESS" , IP ); sendHtml4 . thay thế("#BRIGHT", "150"); Serial. println(F("Máy chủ USP đã khởi động!!") )); máy chủ . bắt đầu(); Serial . println(F("Máy chủ HTTP đã khởi động!!") )); } vòng lặp trống () { WiFiClient Client = server . có sẵn(); nếu (client) { println(F("khách hàng mới")); currentLine = ""; trong khi (client.connected()) { nếu (client.available()) { char c = client.read(); Serial. viết ( c ); nếu ( c == '\ n' ) { client . println("Loại nội dung: text/html"); client. println(); client. print(F(html1)); khách hàng . print(F(html2)); khách hàng . in (sendHtml3); khách hàng . in (sendHtml4); khách hàng . println(); break; } else { // nếu có dòng mới, bạn phải xóa currentLine: if (currentLine. indexOf ( "Referer" ) < 0 ) { // luôn thực hiện nếu Referer không có trong giá trị trả về if ( currentLine . indexOf("/L00") > 0) { // nếu /L00 có trong chuỗi handle_L00(); // thực thi hàm } if (currentLine. indexOf ( "/L01" ) > 0 ) { handle_L01 (); } if ( currentLine . indexOf ( "/L02" ) > 0 ) { handle_L02 (); } if ( currentLine . indexOf ( "/L03" ) > 0 ) { handle_L03 (); } if ( currentLine . indexOf ( "/L04" ) > 0 ) { handle_L04 (); } if ( currentLine . indexOf ( "/L05" ) > 0 ) { handle_L05 (); } if ( currentLine . indexOf ( "/L06" ) > 0 ) { handle_L06 (); } if ( currentLine . indexOf ( "/L07" ) > 0 ) { handle_L07 (); } if ( currentLine . indexOf ( "/L08" ) > 0 ) { handle_L08 (); } if ( currentLine . indexOf ( "/L09" ) > 0 ) { handle_L09 (); } if ( currentLine . indexOf ( "/L10" ) > 0 ) { handle_L10 (); } if ( currentLine . indexOf ( "/L11" ) > 0 ) { handle_L11 (); } if ( currentLine . indexOf ( "/L12" ) > 0 ) { handle_L12 (); } if ( currentLine . indexOf ( "/L13" ) > 0 ) { handle_L13 (); } if ( currentLine . indexOf ( "/L14" ) > 0 ) { handle_L14 (); } if ( currentLine . indexOf("bright") > 0) { handle_bright(); } } currentLine = ""; } } else if (c ! = '\r' ) currentLine + = c ; } if ( currentLine . endsWith("/generate_204")) { handle_root(); } } } // đóng kết nối: client. dừng(); Serial . println(F("client disconnected")); } NeoPixModes(); }

Ghi lại các giá trị nhiệt độ

Ghi lại các giá trị nhiệt độ

Bạn sẽ cần một cái đĩa. Arduino MKR ZeroBao gồm: một tụ điện 100 nF, một điện trở 4.75 kΩ, một cảm biến nhiệt độ và độ ẩm, một bo mạch chèn, dây cáp và một thẻ MicroSD. Dự án này nhằm mục đích ghi lại các giá trị nhiệt độ và độ ẩm được thiết bị của bạn ghi nhận.

Bạn sẽ phải Lắp ráp Arduino với bảng mạch thử nghiệm (breadboard).Tiếp theo, kết nối cảm biến nhiệt độ và độ ẩm với bảng mạch thử nghiệm. Sau đó, bạn cần kết nối chân nguồn của cảm biến. nối với chân VCC và cuối cùng nối chân dữ liệu của cảm biến với chân 7.Khi hoàn thành, bạn cần kết nối chân nối đất của cảm biến độ ẩm và nhiệt độ với chân đó. GND từ đĩa Arduino. Tiếp theo, bạn sẽ kết nối tụ điện với... GNDsức bền.

Sau khi hoàn tất, bạn cần nhập các mã này:

#bao gồm #bao gồm #bao gồm #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("Ví dụ về DataLogger:"); if (!SD.begin(chipSelect)) { println("Thẻ bị lỗi hoặc không có"); return; } println("Thẻ đã được khởi tạo."); //Khi cấp nguồn cho cảm biến DHT22, //không gửi bất kỳ lệnh nào đến cảm biến //trong vòng một giây để vượt qua trạng thái không ổn định delay(1000); println("Khởi tạo DHT"); begin(); } println("Khởi tạo RTC"); begin(); setTime(giờ, phút, giây); setDate(ngày, tháng, năm); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Hệ thống sẵn sàng..."); } 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 += "Nhiệt độ: " + String(temperature) + "°C" + "\t" + "Độ ẩm: " + String(humidity) + "%\t" + "Thời gian: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // Nếu tệp có sẵn, hãy ghi vào đó: if (dataFile) { println(dataString); close(); // In ra cổng nối tiếp: 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 += ":"; if (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); else returnString += String(rtc.getSeconds()); return returnString; }

Robot Arduino Zero

Robot Arduino Zero

Bạn có thể tạo ra một con robot bằng bo mạch Arduino.Để làm điều này, bạn sẽ cần một bộ chuyển đổi. Arduino MKR2UNOMột bo mạch Arduino MotorShield Rev3, một động cơ DC, dây dẫn và một cục pin. 9V. Sau khi có đủ các vật liệu này, bạn sẽ phải lắp ráp chúng bằng cách dán động cơ và sau đó thực hiện các kết nối theo chỉ dẫn trên các bộ phận.

Tiếp theo, bạn cần nhập các mã này:

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

}
Sách điện tử của IPAP
Ebooks IPAP

🔥THAM GIA🔥 CỘNG ĐỒNG IP@P MỚI! ĐĂNG KÝ TẠI ĐÂY!

Chủ đề

Tác giả: Félix Albornoz

Tôi có hơn 20 năm kinh nghiệm làm việc trong lĩnh vực công nghệ, hỗ trợ các công ty và người dùng phát triển và đào tạo trong lĩnh vực này. Tôi luôn luôn học hỏi những điều mới.

Có liên quan