Mudanças entre as edições de "MCO018703 2018 2 AULA10"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '=Apresentação= O objetivo das próximas aulas é o de exercitar a capacidade de vocês trabalharem em equipe na resolução de problemas utilizando o Arduíno. Vamos propor al...')
 
 
(17 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Apresentação=
+
=Introdução=
  
O objetivo das próximas aulas é o de exercitar a capacidade de vocês trabalharem em equipe na resolução de problemas utilizando o Arduíno. Vamos propor alguns experimentos para vocês "melhorarem" e executarem em sala de aula. Abaixo, apresento algumas tecnologias disponíveis em nosso almoxarifado para que vocês pesquisem e utilizem nas soluções dos problemas. Caso uma equipe conseguir terminar o seu trabalho numa aula, poderá executar testar outra tecnologia.
+
Assim como a IDE, que já vem com diversas funções pré-definidas, o Arduino possui outras '''bibliotecas''' para controle
 +
de servomotores, displays LCD, geração de áudio, recepção de sinais de sensores e outros dispositivos (como teclado PS/2), dentre muitas outras funções.
  
 +
E quem pensa que essa estensibilidade toda se restringe ao software está muito enganado: o Arduino possui o que chamamos de ''shields'', que são placas que se acoplam à placa original, agregando funcionalidades à mesma.
  
Prof. Douglas A.
+
Existem ''shields'' dos mais variados tipos, para as mais diversas funções: [http://playground.arduino.cc/Main/SimilarBoards Lista oficial].  
  
=Display LCD 16x2=
+
Alguns servem como entrada, outros como saída, e ainda outros como entrada e saída.
  
 +
Com os shields conseguimos, por exemplo, fazer o Arduino se comunicar numa rede Ethernet, ou ainda transmitir dados para qualquer dispositivo via Bluetooth, Wi-Fi ou Zigbee.
  
A shield LCD 16x2 com keypad (teclado) pode ser utilizada para selecionar uma opção em um menu, digitar uma senha ou até mesmo controlar os passos de um robô. As aplicações são as mais diversas. Na Figura abaixo vemos a Shield LCD 16x2 com 5 botões customizáveis.
+
Existem [http://blog.fazedores.com/conheca-os-shields-e-incremente-seu-arduino-com-eles/ ''shields''] com circuitos integrados prontos para controlarmos motores, sem que precisemos nos preocupar com complicações eletrônicas envolvidas, outros possuem leitor de cartão SD, acelerômetro, GPS e diversos outros sensores que podem gerar dados importantes para o software que está rodando no microcontrolador.
  
[[imagem:Fig030_MCO18703.png|450px|center]]
 
  
Possui um display LCD 16x2 com backlight azul, e 5 botões, além de um botão de reset do Arduino. O ajuste do contraste é feito pelo parafuso do trimpot. Além disso, a placa possui furos para soldagem de barras de pinos, para, por exemplo, colocar um sensor de temperatura.
+
[[imagem:Fig007_MCO18703.jpg|445px|center]]
 +
<center>
 +
Figura 1 - Arduíno com Shield acoplada.
 +
</center>
  
Esta shield utiliza alguns pinos diferentes dos que usamos normalmente nos projetos para ligar um LCD. Nesta shield teremos que usar a seguinte sequência ao inicializar a biblioteca LiquidCrystal:
 
<pre>
 
LiquidCrystal lcd(8,9,4,5,6,7); // RS,E,D4,D5,D6,D7
 
</pre>
 
  
A tabela abaixo mostra a relação entre os pinos do Arduino e os sinais do display:
+
Existem também outros ''shields'' mais elaborados, que são sistemas completos.
  
 +
[[imagem:Fig008_MCO18703.png|500px|center]]
 
<center>
 
<center>
{| class="wikitable"
+
Figura 2 - Shields são placas para acoplar ao Arduíno visando expandir suas funcionalidades.
! style="text-align: center; background-color:#1E90FF;" | Pino
 
! style="text-align: center; background-color:#1E90FF;" | Sinal do Display
 
|-
 
| style="text-align: center;" | 4
 
| style="text-align: center;" | DB4
 
|-
 
| style="text-align: center;" | 5
 
| style="text-align: center;" | DB5
 
|-
 
| style="text-align: center;" | 6
 
| style="text-align: center;" | DB6
 
|-
 
| style="text-align: center;" | 7
 
| style="text-align: center;" | DB7
 
|-
 
| style="text-align: center;" | 8
 
| style="text-align: center;" | RS
 
|-
 
| style="text-align: center;" | 9
 
| style="text-align: center;" | Enable
 
|}
 
 
</center>
 
</center>
  
Os botões da shield usam uma única porta analógica, A0. A Figura abaixo mostra uma associação de resistores para determinar qual botão foi pressionado:
+
[[imagem:Fig010_MCO18703.png|500px|center]]
 
 
[[imagem:Fig031_MCO18703.png|400px|center]]
 
 
 
;Nota: Não podemos utilizar essas portas descritas para outras funções enquanto estivermos utilizando essa shield. O pino 10 também é utilizado pela placa para uma função específica, no caso o backlight, e não deve ser utilizado nos programas.
 
 
 
Para o programa de teste abaixo, é necessário o uso da biblioteca LiquidCrystal, e para determinar qual botão foi pressionado, faremos a leitura da porta analógica A0:
 
 
 
<syntaxhighlight lang=c>
 
#include <LiquidCrystal.h> 
 
 
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
 
 
 
void setup() 
 
 
lcd.begin(16, 2); 
 
lcd.setCursor(0,0); 
 
lcd.print("Bem vindo!"); 
 
lcd.setCursor(0,1); 
 
lcd.print("Tecle: "); 
 
 
 
 
void loop() 
 
 
int botao; 
 
botao = analogRead (0);  //Leitura do valor da porta analógica A0
 
lcd.setCursor(8,1); 
 
if (botao < 100) { 
 
  lcd.print ("Direita "); 
 
 
else if (botao < 200) { 
 
  lcd.print ("Cima    "); 
 
 
else if (botao < 400){ 
 
  lcd.print ("Baixo  "); 
 
 
else if (botao < 600){ 
 
  lcd.print ("Esquerda"); 
 
 
else if (botao < 800){ 
 
  lcd.print ("Select  "); 
 
 
}
 
</syntaxhighlight>
 
 
 
==Desafio==
 
 
 
Tente incluir uma animação no display!
 
 
 
<syntaxhighlight lang=c>
 
//Rolagem para a esquerda
 
  for (int posicao = 0; posicao < 3; posicao++)
 
  {
 
    lcd.scrollDisplayLeft();
 
    delay(300);
 
  }
 
 
 
  //Rolagem para a direita
 
  for (int posicao = 0; posicao < 6; posicao++)
 
  {
 
    lcd.scrollDisplayRight();
 
    delay(300);
 
  }
 
</syntaxhighlight>
 
 
 
=Sensor LM35=
 
 
 
O Sensor de Temperatura LM35 é um sensor de precisão, que apresenta uma saída de tensão linear relativa à temperatura em que ele se encontrar no momento em que for alimentado por uma tensão de 4-20Vdc e GND, tendo em sua saída um sinal de 10mV para cada Grau Celsius de temperatura, sendo assim, apresenta uma boa vantagem com relação aos demais sensores de temperatura.
 
 
 
[[imagem:Fig032_MCO18703.png|200px|center]]
 
 
 
O LM35 não necessita de qualquer calibração externa, valores temperatura com variações de 0,25ºC ou até mesmo 0,75ºC dentro da faixa de temperatura de –55ºC à 150ºC. Este sensor tem saída com baixa impedância, tensão linear e calibração inerente precisa, fazendo com que o interfaceamento de leitura seja especificamente simples e o custo do sistema como um todo seja significantemente baixo.
 
 
 
Consumo: este sensor drena apenas 60μA, sendo assim seu auto-aquecimento é de aproximadamente 0.1ºC ao ar livre.
 
 
 
 
<center>
 
<center>
{| class="wikitable"
+
Figura 3 - Várias Shields permitem a sobreposição de outros Shiels.
! colspan="2" style="font-weight:bold;background-color:#1E90FF;" | Dados técnicos:
 
|-
 
| Descrição do fabricante
 
| LM35
 
|-
 
| Tensão de Alimentação
 
| 4 - 30VDC
 
|-
 
| Escala de medição
 
| ºC - (Celsius)
 
|-
 
| Fator de escala
 
| 10mV / ºC
 
|-
 
| Range de resposta
 
| -55ºC à 150ºC
 
|-
 
| Precisão
 
| 0,5ºC
 
|-
 
| Consumo de corrente máximo
 
| 60uA
 
|-
 
| Datasheet
 
| [http://www.alldatasheet.com/datasheet-pdf/pdf/517588/TI1/LM35.html LM-35]
 
|}
 
 
</center>
 
</center>
  
;Exemplo: O código abaixo faz a média de 8 leituras e depois envia pela serial juntamente maior valor e menor valor lido:
 
  
<syntaxhighlight lang=c>
+
Um deles, por exemplo, cria uma plataforma para desenvolvimento de jogos no Arduino: o '''Video Game Shield10''', que possui uma saída RCA
// Pino analogico para ligacao do LM35
+
e duas entradas para controles Numchuck do Nintendo Wii.
int pin = 0;
 
  
// Variaveis que armazenam a temperatura em Celsius e Fahrenheit
+
Além do hardware, existe uma biblioteca para ser utilizada em conjunto, que já possui várias funções pré-programadas para fazermos desenhos na televisão e capturar os dados dos movimentos nos controles.
int tempc = 0,tempf=0;
 
  
// Array para precisão na medição
+
=Shields=
int samples[8];
 
  
// Variáveis que guardam a temperatura máxima e mínima
+
Shields são placas de circuito que podem ser conectadas ao Arduino, encaixando-se perfeitamente por cima dele, e expandindo suas capacidades. Estas placas podem conter, por exemplo: displays de LCD, sensores, módulos de comunicação ou relês. A capacidade de expansão possibilita uma infinidade de aplicações de maneira simples e rápida. E mesmo com a enorme gama de ''shields'' já disponíveis no mercado. A seguir vamos falar de algumas ''shields''.
int maxtemp = -100,mintemp = 100;
 
  
int i;
+
==Arduino Ethernet Shield R3==
  
void setup()
+
O Arduino Ethernet Shield foi especificado para conectar o Arduino a uma rede local e é a maneira mais simples e barata de ligar o Arduino à internet. A versão atual do Arduino Ethernet Sheild oficial também contém um leitor de cartões micro-SD.
{
 
  Serial.begin(9600); // Inicializa comunicação serial
 
}
 
  
void loop()
+
[[imagem:Fig050_MCO18703.png|300px|center]]
{
 
  // Loop que faz a leitura da temperatura 8 vezes
 
  for(i = 0;i<=7;i++)
 
  {
 
    samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
 
    //A cada leitura, incrementa o valor da variavel tempc
 
    tempc = tempc + samples[i];
 
    delay(100);
 
  }
 
  
// Divide a variavel tempc por 8, para obter precisão na medição
+
Se você está interessado em shields de comunicação, outras alternativas são: o Arduino WiFi Shield que faz o mesmo que o Ethernet Shield mas em redes sem fio; o Arduino GSM Shield que se conecta a rede de telefonia celular; e o Bluetooth Low Energy (BLE) Shield for Arduino 2.0 que adiciona ao Arduino a capacidade de conversar com outros dispositivos Bluetooth como iPhones e iPads.
tempc = tempc/8.0;
 
  
//Converte a temperatura em Fahrenheit e armazena na variável tempf
 
tempf = (tempc * 9)/ 5 + 32;
 
  
//Armazena a temperatura máxima na variável maxtemp
+
==2.8″ TFT Touch Display Shield V2.0==
if(tempc > maxtemp) {maxtemp = tempc;}
 
  
//Armazena a temperatura minima na variavel mintemp
+
Alguns shields permitem que o Arduino tenha uma tela, seja ela preto e branca, colorida, LCD ou e-Ink. Neste caso, o TFT Touch Display Shield V2.0 da Seed Studio adiciona uma tela LCD colorida de matriz ativa com resolução de 320×240 pixels que suporta até 65 mil cores. Além d isto este shield também conta com um sensor de toque resistivo, iluminação da tela e um leitor de micro-SD. Se você precisar de uma interface gráfica sensível ao toque, este shield é ideal para seu projeto.
if(tempc < mintemp) {mintemp = tempc;}
 
  
  
//As linhas abaixo escrevem o valor da temperatura na saída serial
+
[[imagem:Fig052_MCO18703.png|300px|center]]
    Serial.print(tempc,DEC);
 
    Serial.print(" Celsius, ");
 
    Serial.print(tempf,DEC);
 
    Serial.print(" fahrenheit -> ");
 
    Serial.print(maxtemp,DEC);
 
    Serial.print(" Max, ");
 
    Serial.print(mintemp,DEC);
 
    Serial.println(" Min");
 
  
delay(100);
 
  
tempc=0;
+
Mas existem várias outras alternativas para adicionar displays em seu projeto. Algumas mais baratas e outras mais caras. Algumas que considero bem legais são: o Adafruit LCD Shield com Display de Caracteres 16×2 que adicionam um display simples de usar e vários botões a seu Arduino e o Seed Studio E-Ink Display Shield que traz para o Arduino uma tela super econômica (em termos energéticos) igual as dos e-Readers com o Kindle.
  
}
 
</syntaxhighlight>
 
  
=Display de 7 segmentos=
+
==Arduino Motor Shield==
  
O display de 7 segmentos, possui 7 segmentos que podem ser agrupados de modo a formar números e letras.
+
Embora muitas vezes o que fazemos como Arduino seja conectar sensores e apresentar informações através de displays e outras formas visuais como LEDs, ele também pode ser utilizado para controlar coisas do mundo físico através de motores dos mais diversos tipos. Você pode construir dispositivos que possuem atuadores mecânicos e até mesmo robôs. Para isto você precisa de adicionar ao Arduino a eletrônica necessária para ele poder controlar motores e fornecer a eles a energia necessária para funcionarem. Uma maneira simples de fazer isto é utilizar um shield para motores. Existem muitos shields que fazem isto e um deles é suportado oficialmente pelo projeto. O Arduino Motor Shield possúi a eletrônica necessária para comandar diversos tipos de motores e outros cargas indutivas como solenóides e relês. Ele permite controlar a velocidade e a direção dos motores de maneira independente e ainda medir o quanto de corrente cada um deles está consumindo.
  
  
  
[[Imagem:7-segments_Indicator.gif|center]]
+
[[imagem:Fig053_MCO18703.png|300px|center]]
  
  
 +
Alternativas ao motor shield oficial podem ser encontradas em lojas como a Adafruit e a SparkFun. Dois bons examplos são o Adafruit Motor/Stepper/Servo Shield for Arduino V2 e o Adafruit 16-Channel 12-bit PWM/Servo Shield.
  
Para mostrar o número 1, basta ativar os segmentos b e c. Para mostrar o número 3, os segmentos a, b, c, d e g.
 
  
A ligação ao Arduino pode utilizar os pinos de 2 a 9, mais o GND,  na seguinte sequencia:
+
==Wave Shield for Arduino==
  
<center>
+
Uma das coisas complicadas de se fazer com o Arduino e outros projetos eletrônicos é fazê-los reproduzir som de qualidade. Para isto a Adafruit desenvolveu um shield que permite o Arduino a reproduzir sons a partir de arquivos no fomato .wav (sim, aquele do Windows) com frequências de sampleamento de até 22KHz com 12 bits de resolução. O Adafruit Wave Shield for Arduino contém um conversor DAC (conversor digital-analógico), filtros e amplificadores de áudio de boa qualidade. O shield armazena os arquivos em um cartão SD e se conecta com seus alto-falantes ou fones de ouvido através de uma conexão P2 padrão.
{| class="wikitable"
 
! style="text-align: center; font-weight:bold;background-color:#1E90FF;" | Pino
 
Arduíno
 
! style="text-align: center; font-weight:bold;background-color:#1E90FF;" | Segmento
 
Display
 
|-
 
| style="text-align: center;" | 2
 
| style="text-align: center;" | a
 
|-
 
| style="text-align: center;" | 3
 
| style="text-align: center;" | b
 
|-
 
| style="text-align: center;" | 4
 
| style="text-align: center;" | c
 
|-
 
| style="text-align: center;" | 5
 
| style="text-align: center;" | d
 
|-
 
| style="text-align: center;" | 6
 
| style="text-align: center;" | e
 
|-
 
| style="text-align: center;" | 7
 
| style="text-align: center;" | f
 
|-
 
| style="text-align: center;" | 8
 
| style="text-align: center;" | g
 
|-
 
| style="text-align: center;" | 9
 
| style="text-align: center;" | h
 
|-
 
| style="text-align: center;" | GND
 
| style="text-align: center;" | Central
 
|}
 
</center>
 
  
  
Um ponto importante é a utilização dos resistores de 220 ohms para cada pino. Caso opte por utilizar apenas um resistor conectado a VCC, deve-se levar em consideração que luminosidade dos leds pode ficar diferente para os algarismos com mais ou menos leds acessos. Lembre-se que é necessário limitar a corrente, evitando queimar o componente.
 
  
 +
[[imagem:Fig054_MCO18703.png|300px|center]]
  
[[Imagem:fig89_DIG222802.png|center|300px]]
+
==Arduino Proto Shield==
  
 +
Os Proto Shields, como são mais conhecidos, são os melhores amigos de quem está desenvolvendo sua própria placa de circuito no Arduino. Quem deseja funções específicas ou precisa atender requerimentos especiais tem nestes shields grandes companheiros de projeto.
  
Abaixo pode-se ver como ficaria as ligações '''considerando catodo comum, ou seja, se você está trabalhando com display anodo comum, você deverá ligar em VCC (5V):
 
 
[[Imagem:Fig033_MCO018703.png|center|500px]]
 
 
Abaixo segue o código fonte do contador hexadecimal crescente:
 
 
<syntaxhighlight lang=c>
 
// Programa : Contador crescente 0 a F
 
// Modificacoes e comentarios : Arduino e Cia
 
// Baseado no programa:
 
// Arduino 7 segment display example software
 
// http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html
 
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
 
// Define a ordem de ligação dos segmentos, dos digitos 0 a F
 
// Este padrão é para display de catodo comum
 
// Para display de anodo comum, modifique os valores de 0 para 1 e
 
// de 1 para 0
 
// 1 = LED ligado, 0 = LED desligado, nessa ordem :
 
//                  Arduino pinos: 2,3,4,5,6,7,8
 
 
byte seven_seg_digits[16][7] = { { 1,1,1,1,1,1,0 },  // = Digito 0
 
                                { 0,1,1,0,0,0,0 },  // = Digito 1
 
                                { 1,1,0,1,1,0,1 },  // = Digito 2
 
                                { 1,1,1,1,0,0,1 },  // = Digito 3
 
                                { 0,1,1,0,0,1,1 },  // = Digito 4
 
                                { 1,0,1,1,0,1,1 },  // = Digito 5
 
                                { 1,0,1,1,1,1,1 },  // = Digito 6
 
                                { 1,1,1,0,0,0,0 },  // = Digito 7
 
                                { 1,1,1,1,1,1,1 },  // = Digito 8
 
                                { 1,1,1,0,0,1,1 },  // = Digito 9
 
                                { 1,1,1,0,1,1,1 },  // = Digito A
 
                                { 0,0,1,1,1,1,1 },  // = Digito B
 
                                { 1,0,0,1,1,1,0 },  // = Digito C
 
                                { 0,1,1,1,1,0,1 },  // = Digito D
 
                                { 1,0,0,1,1,1,1 },  // = Digito E
 
                                { 1,0,0,0,1,1,1 }  // = Digito F
 
                                };
 
 
 
void setup()
 
 
  pinMode(2, OUTPUT); //Pino 2 do Arduino ligado ao segmento A 
 
  pinMode(3, OUTPUT); //Pino 3 do Arduino ligado ao segmento B
 
  pinMode(4, OUTPUT); //Pino 4 do Arduino ligado ao segmento C
 
  pinMode(5, OUTPUT); //Pino 5 do Arduino ligado ao segmento D
 
  pinMode(6, OUTPUT); //Pino 6 do Arduino ligado ao segmento E
 
  pinMode(7, OUTPUT); //Pino 7 do Arduino ligado ao segmento F
 
  pinMode(8, OUTPUT); //Pino 8 do Arduino ligado ao segmento G
 
  pinMode(9, OUTPUT); //Pino 9 do Arduino ligado ao segmento PONTO
 
  writePonto(0);  // Inicia com o ponto desligado
 
}
 
 
void writePonto(byte dot)  //Funcao que aciona o ponto no display
 
 
  digitalWrite(9, dot);
 
}
 
 
void sevenSegWrite(byte digit)  //Funcao que aciona o display
 
{
 
  byte pin = 2;
 
 
  //Percorre o array ligando os segmentos correspondentes ao digito
 
  for (byte segCount = 0; segCount < 7; ++segCount) 
 
  {
 
    digitalWrite(pin, seven_seg_digits[digit][segCount]); // Catado comum: digitalWrite(pin, !seven_seg_digits[digit][segCount]);
 
    ++pin;
 
  }
 
    writePonto(1);  //Liga o ponto
 
    delay(100);  //Aguarda 100 milisegundos
 
    writePonto(0);  //Desliga o ponto
 
}
 
 
void loop()
 
{
 
  //Contador de 0 a 15, ligando os segmentos correspondentes
 
  //0 a 9 = liga os segmentos correspondentes aos numeros
 
  //10 a 15 = Forma as letras A,B,C,D,E,F
 
  for (byte count = 0; count < 16; count++)
 
  {
 
    delay(500);
 
    sevenSegWrite(count);
 
  }
 
  delay(4000);
 
}
 
 
</syntaxhighlight>
 
 
==Desafio==
 
 
[1] Fazer uma animação com o display.
 
  
  
 +
[[imagem:Fig055_MCO18703.png|300px|center]]
  
 
=Referências=
 
=Referências=
  
[1] https://www.arduinoecia.com.br/2013/08/arduino-shield-lcd-16x2-com-keypad.html
+
[1] http://blog.fazedores.com/conheca-os-shields-e-incremente-seu-arduino-com-eles/
 
 
[2] display-7-segmentos.html
 
 
 
[3] www.bosontreinamentos.com.br
 
 
 
[4] [https://wiki.sj.ifsc.edu.br/images/8/83/AP1_MCO18703_2017-2.pdf  Avaliação 2017-2]
 
  
 +
[2] https://produto.mercadolivre.com.br/MLB-834849967-motor-shield-l293d-driver-ponte-h-para-arduino-_JM
  
 +
[3] https://www.robocore.net/loja/produtos/arduino-shield-prototyping.html?gclid=Cj0KCQjw08XeBRC0ARIsAP_gaQDdH4fUjTx_vmMTRiaMUougeCJVlrCCBlPORkY8z8XTxlXSMlJonzQaAiqFEALw_wcB
  
 +
[4] https://www.google.com/search?client=firefox-b&biw=933&bih=459&tbm=shop&ei=UB3SW6KfNIOVwgSur7SYAg&q=Arduino+Ethernet+Shield+R3&oq=Arduino+Ethernet+Shield+R3&gs_l=psy-ab.12...3121.3121.0.4339.1.1.0.0.0.0.92.92.1.1.0....0...1c.2.64.psy-ab..0.0.0....0.bYJafsCiLsQ#spd=14017512982586178818
  
 
-----
 
-----
[[Imagem:icone_voltar.png|link=MCO018703_2018_1_AULA10]]
+
[[Imagem:icone_voltar.png|link=MCO018703_2018_2_AULA09]]
[[Imagem:icone_menu.png|link=MCO018703_2018_1#Aulas]]
+
[[Imagem:icone_menu.png|link=MCO018703_2018_2#Aulas]]
[[Imagem:icone_prox.png|link=MCO018703_2018_1#Aulas]]
+
[[Imagem:icone_prox.png|link=MCO018703_2018_2_AULA11]]

Edição atual tal como às 18h03min de 13 de novembro de 2018

Introdução

Assim como a IDE, que já vem com diversas funções pré-definidas, o Arduino possui outras bibliotecas para controle de servomotores, displays LCD, geração de áudio, recepção de sinais de sensores e outros dispositivos (como teclado PS/2), dentre muitas outras funções.

E quem pensa que essa estensibilidade toda se restringe ao software está muito enganado: o Arduino possui o que chamamos de shields, que são placas que se acoplam à placa original, agregando funcionalidades à mesma.

Existem shields dos mais variados tipos, para as mais diversas funções: Lista oficial.

Alguns servem como entrada, outros como saída, e ainda outros como entrada e saída.

Com os shields conseguimos, por exemplo, fazer o Arduino se comunicar numa rede Ethernet, ou ainda transmitir dados para qualquer dispositivo via Bluetooth, Wi-Fi ou Zigbee.

Existem shields com circuitos integrados prontos para controlarmos motores, sem que precisemos nos preocupar com complicações eletrônicas envolvidas, outros possuem leitor de cartão SD, acelerômetro, GPS e diversos outros sensores que podem gerar dados importantes para o software que está rodando no microcontrolador.


Fig007 MCO18703.jpg

Figura 1 - Arduíno com Shield acoplada.


Existem também outros shields mais elaborados, que são sistemas completos.

Fig008 MCO18703.png

Figura 2 - Shields são placas para acoplar ao Arduíno visando expandir suas funcionalidades.

Fig010 MCO18703.png

Figura 3 - Várias Shields permitem a sobreposição de outros Shiels.


Um deles, por exemplo, cria uma plataforma para desenvolvimento de jogos no Arduino: o Video Game Shield10, que possui uma saída RCA e duas entradas para controles Numchuck do Nintendo Wii.

Além do hardware, existe uma biblioteca para ser utilizada em conjunto, que já possui várias funções pré-programadas para fazermos desenhos na televisão e capturar os dados dos movimentos nos controles.

Shields

Shields são placas de circuito que podem ser conectadas ao Arduino, encaixando-se perfeitamente por cima dele, e expandindo suas capacidades. Estas placas podem conter, por exemplo: displays de LCD, sensores, módulos de comunicação ou relês. A capacidade de expansão possibilita uma infinidade de aplicações de maneira simples e rápida. E mesmo com a enorme gama de shields já disponíveis no mercado. A seguir vamos falar de algumas shields.

Arduino Ethernet Shield R3

O Arduino Ethernet Shield foi especificado para conectar o Arduino a uma rede local e é a maneira mais simples e barata de ligar o Arduino à internet. A versão atual do Arduino Ethernet Sheild oficial também contém um leitor de cartões micro-SD.

Fig050 MCO18703.png

Se você está interessado em shields de comunicação, outras alternativas são: o Arduino WiFi Shield que faz o mesmo que o Ethernet Shield mas em redes sem fio; o Arduino GSM Shield que se conecta a rede de telefonia celular; e o Bluetooth Low Energy (BLE) Shield for Arduino 2.0 que adiciona ao Arduino a capacidade de conversar com outros dispositivos Bluetooth como iPhones e iPads.


2.8″ TFT Touch Display Shield V2.0

Alguns shields permitem que o Arduino tenha uma tela, seja ela preto e branca, colorida, LCD ou e-Ink. Neste caso, o TFT Touch Display Shield V2.0 da Seed Studio adiciona uma tela LCD colorida de matriz ativa com resolução de 320×240 pixels que suporta até 65 mil cores. Além d isto este shield também conta com um sensor de toque resistivo, iluminação da tela e um leitor de micro-SD. Se você precisar de uma interface gráfica sensível ao toque, este shield é ideal para seu projeto.


Fig052 MCO18703.png


Mas existem várias outras alternativas para adicionar displays em seu projeto. Algumas mais baratas e outras mais caras. Algumas que considero bem legais são: o Adafruit LCD Shield com Display de Caracteres 16×2 que adicionam um display simples de usar e vários botões a seu Arduino e o Seed Studio E-Ink Display Shield que traz para o Arduino uma tela super econômica (em termos energéticos) igual as dos e-Readers com o Kindle.


Arduino Motor Shield

Embora muitas vezes o que fazemos como Arduino seja conectar sensores e apresentar informações através de displays e outras formas visuais como LEDs, ele também pode ser utilizado para controlar coisas do mundo físico através de motores dos mais diversos tipos. Você pode construir dispositivos que possuem atuadores mecânicos e até mesmo robôs. Para isto você precisa de adicionar ao Arduino a eletrônica necessária para ele poder controlar motores e fornecer a eles a energia necessária para funcionarem. Uma maneira simples de fazer isto é utilizar um shield para motores. Existem muitos shields que fazem isto e um deles é suportado oficialmente pelo projeto. O Arduino Motor Shield possúi a eletrônica necessária para comandar diversos tipos de motores e outros cargas indutivas como solenóides e relês. Ele permite controlar a velocidade e a direção dos motores de maneira independente e ainda medir o quanto de corrente cada um deles está consumindo.


Fig053 MCO18703.png


Alternativas ao motor shield oficial podem ser encontradas em lojas como a Adafruit e a SparkFun. Dois bons examplos são o Adafruit Motor/Stepper/Servo Shield for Arduino V2 e o Adafruit 16-Channel 12-bit PWM/Servo Shield.


Wave Shield for Arduino

Uma das coisas complicadas de se fazer com o Arduino e outros projetos eletrônicos é fazê-los reproduzir som de qualidade. Para isto a Adafruit desenvolveu um shield que permite o Arduino a reproduzir sons a partir de arquivos no fomato .wav (sim, aquele do Windows) com frequências de sampleamento de até 22KHz com 12 bits de resolução. O Adafruit Wave Shield for Arduino contém um conversor DAC (conversor digital-analógico), filtros e amplificadores de áudio de boa qualidade. O shield armazena os arquivos em um cartão SD e se conecta com seus alto-falantes ou fones de ouvido através de uma conexão P2 padrão.


Fig054 MCO18703.png

Arduino Proto Shield

Os Proto Shields, como são mais conhecidos, são os melhores amigos de quem está desenvolvendo sua própria placa de circuito no Arduino. Quem deseja funções específicas ou precisa atender requerimentos especiais tem nestes shields grandes companheiros de projeto.


Fig055 MCO18703.png

Referências

[1] http://blog.fazedores.com/conheca-os-shields-e-incremente-seu-arduino-com-eles/

[2] https://produto.mercadolivre.com.br/MLB-834849967-motor-shield-l293d-driver-ponte-h-para-arduino-_JM

[3] https://www.robocore.net/loja/produtos/arduino-shield-prototyping.html?gclid=Cj0KCQjw08XeBRC0ARIsAP_gaQDdH4fUjTx_vmMTRiaMUougeCJVlrCCBlPORkY8z8XTxlXSMlJonzQaAiqFEALw_wcB

[4] https://www.google.com/search?client=firefox-b&biw=933&bih=459&tbm=shop&ei=UB3SW6KfNIOVwgSur7SYAg&q=Arduino+Ethernet+Shield+R3&oq=Arduino+Ethernet+Shield+R3&gs_l=psy-ab.12...3121.3121.0.4339.1.1.0.0.0.0.92.92.1.1.0....0...1c.2.64.psy-ab..0.0.0....0.bYJafsCiLsQ#spd=14017512982586178818


Icone voltar.png Icone menu.png Icone prox.png