50
Arduino MS

Arduino Hack Day Corumbá

Embed Size (px)

DESCRIPTION

Oficina de introdução ao Arduino realizada no SENAC de Corumbá, pelo evento III Escola Regional de Informática do MS (ERI MS). Uma oficina pratica sobre a utilização do Hardware Arduino.

Citation preview

Arduino MS

Sobre este Minicurso • Viabilizado pela Organização do ERI MS;• Apoiado pelo grupo ArduinoMS;• Agradecimentos especiais ao do SENAC e UCDB.

Sobre o Ministrante:• Samuel Cavalcante• Engenheiro de Computação (UNIDERP)- CREA-MS: 12873D• Pós Graduado em Eng. De Sistemas (ESAB)• Analista em Educação profissional no SENAC/MS• Professor UNIDERP e UNAES II• Pai, Esposo, Professor, Empresário, Consultor, participante

de comunidades, conselheiro entre outros.

Arduino MS

O que veremos

• Introdução ao Arduino• Código Pisca LED• Configurando a IDE para transferir o Código• Acionamento de LED com Botão• Pisca Led com Sensor LDR• Sensor de Temperatura

Obs.: Ao decorrer da oficina serão tratados assuntos sobre eletrônica e eletricidade básica.

Arduino MS

Microcontrolador X Microprocessadorr

• Qual a principal diferença entre eles?

Introdução ao Arduino

• Plataforma baseada em Atmel da AVR (ATMega168; ATMega 328);

• Oferece um IDE e bibliotecas de programação de alto nível;

• Open-source hardware e software

• Ampla comunidade

• Programado em C/C++

• Transferência de firmware

via USB

• MCU com bootloader

Arduino MS

Histórico do Arduino

• Projeto criado na Itália pelo Mássimo Banzi no Interaction Design Institute Ivrea;

• Nasceu para complementar o aprendizado de programação, computação física e gráfica;

• Nasceu do Processing e Wiring;– Processing é um ambiente e linguagem de programação para

criar imagens, animação e interação;

Arduino MS

Simplicidade no circuito:

Arduino MS

Muitas aplicações práticas

• Robôs• Roupas eletrônicas• Máquinas de corte e modelagem 3D de baixo custo;• Desenvolvimento de celulares customizados• Instrumentos musicais• Paredes interativas• Instrumentação humana

Arduino MS

Vários tipos, vários fabricantes...

• Mega• Lilypad• Nano• Uno• Pro• Arduino BT• Freeduino• Severino• Program-ME

Arduino MS

Atmega168 / Atmega328: coração

• Características do ATmega 168:• RISC –Reduced Instruction Set Computer• 20 MIPS (20 Milhões de instruções por segundo)• 16Kb Flash / 512 b EEPROM / 1Kb RAM Estática• 10.000 ciclos na Flash e 100.000 na EEPROM• 2 contadores / temporizadores de 8bits• 1 contador / temporizador de 16bits• 1 temporizador de tempo real com clock a parte• 14 portas digitais• 6 portas analógicas

Arduino MS

Características técnicas

• 6 canais PWM• 6 conversores analógico/digital de 10 bits• 1 serial programável (USART)• 1 interface SPI (Serial Peripheral Interface)• 1 interface serial a 2 fios (I2C)• 1 watch dog timer programável• 1 comparador analógico no chip• Interrupção ou wake-up na alteração de estado dos pinos

Arduino MS

Resumo das conexões da placa

Arduino MS

Conector USB

Alimentação externa:Até 12 volts

Regular 7085:Recebe até 12 volts e regula para 5 volts

FT232RLConversor USB-Serial

Arduino MS

ICSPPara gravar bootloader ou programas/firmware

AtMega328 /168/8

Botão de reset

Arduino MS

Portas digitais 0 a 130 RX 1 TX = usada durante transferência de sketch e comunicação serial com placa

2,4,7,8,12,13 = portas digitais convêncionais

3,5,6,9,10,11 = portas PWM

GNDAREFReferência analógicaPadrão 5 volts

Arduino MS

Portas analógicas de 0 a 5Podem funcionar como digitais de 14 a 19

VINAlimentação de entrada sem regulagem

GND5 volts

3.3 volts

Portas analógicas 4 e 5São as portas utilizadas para conexões via I2C / TWI.

Arduino MS

Shields: arquitetura modular inteligente

• Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:

Arduino MS

Por dentro do MCU

Arduino MS

