prof. cleverson b. klettenberg - edubox de arduino_2017.pdf · apostila de arduino...
TRANSCRIPT
APOSTILA DE ARDUINO
Prof. Cleverson B. Klettenberg
União da vitória, 2017
Apostila de [email protected]
INDICE
1. INTRODUÇÃO AO ARDUINO....................................................................................................31.1. O HARDWARE DO ARDUINO.............................................................................................31.1.1 A Família Arduino..............................................................................................................51.1.2 Shields................................................................................................................................6
1.2. O SOFTWARE DO ARDUINO...............................................................................................71.2.1. Serial Monitor...................................................................................................................9
2. NOÇÕES DE ELETRÔNICA......................................................................................................102.1. GRANDEZAS DIGITAIS E ANAlÓGICAS........................................................................102.2. CORRENTE, TENSÃO E RESISTÊNCIA...........................................................................10
3. COMPONENTES ELETRÔNICOS & ARDUINO.....................................................................123.1. LEDS......................................................................................................................................123.2. A PROTOBOARD (MATRIZ DE CONTATOS)...................................................................133.3. RESISTOR.............................................................................................................................143.3.1 Cálculo da Resistência.....................................................................................................143.3.2. Cores do Resistor............................................................................................................15
3.4. BOTÃO DE PRESSÃO.........................................................................................................163.5. POTENCIÔMETRO..............................................................................................................163.6. SENSOR LDR.......................................................................................................................173.7. SENSOR ULTRASÔNICO...................................................................................................183.8. DISPLAY DE CRISTAL LÍQUIDO - LCD...........................................................................20
2
Apostila de [email protected]
1. INTRODUÇÃO AO ARDUINO
O projeto Arduino começou no ano de 2005 com o objetivo de criar um dispositivo para
estudantes que oferecesse controle integrado de projetos de design e interação, e que fosse mais
econômico que os sistemas de criação de protótipos disponíveis até o momento.
O que chamamos hoje de Arduino (o microcontrolador) nasceu na cidade italiana de Ivrea.
Nesta mesma cidade nos séculos X e XI houve um outro Arduino (um nobre) que se auto
proclamou rei de toda a Itália, obviamente a coisa não funcionou e, como era comum na época, ele
foi morto pelos rivais. O fato é que em sua cidade natal ele ainda é muito lembrado, a avenida
principal da cidade se chama “Via Arduino” bem como muitos comércios locais.
Enquanto viviam lá, os integrantes do time que criou o Arduino (o microcontrolador),
depois do expediente iam tomar uma cerveja. Onde? No Bar Arduino. Assim o nome do Arduino
(o microcontrolador) é uma homenagem ao Arduino (o bar) que por sua vez era uma homenagem
ao outro Arduino (o nobre).
No site oficial da Arduino, encontramos a seguinte definição (traduzida): “Arduino é uma
plataforma open-source de prototipagem eletrônica com hardware e software flexíveis e fáceis de
usar, destinado a artistas, designers, hobbistas e qualquer pessoa interessada em criar objetos ou
ambientes interativos.”
A maior vantagem dessa plataforma de desenvolvimento sobre as demais é a sua facilidade
de sua utilização: pessoas que não são da área técnica podem, rapidamente, aprender o básico e
criar seus próprios projetos em um intervalo de tempo relativamente curto.
1.1. O HARDWARE DO ARDUINO
O hardware do Arduino é simples, porém muito eficiente. Ele é composto pelos seguintes
blocos:
3
Apostila de [email protected]
1 - Conector USB para o cabo tipo AB
2 - Botão de reset
3 - Pinos de entrada e saída digital e PWM
4 - LED verde de placa ligada
5 - LED laranja conectado ao pin13
6 - ATmega encarregado da comunicação com o computador
7 - LED TX (transmissor) e RX (receptor) da comunicação serial
8 - Porta ICSP para programação serial
9 - Microcontrolador ATmega 328, cérebro do Arduino
10 - Cristal de quartzo 16Mhz
11 - Regulador de voltagem
12 - Conector fêmea 2,1mm com centro positivo
13 - Pinos de voltagem e terra
14 - Entradas analógicas
4
Apostila de [email protected]
1.1.2 Shields
Um shield é uma placa que permite expandir as funcionalidades originais do Arduino.
Alguns exemplos:
6
Apostila de [email protected]
1.2. O SOFTWARE DO ARDUINO
Quando tratamos de software na plataforma Arduino, podemos referir-nos ao ambiente de
desenvolvimento integrado do Arduino e o programa desenvolvido por nós para enviar para a
nossa placa.
Uma das grandes vantagens dessa plataforma está no seu ambiente de desenvolvimento,
que usa uma linguagem baseada no C/C++, linguagem bem difundida, usando uma estrutura
simples. Mesmo pessoas sem conhecimento algum em programação conseguem, com pouco
estudo, elaborar programas rapidamente.
7
Apostila de [email protected]
Experiência Blink
Nessa experiência iremos fazer o Arduino piscar um LED de um em um segundo.
8
Apostila de [email protected]
O programa :
int led = 13; //Existe um LED conectado no pino 13. Daremos um nome a este pino:void setup() { // Esta função "setup" executa uma vez quando a placa e ligada ou resetada pinMode(led, OUTPUT); // Configura o pino do led (digital) como saída}void loop() { // Função que se repete infinitamente quando a placa é ligada digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto) delay(1000); // Espera um segundo digitalWrite(led, LOW); // Desliga o LED (LOW = nível lógico baixo) delay(1000);}
Exercícios
1. Desenvolva um semáforo para duas ruas usando leds.
1.2.1. Serial Monitor
A possibilidade de visualizar na tela do computador os dados coletados e processados pelo
Arduino é fundamental, visto que é um forma rápida e prática de visualizar esses dados. Para isso,
usamos o Serial Monitor.
O código fonte do monitor serial:
int dado;void setup(){ Serial.begin(9600); //Inicia porta serial e define a velocidade de transmissão}void loop(){ dado=analogRead(A1); //Lê um valor analógico Serial.print(“Valor lido: “); //escreve uma string Serial.println(dado); //escreve uma variável e quebra uma linha (println)}
Experiência:
Exibindo informações do potenciômetro no serial monitor.
9
Apostila de [email protected]
2. NOÇÕES DE ELETRÔNICA
2.1. GRANDEZAS DIGITAIS E ANALÓGICAS
Grandezas digitais são aquelas que não variam continuamente no tempo, mas sim em saltos
entre valores bem definidos. Um exemplo são os relógios digitais: apesar do tempo em si variar
continuamente, o visor do relógio mostra o tempo em saltos de um em um segundo. Um relógio
desse tipo nunca mostrará 12,5 segundos, pois, para ele, só existem 12 e 13 segundos. Qualquer
valor intermediário não está definido.
Grandezas analógicas são aquelas que variam continuamente dentro de uma faixa de
valores (0 a 1023). O velocímetro de um carro, por exemplo, pode ser considerado analógico, pois
o ponteiro gira continuamente conforme o automóvel acelera ou freia.
Os circuitos e equipamentos elétricos ditos digitais trabalham com apenas dois valores de
tensão definidos:
• Um nível lógico alto, que no caso do Arduino é 5V;
• Um nível lógico baixo, que no caso do Arduino é 0V.
2.2. CORRENTE, TENSÃO E RESISTÊNCIA
CORRENTE é um fluxo de cargas elétricas. Elétrons livres que se movem num fio de
cobre formam uma corrente elétrica.
10
Apostila de [email protected]
Quanto mais cargas passarem por este ponto, maior é a intensidade da corrente. Para medir
esta corrente a unidade usada é o ampère (A).
TENSÃO é a força com que a energia é empurrada para passar no condutor. Olhando a
figura da corrente, pensa-se que a velocidade desses elétrons é muito grande, porém isso é um
engano. É neste ponto que entra o conceito de tensão. Como um fluxo de água num encanamento,
a eletricidade precisa ser "empurrada" por uma força externa. A ação externa responsável por isso é
justamente a tensão. A tensão é dada em V (volts).
Conforme se aumenta a altura da caixa de água maior a sua pressão.
Uma tomada residencial que possui 110 volts não possui corrente se não houver um
aparelho ligada a ela, ou seja, tem tensão mas não corrente.
RESISTÊNCIA é a oposição a passagem da corrente causada ao atravessar o meio
condutor. Essa oposição recebe o nome de "resistência elétrica" e é medida em ohms.
A resistência determina a relação entre a causa e o efeito através de uma lei fundamental da
eletricidade a Lei de Ohm.
Seguindo a mesma analogia da caixa de água, se um cano estivesse parcialmente bloqueado
causaria resistência à passagem de água.
11
Apostila de [email protected]
3. COMPONENTES ELETRÔNICOS & ARDUINO
3.1. LEDS
O LED (Light Emitting Diode) é um diodo que emite luz quando energizado. Os LED s
apresentam muitas vantagens sobre as fontes de luz incandescentes como um consumo menor de
energia, maior tempo de vida, menor tamanho, grande durabilidade e confiabilidade.
Observe na figura que o anodo (+) normalmente possui uma perna mais comprida e tem o
formato do número 1 invertido. Invertê-los pode queimar o led. Normalmente estes leds possuem
3v,
Led RGB
Um LED RGB é um LED que incorpora em um mesmo encapsulamento três LED s, um
vermelho (Red), um verde (Green) e outro azul (Blue). Desta forma é possível formar milhares de
cores ajustando de maneira individual cada cor.
12
Apostila de [email protected]
A intensidade da cor pode variar de 0 a 253 usando uma porta digital.
Exercício
a) desenvolva um projeto que faça o led ascender e apagar na sequência de cores:
vermelho, verde, azul, branco, amarelo, rosa.
3.2. A PROTOBOARD (MATRIZ DE CONTATOS)
Quando trabalhamos com circuitos elétricos em laboratório, muitas vezes usamos a
protoboard. Ele tem o intuito de simplificar o processo de estudo e pesquisa de circuitos elétricos e
eletrônicos. Sendo uma matriz de contatos reutilizável, evitamos a necessidade de confeccionar
uma placa de circuito impresso e possibilita a fácil alteração do circuito, deixando ele flexível.
A imagem a seguir mostra como está ordenado os barramentos.
13
Apostila de [email protected]
3.3. RESISTOR
Componente eletrônico que dificulta a passagem de corrente elétrica. Esta dificuldade de
passagem de corrente é denominada resistência e é medida em ohms. Cada componente e
equipamento eletrônico possui uma corrente máxima de funcionamento, por isso, o uso de
resistores é essencial. Ele terá o papel de limitar a corrente máxima do circuito.
Obs.: Unidades Ohms podem ser nas especificações de resistência os múltiplos do ohm, no
caso o quilohm (kΩ) e o megohm (MΩ). Assim, em lugar de falarmos que um resistor tem 4700
ohms é comum dizermos 4,7k ou 1.000.000 = 1M.
3.3.1 Cálculo da Resistência
A Lei de Ohm afirma que a corrente (I) que circula através de um dado circuito é
diretamente proporcional à voltagem aplicada (V), e inversamente proporcional à resistência (R)
da mesma. Ou seja:
//para quando temos Tensão V, Resistência R e Corrente IV = R * IR = V / II = V / R
Se precisarmos ascender um LED verde, que é alimentado com tensão de 2,2V e corrente
de 20mA através do Arduino, precisaremos de um resistor, como já vimos, já que o Arduino só
consegue fornecer ou 0V ou 5V. Colocaremos o resistor em série com o LED, e com isso podemos
concluir que:
14
Apostila de [email protected]
• A tensão total de entrada é 5V
• A corrente total é de 20mA, ou 0,020A
• Precisamos colocar uma tensão de 2,2V no LED
V = 5V – 2,2V // a resistência deverá ser sobre a diferença entre o que é entregue e o que é necessárioV = 2,8V
//aplicando a lei de Ohm
R = V / IR = 2,8 / 0,020R = 140Ω
A resistência deve ser de 140Ω.
Exercícios
a) Com 4 pilhas em série de 1,5v cada, para ligar um led de 3v e 20mA, calcule a
resistência necessária.
b) Com uma bateria de 9v, para ligar um led de 3v e 0,03A, calcule a resistência necessária.
3.3.2. Cores do Resistor
15
Apostila de [email protected]
3.4. BOTÃO DE PRESSÃO
Experiência Push Button
Passo 1: reproduza o esquema acima.
Passo 2: calcule a resistência necessária para o LED de 3v sendo que o arduino entrega 5V
a 20mA.
Passo 3: desenvolva o programa
Obs.: O capacitor de 1K ligado ao botão elimina ruídos para a entrada digital (0v a 5v).
3.5. POTENCIÔMETRO
Um potenciômetro é um componente que possui resistência elétrica ajustável. Geralmente,
é um resistor de três terminais onde a conexão central é deslizante e manipulável. Se todos os três
terminais são usados, ele atua como um divisor de tensão.
16
Apostila de [email protected]
Exercício
a) Controle a rotação de um motor utilizando um potenciômetro. Use um multímetro para
analisar a voltagem. Não precisa usar arduino.
b) Faça a leitura por uma porta analógica do arduino do sinal vindo de um potenciômetro e
por uma porta digital controle o brilho de um LED RGB.
potblu=analogRead(A2); //lê a porta analógica A2 valores que vão de 0 a 1023 analogWrite(13,map(potred,0,1023,0,255)); //escreve valores analógicos na porta digital. Os valores serão
//mapeados de 0-1023 para 0-255
3.6. SENSOR LDR
O LDR (Light-Dependent Resistor), ou resistor dependente de luz. Quanto maior a luz
incidente nesse componente, menor será sua resistência.
O LDR é constituído de um semicondutor de alta resistência, que ao receber uma grande
quantidade de fótons oriundos da luz incidente, ele absorve elétrons que melhoram sua
condutibilidade, reduzindo assim sua resistência.
Dessa forma, esse semicondutor pode assumir resistências na ordem de mega Ohm no
escuro e resistência na ordem de poucas centenas quando exposto a luz.
Numa utilização normal, o LDR é montado num circuito onde a resistência é convertida
para tensão. A forma mais simples de o fazer é através de um circuito divisor de tensão. Exemplo:
17
Apostila de [email protected]
Exercício
a) Desenvolver um circuito que pisca um led. A velocidade em que o led pista será baseado
na intensidade da luz ambiente.
3.7. SENSOR ULTRASÔNICO
O sensor ultrassônico é amplamente utilizado em aplicações onde se deseja medir
distâncias ou evitar colisões, como na robótica móvel e de reabilitação.
Tudo começa pela emissão de um pequeno pulso sonoro de alta frequência que se
propagará na velocidade do som no meio em questão. Quando este pulso atingir um objeto, um
sinal de eco será refletido para o sensor. A distância entre o sensor e o objeto pode então ser
calculada caso saibamos o tempo entre a emissão e a recepção do sinal.
18
Apostila de [email protected]
Este sensor possui 4 pinos:
• Vcc – Deve ser conectado a um pino 5V do Arduino;
• Trig – Deve ser conectado a um pino digital configurado como saída;
• Echo – Deve ser conectado a um pino digital configurado como entrada;
• Gnd – Deve ser conectado a um pino GND do Arduino.
Obs.: Na plataforma TINKERCAD, o sensor tem 3 pinos. O pino Trig (trigger) e Echo é
unido em um único SIG usado para saída e entrada.
Experiência : Piscar led se algo estiver a menos que 50 cm.
19
Apostila de [email protected]
int led = 2;int sensor = 4;long cm,data;
void setup() { pinMode(led, OUTPUT); Serial.begin(9600);}
long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2;}
void loop() { pinMode(sensor, OUTPUT); //configura o pino do sensor como saida para trigger digitalWrite(sensor, LOW); //desliga o sensor delayMicroseconds(2); //aguarda 0,002 segundos digitalWrite(sensor, HIGH); //liga o sensor para uma trigger delayMicroseconds(5); //aguarda 0,005 segundos digitalWrite(sensor, LOW); //desliga a trigger pinMode(sensor, INPUT); //configura o pino do sensor como entrada data= pulseIn(sensor, HIGH); //lê o pulso do sensor cm = microsecondsToCentimeters(data); //transforma microsegundos para centimetros Serial.print("Dis. "); Serial.println(cm); if(cm<50){ digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } }
3.8. DISPLAY DE CRISTAL LÍQUIDO - LCD
O LCD (Display de Cristal Líquido) é um dispositivo gráfico utilizado na criação de
interface com o usuário. A formação de caracteres e imagens ocorre devido ao fato do cristal
líquido, naturalmente transparente, se tornar opaco ao receber uma carga elétrica, impedindo a
passagem de luz.
Para controlar o display LCD seria algo bastante complicado se não fosse sua biblioteca de
funções. Graças a ela não precisamos de detalhes muito grande referente aos 16 pinos do LCD. Os
Pinos são:
20
Apostila de [email protected]
Vss Ground -
Vdd Supply +
VO Divisor de Tensão (potenciômetro) para controlar o contraste
RS Register Select (controle de instrução)
R/W Read e Write MPU module
E Enable (habilita para escrita)
DB0 a DB7 Bit X(0-7) do dado a ser lido ou escrito no LCD
Experiência: Controlando Display LCD
21
Apostila de [email protected]
#include <LiquidCrystal.h> //include the library code
LiquidCrystal lcd(7,8,9,10,11,12); //initialize the library with the numbers of the interface pins
void setup() { lcd.begin(16,2); //set up the LCD's number of columns and rows: }
void loop() { lcd.setCursor(0,0); lcd.print("Running "); delay(80); lcd.setCursor(0,0); lcd.print("Running."); delay(80); lcd.setCursor(0,0); lcd.print("Running.."); delay(80); lcd.setCursor(0,0); lcd.print("Running..."); delay(80); lcd.setCursor(0,1); lcd.print(millis());}
3.9. SERVO MOTOR
O Servomotor é uma máquina eletromecânica, que apresenta movimento proporcional a um
comando ou sinal de controle. O controle da posição desejada é feito sobre um encoder ou
resolver. Normalmente seu rotação é de 180 a 360 graus em alguns modelos.
3.10. SENSOR DE TEMPERATURA TMP36
O Sensor de temperatura retorna valores analógicos de 0 a 1023 que devem ser
transformados em voltagem e posteriormente em graus Celsius ou Fahrenheit.
Imaginemos um sistema de automação residencial onde uma janela ou teto se abre e fecha
conforme a temperatura ambiente.
22
Apostila de [email protected]
#include <Servo.h>;
Servo myservo;float sensor;
void setup(){ myservo.attach(3); pinMode(A1,INPUT); Serial.begin(9600);}
void loop(){ sensor=analogRead(A2); //lê um valor de 0 a 1023 que o sensor retorna sensor=sensor*0.004882814; //transforma valores de 0 a 1023 em voltagem de 0 a 5 sensor = (sensor - 0.5) * 100.0; //converte voltagem em graus celcius Serial.print(sensor); Serial.println(" C"); if(sensor>24){ myservo.write(200); }else{ myservo.write(-200); } delay(1000); // Wait for 1000 millisecond(s)}
23