APOSTILA DE ARDUINO Prof. Cleverson B. Klettenberg prof_cleverson@uniguacu.edu.br União da vitória, 2017
INDICE 1. INTRODUÇÃO AO ARDUINO... 3 1.1. O HARDWARE DO ARDUINO...3 1.1.1 A Família Arduino...5 1.1.2 Shields...6 1.2. O SOFTWARE DO ARDUINO...7 1.2.1. Serial Monitor...9 2. NOÇÕES DE ELETRÔNICA...10 2.1. GRANDEZAS DIGITAIS E ANAlÓGICAS... 10 2.2. CORRENTE, TENSÃO E RESISTÊNCIA...10 3. COMPONENTES ELETRÔNICOS & ARDUINO... 12 3.1. LEDS...12 3.2. A PROTOBOARD (MATRIZ DE CONTATOS)...13 3.3. RESISTOR...14 3.3.1 Cálculo da Resistência... 14 3.3.2. Cores do Resistor... 15 3.4. Botão de Pressão...16 3.5. Potenciômetro... 16 3.6. SENSOR LDR... 17 2
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
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
1.1.1 A Família Arduino 5
1.1.2 Shields Um shield é uma placa que permite expandir as funcionalidades originais do Arduino. Alguns exemplos: 6
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
Experiência Blink Nessa experiência iremos fazer o Arduino piscar um LED de um em um segundo. 8
O programa : int led = 13; void setup() { pinmode(led, OUTPUT); } void loop() { digitalwrite(led, HIGH); delay(1000); digitalwrite(led, LOW); delay(1000); } //Existe um LED conectado no pino 13. Daremos um nome a este pino: // Esta função "setup" executa uma vez quando a placa e ligada ou resetada // Configura o pino do led (digital) como saída // Função que se repete infinitamente quando a placa é ligada // Liga o LED (HIGH = nível lógico alto) // Espera um segundo // Desliga o LED (LOW = nível lógico baixo) 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); } void loop(){ dado=analogread(a1); Serial.print( Valor lido: ); Serial.println(dado); } //Inicia porta serial e define a velocidade de transmissão //Lê um valor analógico //escreve uma string //escreve uma variável e quebra uma linha (println) Experiência: Exibindo informações do potenciômetro no serial monitor. 9
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
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
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
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
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 I V=R*I R=V/I I=V/R Se precisarmos acender 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
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 V = 2,8V // a resistência deverá ser sobre a diferença entre o que é entregue e o que é necessário //aplicando a lei de Ohm R=V/I R = 2,8 / 0,020 R = 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
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
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); analogwrite(13,map(potred,0,1023,0,255)); //lê a porta analógica A2 valores que vão de 0 a 1023 //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
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
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
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); digitalwrite(sensor, LOW); delaymicroseconds(2); digitalwrite(sensor, HIGH); delaymicroseconds(5); digitalwrite(sensor, LOW); pinmode(sensor, INPUT); data= pulsein(sensor, HIGH); cm = microsecondstocentimeters(data); Serial.print("Dis. "); Serial.println(cm); if(cm<50){ digitalwrite(led, HIGH); delay(500); digitalwrite(led, LOW); delay(500); } } //configura o pino do sensor como saida para trigger //desliga o sensor //aguarda 0,002 segundos //liga o sensor para uma trigger //aguarda 0,005 segundos //desliga a trigger //configura o pino do sensor como entrada //lê o pulso do sensor //transforma microsegundos para centimetros 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
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 #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."); 21
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()); } 22