Arduino Zero: O que é, para que serve e em que projetos de desenvolvimento pode ser utilizado?

Última atualização: 15/09/2022
Arduino Zero: O que é, para que serve e em que projetos de desenvolvimento pode ser utilizado.

A placa Arduino ZERO Ele foi projetado para usuários que Eles executam projetos que não conseguem apoiar. o clássico Arduino UNOIsso se deve à capacidade de processamento do microcontrolador, à memória flash e ao clock da CPU.

Portanto, é importante que você saiba o que são as placas Arduino ZERO e para que elas são usadas em eletrônica. Você pode encontrar essas informações nos parágrafos deste artigo.

Além disso, mostraremos a você Principais características da placa e critérios a considerar ao trabalhar com o Arduino ZEROConfira esta placa-mãe poderosa.

O que são placas Arduino Zero e para que servem essas placas de desenvolvimento em eletrônica?

A placa Arduino ZERO É um dispositivo que possui um barramento eletrônico que inclui um Microcontrolador ATMEL Cortex-M0 SAMD21 de 32 bits. Caracteriza-se por ter um depuração de programasou depurar, possibilitando ao usuário não precisar de nenhum hardware externo.

Possui toda a tecnologia necessária para Trabalhando em projetos de Internet das CoisasÉ necessário esclarecer que seu desempenho é ligeiramente inferior ao de outras placas, visto que A tensão que ele suporta é de 3.3 V.Todos os pinos, exceto o pino 4, Eles trabalham com interrupções externas. do tipo 0 e 1. Por outro lado, a corrente contínua, tanto de entrada quanto de saída, é 7 mA e a velocidade do clock da CPU atinge 48 MHz.

Características: Quais são as principais características desta placa Arduino?

Características: Quais são as principais características desta placa Arduino?

As principais características desta placa Arduino são: 

  • É ideal para trabalhar em Robótica, em automação e em projetos de tecnologia.
  • Tem um depurador embutido que se conecta ao hardware de MCU que permite programar o SAMD21 através de uma interface SWD. Isso também permite acesso total ao microcontrolador e a capacidade de trabalhar com códigos de programa para modificá-los.
  • A fonte de alimentação externa que o Arduino ZERO possui A alimentação é fornecida através de um conector com polaridade positiva no centro ou pelos pinos GND e VIN localizados no conector de 2,1 mm. Isso significa que não há porta USB para alimentar a placa.
  • Os Os valores PWM são 3, 4, 5, 6, 8, 9, 10, 11, 12 e 13.enquanto o entradas analógicas estão em A0 e A5A tensão de saída está no DAC, que é o canal A0.
  • O SPI está localizado em SS, MOSI, MISO e SCK do prato.
  • Ele possui um relógio que funciona. 48MHz, Assim, você pode contar o tempo real e o calendário.

O que devo ter em mente ao trabalhar com placas Arduino ZERO?

O que devo ter em mente ao trabalhar com placas Arduino ZERO?

A primeira coisa que você deve saber é que o tabuleiro O Arduino ZERO opera com uma tensão de 3.3 V.É ligeiramente inferior às outras placas-mãe. Portanto, você deve levar essa limitação em consideração, pois pode danificar o microprocessador e outros componentes. Quando Você trabalha no IDE (Ambiente de Desenvolvimento Integrado). e você abre o monitorOs microcontroladores e a execução do programa não são reiniciados, portanto, você precisará reiniciar o processo usando um botão encontrado no painel de controle do software. Arduino

A alimentação não é fornecida através de uma entrada USB.Isso pode complicar o projeto se você quiser usar o conector de 2,1 mm para outra conexão de circuito. Por fim, É preciso ter cuidado com o número de processos que você atribui ao projeto.Embora seja verdade que esta placa-mãe seja muito superior em potência à Arduino UNO E se você tiver um microcontrolador potente, boa memória e um clock de 48 MHz, deve sempre estar atento à carga que transfere para ele.

Lista dos melhores projetos que você pode fazer com placas Arduino ZERO

Descubra os melhores projetos que você pode realizar com uma placa Arduino ZERO:

Display NeoPixel controlado por Wi-Fi

Display NeoPixel controlado por Wi-Fi

