Desenvolvimento Tecnolgico e
Inovao do Ifes
v. 4 - 2013
http://nera.sr.ifes.edu.br
Contato:
Twitter: @f_n_martins
http://www.facebook.com/felipenm
felipe.n.martins@gmail.com
Contedo
Arduino;
Microcontrolador;
Primeiro programa;
Um pouco de eletrnica (pouco mesmo!);
Programas mais legais;
Prticas (montagem e programao);
Avanando com o Arduino: shields,
comunicao sem fio, aplicaes em
robtica...
Felipe Nascimento Martins
O que Arduino?
Arduino hardware
Arduino hardware
Arduino software
Clones do Arduino
Freeduino
Clones do Arduino
Seeduino
Clones do Arduino
Brasuno
Clones do Arduino
Severino
Similares ao Arduino
Similares ao Arduino
Similares ao Arduino
Similares ao Arduino
LaunchPad - MSP430
Similares ao Arduino
LaunchPad - MSP430
US$4,30
com frete
grtis!!
http://www.ti.com/tool/msp-exp430g2
Arduino Uno
Microcontrolador: ATmega328;
Tenso de operao: 5V;
Tenso de entrada (recomendada): 7-12V;
Pinos digitais de E/S:14 (6 podem ter sinal PWM);
Pinos com entrada analgica: 6;
Corrente mxima por pino de E/S: 40 mA;
Hardware para comunicao serial: 1 porta;
Memria Flash (de programa): 32 kB, dos quais 0,5 kB
so usados pelo bootloader;
Memria SRAM: 2 kB; EEPROM: 1 kB;
Frequncia de clock: 16 MHz.
Microcontrolador: ATmega2560;
Tenso de operao: 5V;
Tenso de entrada (recomendada): 7-12V;
Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
Pinos com entrada analgica: 16;
Corrente mxima por pino de E/S: 40 mA;
Hardware para comunicao serial: 4 portas;
Memria Flash (de programa): 256 kB, dos quais 8 kB
so usados pelo bootloader;
Memria SRAM: 8 kB; EEPROM: 4 kB;
Frequncia de clock: 16 MHz.
O que um Microcontrolador?
Chip;
CPU de pequeno porte, capaz de executar
um conjunto de instrues;
Ou seja, possui um microprocessador!
Instrues simples e rpidas;
Possui memria(s);
Possui perifricos;
Pode se comunicar com outros perifricos;
etc.
Felipe Nascimento Martins
Componentes de um Microcontrolador
Microcontrolador
Conversor
D/A
EEPROM
Porta
Serial
Conversor
A/D
CPU
Porta
Paralela
PWM
RAM
Temporizadores
Exemplos de Microcontroladores
Exemplos de Microcontroladores
Exemplos de Microcontroladores
Microcontroladores do Arduino
ATMEL
Arduino
Arduino
Processador
Flash
kB
EEPROM
kB
SRAM
kB
Dig.
I/O
Pinos
A/D
Clock
(MHz)
Pinos
PWM
Duemilanove
ATmega168/328P
16/32
0,5/1
0,5
14
16
Uno
ATmega328P
32
14
16
Mega
ATmega1280
128
54
16
16
15
Mega2560
ATmega2560
256
54
16
16
15
ATmega168 ou
ATmega328
16/32
0,5/1
0,5
14
16
ATmega168V ou
ATmega328V
16/32
0,5
14
16
ATmega32u4
32
2,5
20
12
16
AT91SAM3X8E
512
--
96
54
12
84
12
ATmega32u4
32
2,5
20
12
16
Nano
LilyPad
Leonardo
Due
Esplora
Arduino - Microcontrolador
Arduino - Microcontrolador
ATmega328:
No Arduino Uno:
pinos digitais 0 a 13 (0 a 13);
pinos analgicos 0 a 5 (14 a 19).
Prtica 1: Pisca-LED
Montagem:
Um pouco de eletrnica
Um pouco de eletrnica
Ok. Entendi o programa.
Mas o que acontece nos
pinos do Arduino?
A funo
digitalWrite(12,HIGH);
faz com que o pino 12 v
para nvel alto, ou seja,
ele fica com 5V.
Um pouco de eletrnica
Ok. Entendi o programa.
Mas o que acontece nos
pinos do Arduino?
A funo
digitalWrite(12,HIGH);
faz com que o pino 12 v
para nvel alto, ou seja,
ele fica com 5V.
Este pino est ligado ao
RESISTOR+LED, e ao pino
GND (0V).
Um pouco de eletrnica
Ok. Entendi o programa.
Mas o que acontece nos
pinos do Arduino?
A funo
digitalWrite(12,HIGH);
faz com que o pino 12 v
para nvel alto, ou seja,
ele fica com 5V.
Este pino est ligado ao
RESISTOR+LED, e ao pino
GND (0V).
um circuito srie, por
onde circula corrente!
+5V
0V
Um pouco de eletrnica
Em resumo:
a circulao de corrente
eltrica (eltrons) que faz
acender o LED;
+5V
Um pouco de eletrnica
Em resumo:
a circulao de corrente
eltrica (eltrons) que faz
acender o LED;
A corrente s existir se
houver diferena de
potencial eltrico
(diferena de tenso) entre
pontos do circuito: 5V 0 =
5V;
Tenso: volt [V];
Corrente: ampre [A].
+5V
0V
Felipe Nascimento Martins
Um pouco de eletrnica
A funo
digitalWrite(12,LOW);
faz com que o pino 12 v
para nvel baixo, ou seja,
ele fica com 0V.
Logo, como no h
diferena de tenso entre
os pinos 12 e GND, a
corrente zero => LED
apaga.
0V
0V
Felipe Nascimento Martins
Um pouco de eletrnica
Um pouco de eletrnica
Um pouco de eletrnica
Um pouco de eletrnica
Clculo da corrente:
Lei de Ohm: V = R * I
V = 5V, R = 220.
I = 5 / 220
I = 0,0227 A = 22,7 mA
Um pouco de eletrnica
Clculo da corrente:
Lei de Ohm: V = R * I
V = 5V, R = 220 + 220.
I = 5 / 440
I = 0,0114 A = 11,4 mA
Podemos calcular a queda de
tenso em cada resistor:
VR = R * I, R = 220, I = 11,4 mA.
VR = 220 * 0,0114 = 2,5 V.
Um pouco de eletrnica
Clculo da corrente:
O LED tem queda de
tenso fixa = ~1,73V. Logo:
V = 5 1,73 = 3,27V.
V = R * I => I = V / R.
I = 3,27 / 220 = 0,0149 A
I = 14,9mA.
+5V
0V
Felipe Nascimento Martins
Um pouco de eletrnica
+5V
0V
Felipe Nascimento Martins
Simulador: 123d.circuits.io
Detalhes: http://123d.circuits.io/circuits/34111/edit#
Felipe Nascimento Martins
Diodo
Diodo
Diodo - exemplos
Capacitor
Capacitor - exemplos
Arduino
Outras funes:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtm valor entre 0 e 1023 proporcional tenso no
pino (entre 0 e 5V). Tempo de converso = 100s.
while(analogRead(A2) < 950);
Mantm-se em loop at que o valor de retorno da
funo analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de cdigo at que conta >= 6.
Felipe Nascimento Martins
Arduino
Outras funes:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtm valor entre 0 e 1023 proporcional tenso no
pino (entre 0 e 5V). Tempo de converso = 100s.
while(analogRead(A2) < 950);
Mantm-se em loop at que o valor de retorno da
funo analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de cdigo at que conta >= 6.
Felipe Nascimento Martins
Arduino
Outras funes:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtm valor entre 0 e 1023 proporcional tenso no
pino (entre 0 e 5V). Tempo de converso = 100s.
while(analogRead(A2) < 950);
Mantm-se em loop at que o valor de retorno da
funo analogRead seja maior que 950.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de cdigo at que conta >= 6.
Felipe Nascimento Martins
Arduino
Outras funes:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtm valor entre 0 e 1023 proporcional tenso no
pino (entre 0 e 5V). Tempo de converso = 100s.
while(analogRead(A2) < 950);
Mantm-se em loop at que o valor de retorno da
funo analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de cdigo at que conta >= 6.
Felipe Nascimento Martins
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor = analogRead(A2);
Serial.println(sensor, DEC);
}
Arduino
A.
void setup() {
...
}
void loop() {
...
}
Felipe Nascimento Martins
Comunicao serial
Comunicao serial
Comunicao serial
OK.
Mas como posso transmitir outras informaes
alm de zeros e uns?
Comunicao serial
OK.
Mas como posso transmitir outras informaes
alm de zeros e uns?
Existe uma tabela que relaciona caracteres a
sequncias de zeros e uns:
ASCII (American Standard Code for
Information Interchange).
Esta tabela criou um padro para troca de
informaes em sistemas binrios.
Tabela ASCII
Arduino
int i, numero;
void setup() {
Serial.begin(9600);
}
void loop() {
while (true) {
Serial.print("Entre com um numero: ");
while (Serial.available()==0);
numero = Serial.read();
Felipe Nascimento Martins
PWM
A1
A2
A3
Motor de Passo
Servomotor
Servomotor
Servomotor
Servomotor
Servomotor
Transistor
Ethernet Shield:
2
IC
Detalhes: http://nossosrobos.blogspot.com.br/2011/08/arduino-conversando-com-nxt-via-rs-485.html
http://nossosrobos.blogspot.com.br/2013/03/comunicacao-ic-entre-lego-nxt-e-arduino.html
Felipe Nascimento Martins
Arduino Nano
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2011/12/arduino-wireless.html
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2012/01/lcd-para-seu-robo-com-arduino.html
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html
Felipe Nascimento Martins
Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html
Arduino Robot
Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html
Felipe Nascimento Martins
Softwares gratuitos
http://123d.circuits.io
Referncias
Obrigado!
Felipe N. Martins
@f_n_martins
www.facebook.com/felipenm