Você está na página 1de 50

Arduino MS

Arduino MS
Sobre este Minicurso
Viabilizado pela Organizao do ERI MS; Apoiado pelo grupo ArduinoMS; Agradecimentos especiais ao do SENAC e UCDB. Sobre o Ministrante: Samuel Cavalcante Engenheiro de Computao (UNIDERP)- CREA-MS: 12873D Ps Graduado em Eng. De Sistemas (ESAB) Analista em Educao profissional no SENAC/MS Professor UNIDERP e UNAES II Pai, Esposo, Professor, Empresrio, Consultor, participante de comunidades, conselheiro entre outros.

Arduino MS
O que veremos
Introduo ao Arduino Cdigo Pisca LED Configurando a IDE para transferir o Cdigo Acionamento de LED com Boto Pisca Led com Sensor LDR Sensor de Temperatura

Obs.: Ao decorrer da oficina sero tratados assuntos sobre eletrnica e eletricidade bsica.

Microcontrolador X Microprocessadorr
Qual a principal diferena entre eles?

Arduino MS
Introduo ao Arduino
Plataforma baseada em Atmel da AVR (ATMega168; ATMega 328); Oferece um IDE e bibliotecas de programao de alto nvel; Open-source hardware e software Ampla comunidade Programado em C/C++ Transferncia de firmware via USB

MCU com bootloader

Arduino MS
Histrico do Arduino
Projeto criado na Itlia pelo Mssimo Banzi no Interaction Design Institute Ivrea; Nasceu para complementar o aprendizado de programao, computao fsica e grfica; Nasceu do Processing e Wiring;
Processing um ambiente e linguagem de programao para criar imagens, animao e interao;

Arduino MS
Simplicidade no circuito:

Arduino MS
Muitas aplicaes prticas
Robs Roupas eletrnicas Mquinas de corte e modelagem 3D de baixo custo; Desenvolvimento de celulares customizados Instrumentos musicais Paredes interativas Instrumentao humana

Arduino MS
Vrios tipos, vrios fabricantes...
Mega Lilypad Nano Uno Pro Arduino BT Freeduino Severino Program-ME

Arduino MS
Atmega168 / Atmega328: corao
Caractersticas do ATmega 168: RISC Reduced Instruction Set Computer 20 MIPS (20 Milhes de instrues por segundo) 16Kb Flash / 512 b EEPROM / 1Kb RAM Esttica 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 analgicas

Arduino MS
Caractersticas tcnicas
6 canais PWM 6 conversores analgico/digital de 10 bits 1 serial programvel (USART) 1 interface SPI (Serial Peripheral Interface) 1 interface serial a 2 fios (I2C) 1 watch dog timer programvel 1 comparador analgico no chip Interrupo ou wake-up na alterao de estado dos pinos

Arduino MS
Resumo das conexes da placa

Arduino MS
FT232RL Conversor USB-Serial

Conector USB

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

Alimentao externa: At 12 volts

Arduino MS
Boto de reset

ICSP Para gravar bootloader ou programas/firmware

AtMega328 /168/8

Arduino MS
AREF Referncia analgica Padro 5 volts GND Portas digitais 0 a 13 0 RX 1 TX = usada durante transferncia de sketch e comunicao serial com placa

2,4,7,8,12,13 = portas digitais convncionais


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

Arduino MS

Portas analgicas 4 e 5 So as portas utilizadas para conexes via I2C / TWI.

Portas analgicas de 0 a 5 GND Podem funcionar como digitais de 14 a 19 5 volts VIN 3.3 volts Alimentao de entrada sem regulagem

Arduino MS
Shields: arquitetura modular inteligente
Arduino estabeleceu um padro de pinagem que respeitado por diversas placas shield:

Arduino MS
Por dentro do MCU

Arduino MS
Porta Digital Vs. Analgica
Digital: trabalha com lgica binria, 0 e 1.
No Arduino segue padro TTL onde: 0 a 0,8 volts = 0 2 a 5 volts = 1

Analgica: valor lido anlogo a tenso.


Referncia 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. Analgica
Portas analgicas expressam valores de 0 a 1023 mas no so utilizadas para transferncia de informaes precisas
Neste caso o dispositivo recebe um valor analgico de 0v 5v, que ser convertido em um nmero binrio de 10 bits. Cada bits somado ao circuito equivale a 0,005v.

