minicurso de arduino - dimap.ufrn.br · como funciona (componentes, ide, circuitos, no˘c~oes de...
TRANSCRIPT
Minicurso de Arduino
Gabriel VasiljevicWanderson Ricardo
August 28, 2015
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 1 / 45
Roteiro do curso
O que e o Arduino (especificacoes, modelos, aplicacoes)
Como funciona (componentes, IDE, circuitos, nocoes de eletricidade)
Linguagem (conceitos, funcoes e comandos basicos)
Portas digitais
Componentes eletronicos (LEDs, resistores, protoboard, botoes)
Sensores
Exemplos e exercıcios
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 2 / 45
Introducao
Antes de mais nada, o que e Arduino?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 3 / 45
O que e Arduino
Plataforma de prototipacao baseada em hardware livreTotalmente open-sourceNao ha nenhum custo alem da compra da placaComunidade ativa
Criada para ser de facil utilizacao e aprendizado
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 4 / 45
Tipos de Arduino
Existem diferentes Arduinos para diferentes projetos
Cada um se adapta melhor para determinadas situacoes
Exemplos:
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 5 / 45
Tipos de Arduino
Arduino Nano
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 6 / 45
Tipos de Arduino
Arduino Mega
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 7 / 45
Tipos de Arduino
LilyPad Arduino
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 8 / 45
Tipos de Arduino
Arduino Uno
E este que iremos utilizar!
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 9 / 45
Mas antes...
E preciso ter nocoes basicas de eletricidade e eletronica
Evitar acidentes e pecas queimadas
Conhecer o funcionamento dos componentes que iremos utilizar
LEDs, resistores, sensores etc.
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 10 / 45
Revisao (rapida) de eletricidade
Atomos possuem protons (carga positiva), eletrons (carga negativa) eneutrons (carga nulas)
Cargas opostas se atraem e cargas iguais se repelem
Eletrons livres se movimentam de forma aleatoria
Mas, quando submetidos a uma DDP ou a um campo magnetico,passam a se mover ordenadamente
Corrente eletrica
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 11 / 45
Revisao (rapida) de eletricidade
Atomos possuem protons (carga positiva), eletrons (carga negativa) eneutrons (carga nulas)
Cargas opostas se atraem e cargas iguais se repelem
Eletrons livres se movimentam de forma aleatoria
Mas, quando submetidos a uma DDP ou a um campo magnetico,passam a se mover ordenadamente
Corrente eletrica
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 11 / 45
Revisao (rapida) de eletricidade
Atomos possuem protons (carga positiva), eletrons (carga negativa) eneutrons (carga nulas)
Cargas opostas se atraem e cargas iguais se repelem
Eletrons livres se movimentam de forma aleatoria
Mas, quando submetidos a uma DDP ou a um campo magnetico,passam a se mover ordenadamente
Corrente eletrica
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 11 / 45
Revisao (rapida) de eletricidade
DDP - Diferenca De Potencial - Tensao
Quando dois pontos possuem potenciais diferentes
Eletrons se movem do maior potencial para o menor potencial
Exemplo: Tomadas
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 12 / 45
Circuitos
Circuito e a juncao de componentes eletronicos de forma quepermitam a passagem de corrente eletrica
Um componente eletronico sao tais quais permitem a passagem decorrente atraves de elementos condutores
Durante o minicurso, estaremos criando diversos circuitos,controlados pelo Arduino
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 13 / 45
Comecando...
Entendendo estes conceitos, podemos comecar a trabalhar com oArduino
Basta te-lo em maos junto com um cabo USB
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 14 / 45
Instalacao da IDE
No Windows
Baixar os arquivos no site oficial (www.arduino.cc)
Descompactar
Conectar o Arduino
Instalar os drivers (localizados na pasta extraıda)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 15 / 45
Instalacao da IDE
No Linux
sudo add-apt-repository ppa:arduino-ubuntu-team/ppa
sudo apti-tude update
sudo aptitude install arduino
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 16 / 45
Introducao a linguagem do Arduino
Linguagem Wired, baseada em C e C++
Podemos usar qualquer funcao destas linguagens para manipular osdados de nosso projetos
Possui funcoes especıficas para manipulacao do circuito
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 17 / 45
Principais funcoes
Todo codigo do Arduino possui duas funcoes principais:
setup()
E onde a execucao comecaResponsavel por inicializar as portas e atribuı-las como entradas ousaıdas
loop()
E onde todos os comandos sao dados ao ArduinoSua execucao e repetida ate o programa terminar
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 18 / 45
Primeiros conceitos
O Arduino controla o circuito atraves de suas portas
Cada porta fornece ou recebe uma tensao (entrada ou saıda)
As portas podem trabalhar com tensoes binarias (digitais) oucontınuas (analogicas)
O Arduino Uno possui 28 portas, divididas entre:
DigitaisPWMAnalogicasGround (terra)Power (Reset, 3.3V e 5V)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 19 / 45
Primeiro exemplo
Exercitar os conceitos: acender o LED do Arduino
O LED piscara a cada segundo
Por padrao, o LED e conectado a saıda 13
O que precisamos fazer?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 20 / 45
Primeiro passo
Criar um novo arquivo no IDE
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 21 / 45
Segundo passo
Criar a funcao setup()
Inicializar a porta
Para isso, utilizamos a funcao pinMode(porta, modo)modo pode ser INPUT (entrada) ou OUTPUT (saıda)Exemplo:
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 22 / 45
Segundo passo
Criar a funcao setup()
Inicializar a porta
Para isso, utilizamos a funcao pinMode(porta, modo)modo pode ser INPUT (entrada) ou OUTPUT (saıda)Exemplo:
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 22 / 45
Terceiro passo
Criar a funcao loop()
E nela que iremos controlar o LED
Como?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 23 / 45
Terceiro passo
Criar a funcao loop()
E nela que iremos controlar o LED
Como?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 23 / 45
Terceiro passo
A funcao digitalWrite(pino, estado) nos permite mudar o estado dopino para HIGH (ligado) ou LOW (desligado)
A funcao delay(tempo) da uma pausa de tempo milisegundos naexecucao do codigo
Ja temos tudo o que precisamos! :)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 24 / 45
Terceiro passo
A funcao digitalWrite(pino, estado) nos permite mudar o estado dopino para HIGH (ligado) ou LOW (desligado)
A funcao delay(tempo) da uma pausa de tempo milisegundos naexecucao do codigo
Ja temos tudo o que precisamos! :)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 24 / 45
Terceiro passo
A funcao digitalWrite(pino, estado) nos permite mudar o estado dopino para HIGH (ligado) ou LOW (desligado)
A funcao delay(tempo) da uma pausa de tempo milisegundos naexecucao do codigo
Ja temos tudo o que precisamos! :)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 24 / 45
Terceiro passo
Com a funcao loop() escrita, o codigo final ficara parecido com este:
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 25 / 45
Quarto passo
Agora basta conectar o Arduino ao computador e fazer o upload do codigo
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 26 / 45
Portas Digitais
Trabalham com tensoes binarias: 0V ou 5V
14 ao total, numeradas de 0 a 13
Portas 0 e 1 reservadas aos LEDs RX e TX, respectivamente
Principais funcoes:
digitalRead(pino);digitalWrite(pino, estado);
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 27 / 45
Componentes eletronicos
Componentes eletronicos sao as diversas pecas que iremos utilizar emnossos projetos
Cada um possui uma funcao bastante especıfica
Controlaremos o comportamento de cada um com o Arduino
Exemplos: LEDs, resistores, capacitores, potenciometros...
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 28 / 45
LEDs
Light Emitting Diode
Semicondutores - Bloqueiam a corrente por um lado e a permite pelooutro
Formados por um anodo (perna maior) e um catodo (menor)
Exemplos: Controle remoto, TVs, luzes de equipamentos em geral
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 29 / 45
Resistores
Oferecem resistencia a passagem da corrente eletrica
Causam Efeito Joule
Podemos medir a resistencia dividindo a tensao pela corrente. Estaunidade chama-se Omh (Ω)
Codigo de cores
Exemplos: Chuveiros eletricos, ferro de passar roupa, lampadaincandescente
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 30 / 45
Protoboard
Serve para unir os componentes com maior facilidade
Elimina a necessidade da solda
Formado por ligacoes verticais (centrais) e horizontais (inferiores esuperiores)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 31 / 45
Primeiro exemplo melhorado
Agora que ja conhecemos alguns componentes, podemos melhorarnosso primeiro projeto
Vamos fazer piscar um LED de verdade! :)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 32 / 45
Primeiro exemplo melhorado
Agora que ja conhecemos alguns componentes, podemos melhorarnosso primeiro projeto
Vamos fazer piscar um LED de verdade! :)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 32 / 45
Primeiro exemplo melhorado
Utilizaremos o mesmo codigo do primeiro exemplo
A diferenca e que criaremos um circuito composto por um LED, umresistor e a protoboard
Como montar este circuito?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 33 / 45
Primeiro exemplo melhorado
E necessario que haja uma DDP para ocorrer a corrente eletrica quealimentara o LED
Lembrar que o LED e um semicondutor, por isso, a corrente so fluipor uma direcao
Deve-se conectar o anodo (perna maior) do LED ao gerador (porta13)
O catodo deve ser conectado a uma porta terra (GRD - Ground)
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 34 / 45
Primeiro exemplo melhorado
O resistor deve ser conectado entre o anodo e o gerador
O LED e sensıvel e tensoes muito altas podem queima-loO resistor limita a intensidade da corrente que chega ao LED
Para facilitar, utilize a protoboard!
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 35 / 45
Primeiro exemplo melhorado
O resultado:
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 36 / 45
Botoes
Podemos controlar alguns dos componentes do sistema utilizandobotoes
Botoes controlam a passagem da corrente
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 37 / 45
Botoes
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 38 / 45
Exemplos
Acender um LED utilizando um botao
Ideia principal: se apertamos o botao, o LED acende. Se o soltarmos,o LED apaga;
Como implementar isso?
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 39 / 45
Sensores
Sensores sao utilizados para captar informacoes do ambiente
Iluminacao, temperatura, umidade...
Traduzem essas variaveis em forma de tensao
Mas, temperatura, pressao, luminosidade etc. sao variaveis contınuas
Ou seja, precisamos captar valores contınuos de tensao para trabalharcom essas variaveis
Portas analogicas!
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 40 / 45
Sensor de Luminosidade - LDR
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 41 / 45
Sensores
Usamos as portas analogicas para receber estas informacoes
Recebemos valores entre 0V e 5V e traduzimos como um inteiro entre0 e 1023
Exemplo: Sensor de luminosidade
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 42 / 45
Sensor de Luminosidade - LDR
LDR - Light Dependent Resistor
Resistor sensıvel a radiacao luminosa
Quanto maior a luminosidade do ambiente, menor a resistencia
Ou seja, para luminosidade 0 (zero), teremos resistencia maxima
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 43 / 45
Sensor de Luminosidade - LDR
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 44 / 45
Exercıcios
Tarefas:
Captar, atraves de uma entrada analogica, a quantidade de luzrecebida do ambiente, mostrando este valor no monitor serial
Criar um LED inteligente - ou seja, ele so acende quando a luz estabaixa
Criar um LED que acenda de forma inversamente proporcional a luzdo ambiente - ou seja, quanto mais escuro o ambiente, maior aintensidade do brilho do LED
Gabriel Vasiljevic Wanderson Ricardo Minicurso de Arduino August 28, 2015 45 / 45