Com este projeto, você poderá criar uma tela de NeoPixelGenericName gerenciado por WiFi. Você vai precisar de um. Placa Arduino ZEROVocê precisará de um anel de luz do tipo NeoPixel, vários LEDs, uma placa de ensaio, um capacitor de 1000 µF, um resistor de 475 ohms e fios para fazer as conexões. Você terá que montá-lo sozinho. seguindo as descrições e especificações das peças E considerando os pinos no quadro, de acordo com tudo o que discutimos nesta postagem.

Após a montagem estar pronta, você precisará inserir o seguinte código:

#incluir #incluir #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 . Cor ( 255 , 0 , 0 ); uint32_t azul = pixels . Cor ( 0 , 0 , 255 ); uint32_t verde = pixels . Cor ( 0 , 255 , 0 ); uint32_t corPixel ; uint32_t últimaCor ; float corAtiva [] = { 255 , 0 , 0 }; EndereçoIP apIP ( 192 , 168 , 0 , 150 ); EndereçoIP netMsk ( 255 , 255 , 255 , 0 ); EndereçoIP gw ( 192 , 168 , 0 , 1 ); EndereçoIP dns ( 192 , 168 , 0 , 1 ); string IP ; char ssidAP [] = "MKR1000" ; char senhaAP [] = "MKR1000" ; char ssid [] = "SeuSSID" ; char senha [] = "SuaSenha" ; int keyIndex = 0; int status = WL_IDLE_STATUS; WiFiServer Server(80); const char html1[] PROGMEM = "<! DOCTYPE html>  Seletor de cores 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;}. verde {fundo: # 0C0; cor: branco;}. azul {fundo: azul; cor: branco;}" ".branco {fundo: branco; cor: preto; borda: 1px sólida preta;}. desligado {fundo: # 666; cor: branco;}. Seletor de cores {fundo: branco; cor: preto;}. 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: gradiente linear (para a direita, vermelho, preto, laranja, preto, amarelo, preto, verde, preto, azul, preto, índigo, preto, violeta); } " ; const char html2 [] PROGMEM = ".breathe {background: blue; color: white;}. cylon {fundo: vermelho; cor: preto;}. batimento cardíaco {fundo: vermelho; cor: branca;}. NATAL {tamanho da fonte: 40px; fundo: vermelho; fundo: gradiente linear (direita, vermelho, verde, vermelho, verde, vermelho, verde, vermelho, verde, vermelho, verde, vermelho, verde);} " ".TODOS {fundo: branco; cor: azul;}. E {background: #EE0; height: 100px; width: 100px; border radius: 50px;}. B { fundo: #000; altura: 100px; largura: 100px; raio da borda: 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)}};" // altere o valor do site aqui para o seu site estático "function myFunction () {document.getElementById ('brilloLevel'). enviar();} " " v = 1 '> Vermelho Limpeza de cor " " Verde Perseguição no Teatro " " Azul Arco-íris " " Branco Perseguição do Arco-Íris " ; const char html4 [] PROGMEM = " Caçador de Cylons Ciclo do Arco-Íris " " Respirar Batimento cardíaco " " Natal Ciclo completo " " Desativado  " " " ; String sendHtml3 = html3 ; String sendHtml4 = html4 ; String currentLine; boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, false, true}; //Ativar função Neopixel (desativada por padrão) 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 . iniciar(); pixels . definirBrilho (brilho); escreverLEDs ( 0 , 0 , 0 ); Serial. início ( 9600 ); Serial . println ( ssid ); if ( WiFi . status () == WL_NO_SHIELD ) { Serial . println(F("Display WiFi não presente")); while(true); } WiFi. config ( apIP ); //WiFi.config(apIP, dns, gw, netMsk); while ( status ! = WL_CONNECTED ) { for ( int x = 0 ; x <= wifiRetryTimes ; x ++ ) { Serial . print(F("Tentando conectar à rede chamada:")); Serial. println ( ssid ); } Serial . print(F("Não foi possível conectar ao Wi-Fi")); estado = Wi-Fi. beginAP (APssid); // cria um AP - o IP é atualmente estático em 192.168.1.1 // state = WiFi.beginAP(APssid, APpass); delay ( 10000 ); break ; } printWifiStatus (); sendHtml3 . substituir ( "#IPADDRESS" , IP ); enviarHtml4 . substituir("#BRIGHT", "150"); Serial. println(F("Servidor USP iniciado!!" )); servidor . iniciar(); Serial. println(F("Servidor HTTP iniciado!!" )); } loop vazio () { WiFiClient Client = servidor . disponível(); se (cliente) { println(F("novo cliente")); linhaAtual = ""; enquanto (cliente.conectado()) { se (cliente.disponível()) { char c = cliente.ler(); Serial. escreva ( c ); se ( c == '\ n' ) { cliente . println("Tipo de conteúdo: text/html"); cliente. println(); cliente. imprimir(F(html1)); cliente . imprimir(F(html2)); cliente . imprimir (enviarHtml3); cliente . imprimir (enviarHtml4); cliente . println(); break; } else { // se houver uma nova linha, você terá que excluir currentLine: if (currentLine. indexOf ( "Referer" ) < 0 ) { // sempre executa se Referer não estiver no valor retornado if ( currentLine . indexOf("/L00") > 0) { // se /L00 estiver presente na string handle_L00(); // execute a função } 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 ; } se ( currentLine . endsWith("/generate_204")) { handle_root(); } } } // fecha a conexão: cliente. parar(); Serial. println(F("cliente desconectado")); } NeoPixModes(); }