Portas digitais permitem que dados sejam transferidos em sequencia atravs de uma lgica ou protocolo binrio
Portas digitais no conseguem comandar potncia

Arduino MS
Porta PWM
Uma porta hbrida: digital porm com modularizao de zeros e uns de forma que consegue expressar uma idia de potncia;

Arduino MS
Na prtica
Ligamos componentes em portas digitais (comuns, PWM) ou analgica 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 distncia ultrasonico

Arduino MS
LCD Touch
Shield LCD Touch screen

Arduino MS
SIM Reader
SIM 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 mquina virtual instalada. Funciona em Windows. Mac OS X e Linux (em alguns windows e mac pode ser necessrio colocar driver) Utiliza GCC + GCC Avr para compilao (voc pode tambm programar diretamente com GCC!) A transferncia para a placa feita via USB pelo IDE; (mas tambm pode ser feita com gravadores ICSP!)

Arduino MS
Partes bsicas do programa Arduino
Temos que obrigatoriamente programar dois mtodos:
void setup() { } void loop() { }

O setup executado uma s vez assim que a placa for ligada e o loop ter o cdigo de execuo infinita

Arduino MS
Portas digitais e analgicas
Na prtica ligamos componentes em portas digitais e analgicas e atravs do cdigo 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 analgica 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 nmero estiver conectado, enquanto os nas bordas superior e inferior normalmente marcado com linhas pretas e vermelhas so conectados na horizontal.

Arduino MS
Primeiro contato com Arduino
Ligar sua placa no cabo USB e no PC Realizar a instalao do Driver com a ajuda do facilitador Verificar o jumper de alimentao configurando para USB se necessrio Digitar o cdigo, a ser passado, no Arduino IDE Selecionar no software a verso do Arduino e a porta serial de comunicao. Clicar no boto de transferncia de sketch

Arduino MS
Exemplo pisca led com Arduino
Esta conexo 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); }

Configurando a IDE para transferir o Cdigo

Configurando a IDE para transferir o Cdigo

Procurando erros no cdigo

Fazendo o Upload do Cdigo para o Arduino

Arduino MS
Entrada Digital: Fazendo leitura de um boto
Os pinos do Arduino so extremamente sensveis, permitindo a leitura de rudo eltrico do ambiente. O prximo 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 trs fios placa Arduino. O primeiro de uma perna do boto atravs de um resistor de pull-up (aqui 10K ) para o fornecimento de 5 volts. A segunda vai da perna correspondente do boto ao GND. O terceiro se conecta a um pino digital I/O (pino 7) que l o estado do boto.

Arduino MS
Montando o Circuito

Arduino MS
Cdigo Aciona LED com boto
int val = 0; // varivel 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 boto com o sensor de luz e trocando a ligao do pino digital 7 para o pino analgico 2. A funo permite enviar um valor numrico para o computador. Variando nmeros digitais no intervalo de 01024 (resoluo de 1 Bit). Nesta funo usamos a comunicao serial, com isso abra o monitor serial para ler dados do sensor. Aps o cdigo ser copiado no Arduino.

Arduino MS
Montando o Circuito

Arduino MS
Cdigo
int val = 0; // varivel para armazenar o valor vindo do sensor void setup() { pinMode(13, OUTPUT); // declara o ledPin como uma sada Serial.begin(9600); // usar a porta serial para comunicao } 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 }

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, aps todos acessos aguardar 1000 milisegundos e comear a apagar os leds, com o mesmo intervalor de tempo.

Vetor de LEDs Montando o circuito

Vetor de LEDs Cdigo


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 potencimetro

Vetor de LEDs com potencimetro


int 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); }

Arduino MS
Resumindo...
Arduino um projeto simples, popular e acessvel Eletrnica e programao embarcada alto nvel Na prtica ligamos componentes nas portas analgicas e digitais e escrevemos programas que usam as portas Existem diversas bibliotecas que encapsulam a lgica de comunicao digital ou analgica: servo, motor de passo, Android, display LCD Ter portas digitais analgicas e pmw um grande valor do microcontrolador utilizado A transfrencia via USB e a ferramenta / IDE para programao funcionam em mltiplas plataformas Open-source Hardware e Open-source software