Porta Digital Vs. Analógica• Digital: trabalha com lógica binária, 0 e 1.

– No Arduino segue padrão TTL onde:• 0 a 0,8 volts = 0• 2 a 5 volts = 1

• Analógica: valor lido é análogo a tensão. – Referência de analogia é 5 volts

• 0 volts = 0• 2.5 volts= 512• 5 volts = 1023

– Conversor A/D de 10 bits: 0 a 1023• 00000000012 = 110 = 0,005v

• 00000000102 = 210 = 0,010v

• 00000000112 = 210 = 0,015v

• 10000000002 = 51210 = 2,50v

• ....

Arduino MS

Porta Digital Vs. Analógica

• Portas analógicas expressam valores de 0 a 1023 mas não são utilizadas para transferência de informações precisas– Neste caso o dispositivo recebe um valor analógico de 0v à 5v,

que será convertido em um número binário de 10 bits. Cada bits somado ao circuito equivale a 0,005v.

• Portas digitais permitem que dados sejam transferidos em sequencia através de uma lógica ou protocolo binário– Portas digitais não conseguem comandar potência

Arduino MS

Porta PWM

• Uma porta híbrida: digital porém com modularização de zeros e uns de forma que consegue expressar uma idéia de potência;

Arduino MS

Na prática

• Ligamos componentes em portas digitais (comuns, PWM) ou analógica

• Fazemos leitura e escrita nestas portas afim de obter um dado ou um determinado comportamento

• Processamos os dados no microcontrolador

Alguns exemplos de componentes...

Arduino MS

Ping – Sensor de distância ultrasonico

Arduino MS

LCD TouchShield LCD Touch screen

Arduino MS

SIM ReaderSIM Reader

Arduino MS

Lojas de componentes• www.parallax.com• www.sparkfun.com• www.makershed.com• www.liquidware.com• www.ladyada.net• www.adafruit.com• www.rlrobotics.ind.br/ - BRASIL• www.empretecnet.com.br/do/Home - BRASIL

Arduino MS

Programando para Arduino

• IDE pode ser baixada de www.arduino.cc• A IDE foi desenvolvida com Java, portanto precisaremos de

um máquina virtual instalada.• Funciona em Windows. Mac OS X e Linux (em alguns

windows e mac pode ser necessário colocar driver)• Utiliza GCC + GCC Avr para compilação(você pode também programar diretamente com GCC!)• A transferência para a placa é feita via USB pelo IDE;(mas também pode ser feita com gravadores ICSP!)

Arduino MS

Partes básicas do programa Arduino

• Temos que obrigatoriamente programar dois métodos:

void setup() {}void loop() {}

• O setup é executado uma só vez assim que a placa for ligada e o loop terá o código de execução infinita

Arduino MS

Portas digitais e analógicas

• Na prática ligamos componentes em portas digitais e analógicas e através do código Arduino, manipulamos as portas:– pinMode(<porta>, <modo>): configura uma porta digital

para ser lida ou para enviarmos dados;– digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital– digitalRead(<porta>): retorna um 0 ou 1 lido da porta– analogRead(<porta>): retorna de 0 a 1023 com o valor da

porta analógica– analogWrite(<porta>, <valor>): escreve em uma porta PWM

um valor de 0 a 255

Arduino MS

Protoboard ou Matriz de contato

É um dispositivo usado para construir circuitos sem a necessidade de solda. Na parte central de todos os pinos alinhados sob um número estiver conectado, enquanto os nas bordas superior e inferior - normalmente marcado com linhas pretas e vermelhas - são conectados na horizontal.

Arduino MS

Primeiro contato com Arduino

• Ligar sua placa no cabo USB e no PC• Realizar a instalação do Driver com a ajuda do facilitador• Verificar o jumper de alimentação configurando para USB

se necessário• Digitar o código, a ser passado, no Arduino IDE• Selecionar no software a versão do Arduino e a porta serial

de comunicação.• Clicar no botão de transferência de sketch

Arduino MS

Exemplo “pisca led” com Arduino

Esta conexão é bem simples somente para efeito de teste para piscar o led.

O correto é ligar um resistor usando uma protoboard.

Arduino MS

Exemplo “pisca led”