Registro dos valores de temperatura

Registro dos valores de temperatura

Você vai precisar de um prato. Arduino MKR Zero, um capacitor de 100 nF, um resistor de 4.75 k ohm, um sensor de temperatura e umidade, uma placa de inserção, cabos e um cartão MicroSD. Este projeto tem como objetivo manter um registro dos valores de temperatura e umidade registrados pelo seu dispositivo.

Voce terá que Monte o Arduino com a placa de ensaio.Em seguida, conecte o sensor de temperatura e umidade à placa de ensaio. Depois disso, você precisará conectar o pino de alimentação do sensor. ao pino VCC e, finalmente, conecte o pino de dados do sensor ao pino 7.Ao terminar, você precisará conectar o pino de aterramento do sensor de umidade e temperatura ao pino GND do prato Arduino Em seguida, você conectará o capacitor ao GND e pela resistência.

Após concluir, você precisará inserir estes códigos:

#incluir #incluir #incluir #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("Exemplo de DataLogger:"); if (!SD.begin(chipSelect)) { println("Cartão falhou ou não está presente"); return; } println("Cartão inicializado."); //Quando a energia é fornecida ao sensor DHT22, //não envie nenhuma instrução ao sensor //dentro de um segundo para passar o status instável delay(1000); println("Inicializando DHT"); begin(); println("Inicializando RTC"); begin(); setTime(hours, minutes, seconds); setDate(day, month, year); setAlarmTime(0, 0, 0); enableAlarm(rtc.MATCH_SS); attachInterrupt(dataCheck); loadDataCheck=0; previousTime=millis(); println("Sistema pronto..."); } 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(temperature) + " C" + "\t" + "Umidade: " + String(humidity) + "%\t" + "Hora: " + getTime(); File dataFile = SD.open("datalog.txt", FILE_WRITE); // se o arquivo estiver disponível, escreva nele: if (dataFile) { println(dataString); close(); // imprima também na porta serial: 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()); senão returnString += String(rtc.getMinutes()); returnString += ":"; se (rtc.getSeconds() < 10) returnString += "0" + String(rtc.getSeconds()); senão returnString += String(rtc.getSeconds()); retorne returnString; }

Robô Arduino Zero

Robô Arduino Zero

Você pode criar um robô com uma placa Arduino.Para isso, você precisará de um adaptador. Arduino MKR2UNOuma placa Arduino MotorShield Rev3, um motor CC, fios e uma bateria. 9V. Depois de obter esses materiais, você terá que montá-los colando o motor e, em seguida, fazendo as conexões indicadas nas peças.

Em seguida, você precisará inserir estes códigos:

#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-books de IPAP
E-Books IPAP

🔥PARTICIPE🔥 DA NOVA COMUNIDADE IP@P! INSCREVA-SE AQUI!

Temas

Autor: Félix Albornoz

Tenho mais de 20 anos de experiência trabalhando no setor de tecnologia, ajudando empresas e usuários a se desenvolverem e se capacitarem nessa área. Estou sempre aprendendo coisas novas.

Relacionados