void setup() { pinMode(13, OUTPUT); //porta 13 em output }

void loop() { digitalWrite(13, HIGH); //HIGH = 1 = TRUE delay(500); digitalWrite(13, LOW); //LOW = 0 = FALSE delay(500);}

Arduino MS

Configurando a IDE para transferir o Código

Configurando a IDE para transferir o Código

Procurando erros no código

Fazendo o Upload do Código para o Arduino

Entrada Digital: Fazendo leitura de um botão

• Os pinos do Arduino são extremamente sensíveis, permitindo a leitura de ruído elétrico do ambiente. O próximo teste utilizaremos o pino 7 como leitura de dados externos, como é uma porta digital será lido HIGH ou LOW (1 ou 0). Essa leitura é realizada pelo comando digitalRead(port).

• Conecte três fios à placa Arduino. O primeiro de uma perna do botão através de um resistor de pull-up (aqui 10K Ω) para o fornecimento de 5 volts. A segunda vai da perna correspondente do botão ao GND. O terceiro se conecta a um pino digital I/O (pino 7) que lê o estado do botão.

Arduino MS

Montando o Circuito

Arduino MS

Código Aciona LED com botão

int val = 0; // variável para ler o status do pino void setup() { pinMode(13, OUTPUT); // declare LED como output pinMode(7, INPUT); // declare pushbutton como input }void loop(){ val = digitalRead(7); // ler a entrada de valor if (val == HIGH) {// verificar se a entrada é alta digitalWrite(13, LOW); // LED OFF  } else { digitalWrite(13, HIGH); // LED ON } }

Arduino MS

Tempo entre acende e apaga LED usando sensor LDR

• Use o mesmo circuito como antes, mudando o botão com o sensor de luz e trocando a ligação do pino digital 7 para o pino analógico 2.

• A função permite enviar um valor numérico para o computador. Variando números digitais no intervalo de 0-1024 (resolução de 1 Bit).

• Nesta função usamos a comunicação serial, com isso abra o monitor serial para ler dados do sensor. – Após o código ser copiado no Arduino.

Arduino MS

Montando o Circuito

Arduino MS

Código

int val = 0; // variável para armazenar o valor vindo do sensor void setup() { pinMode(13, OUTPUT); // declara o ledPin como uma saída Serial.begin(9600); // usar a porta serial para comunicação } void loop() { val = analogRead(2); // lê o valor do sensor Serial.println(val); // imprime o valor para a porta serial digitalWrite(13, HIGH); // ligar o LED delay(val); // parar o programa por algum tempo digitalWrite(13, LOW); // desligar o LED delay(val); // tempo antes do proximo ciclo }

Arduino MS

Vetor de LEDs

• Monte na matriz de contato 5 leds, cada perna maior do LED (VCC) será ligada a uma perna do resistor, a outra perna do resistor será ligada em cada um dos seguinte pinos Digital, 12, 11, 10, 9 e 8. A perna menor dos LEDs, no GND (0v).

• A atividade é fazer esses LEDs acenderem em sequencia, acendendo um LED de cada vez, com intervalos de 50 milisegundos por led, após todos acessos aguardar 1000 milisegundos e começar a apagar os leds, com o mesmo intervalor de tempo.

Vetor de LEDs – Montando o circuito

Vetor de LEDs Código

int i;void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); }void loop() { for(i=13;i>=8;i--){ digitalWrite(i, HIGH);

delay(50); } delay(1000); for(i=8;i<=13;i++){ digitalWrite(i, LOW); delay(50); } delay(1000);}

Vetor de LEDs com potenciômetro

Vetor de LEDs com potenciômetroint i, port, potenc;float tensao=0;void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); Serial.begin(9600);}void loop() { potenc=analogRead(2); port=13; for(i=1;i<=5;i++){ if(potenc>((i*2-1)*100)){ digitalWrite(port, HIGH);

}else{ digitalWrite(port, LOW); } port--; } Serial.print("Valor decimal = "); Serial.print(potenc); tensao=potenc*0.004883; Serial.print(" - Tensao = "); Serial.print(tensao); Serial.println(" V"); delay(500);}

Resumindo...

• Arduino é um projeto simples, popular e acessível• Eletrônica e programação embarcada alto nível• Na prática ligamos componentes nas portas analógicas e

digitais e escrevemos programas que usam as portas• Existem diversas bibliotecas que encapsulam a lógica de

comunicação digital ou analógica: servo, motor de passo, Android, display LCD

• Ter portas digitais analógicas e pmw é um grande valor do microcontrolador utilizado

• A transfêrencia via USB e a ferramenta / IDE para programação funcionam em múltiplas plataformas

• Open-source Hardware e Open-source software

Arduino MS