SlideShare uma empresa Scribd logo
1 de 256
Baixar para ler offline
v. 2 - 2014
Introdução a
Sistemas Embarcados
com Arduino
Felipe Nascimento Martins
O trabalho Introdução ao Arduino de Felipe Nascimento Martins foi
licenciado com uma Licença
Creative Commons - Atribuição-CompartilhaIgual 3.0 Não Adaptada.
Introdução a
Sistemas Embarcados
com Arduino
Felipe Nascimento Martins
Contato:
Twitter: @f_n_martins
http://www.facebook.com/felipenm
felipe.n.martins@gmail.com
Conteúdo
• Sistemas embarcados;
• Arduino: características de hardware;
• Arduino: características de software;
• Microcontrolador;
• Eletrônica: conceitos básicos;
• Planejamento de programas;
• Sensores e atuadores;
• Práticas (montagem e programação);
• Avançando com o Arduino: shields, comunicação
sem fio, aplicações em robótica...
Felipe Nascimento Martins
Felipe Nascimento Martins
Sistemas Embarcados
Sistema Embarcado
• Sistema baseado em microcontroladores em
que o computador é encapsulado e dedicado
ao dispositivo ou sistema que ele controla;
• Realiza um conjunto de tarefas pré-definidas,
com requisitos específicos;
• Além do computador dedicado, em geral
possui sensores, atuadores e uma interface
com o usuário.
Felipe Nascimento Martins
Sistema de Controle Embarcado
Felipe Nascimento Martins
Exemplos de Sistemas Embarcados
• MP3 player, relógio digital, calculadora,
controlador de veículo elétrico, navegador
com GPS, leitora para pagamento com
cartões de crédito, robô, semáforo, roteador,
console de vídeo game, lavadora de roupas,
marca-passo, quadricóptero, forno de micro-
ondas, tablet, medidor de pressão arterial,
televisão etc.
Felipe Nascimento Martins
Exemplos de Aplicação
Felipe Nascimento Martins
O que é Arduino?
• Arduino é uma plataforma de prototipagem
eletrônica open-source, baseada nos princípios
de flexibilidade e facilidade de uso para hardware
e software.
• Consiste de uma placa com microcontrolador
programável preparada para receber sinais de
sensores e acionar atuadores.
• Sua linguagem de programação é baseada em
Wiring (baseado em C/C++).
• A placa pode funcionar em conjunto ou de forma
independente do computador.
Felipe Nascimento Martins
Arduino – hardware
Felipe Nascimento Martins
Arduino – hardware
Felipe Nascimento Martins
Arduino – hardware
Felipe Nascimento Martins
Arduino – software
Arduino é Open Source
• Desenvolvido por: Massimo Banzi, David
Cuartielles, Tom Igoe, Gianluca Martino e David
Mellis, na Itália, em 2005;
• Todo o projeto é aberto: open source hardware
and software;
• 200 placas vendidas em 2005, 5.000 em 2006,
30.000 em 2007 e mais de 300.000 em 2011 e
cerca de 1 milhão até setembro de 2013!
• Site oficial: www.arduino.cc
Felipe Nascimento Martins
Arduino é Open Source!
Felipe Nascimento Martins
Arduino é Open Source!
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
• O nome Arduino é marca registrada!
Felipe Nascimento Martins
Clones do Arduino
• Freeduino
Felipe Nascimento Martins
Clones do Arduino
• Seeduino
Felipe Nascimento Martins
Clones do Arduino
• Brasuíno
Felipe Nascimento Martins
Clones do Arduino
• Severino
Felipe Nascimento Martins
Similares ao Arduino
• chipKIT Uno32 - PIC32MX320F128 (32 bits,
80MHz, 128kB Flash, 16kB SRAM)
Felipe Nascimento Martins
Similares ao Arduino
• Olimexino – STM32F103RBT6 (núcleo ARM Cortex
M3, 32 bits, 128kB, 72MHz)
Felipe Nascimento Martins
Similares ao Arduino
• Adafruit Trinket – ATtiny85
Felipe Nascimento Martins
Similares ao Arduino
• TI LaunchPad:
MSP430
Felipe Nascimento Martins
Similares ao Arduino
• LaunchPad:
ARM Cortex M4
Felipe Nascimento Martins
Compatível com Arduino
Felipe Nascimento Martins
Felipe Nascimento Martins
Características de Hardware
Arduino Uno
• Microcontrolador: ATmega328;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S:14 (6 podem ter sinal PWM);
• Pinos com entrada analógica: 6;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 1 porta serial (UART TTL),
I2C (TWI), SPI;
• Memória Flash (de programa): 32 kB, dos quais 0,5 kB
são usados pelo bootloader;
• Memória SRAM: 2 kB; EEPROM: 1 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
Felipe Nascimento Martins
Arduino Leonardo
• Microcontrolador: ATmega32u4;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S: 20 (7 podem ter sinal PWM);
• Pinos com entrada analógica: 12;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 1 porta serial (UART TTL),
I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse);
• Memória Flash (de programa): 32 kB, dos quais 4 kB são
usados pelo bootloader;
• Memória SRAM: 2,5 kB; EEPROM: 1 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
Felipe Nascimento Martins
Arduino Mega 2560
• Microcontrolador: ATmega2560;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
• Pinos com entrada analógica: 16;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 4 portas seriais (UART
TTL), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse);
• Memória Flash (de programa): 256 kB, dos quais 8 kB
são usados pelo bootloader;
• Memória SRAM: 8 kB; EEPROM: 4 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
Felipe Nascimento Martins
Arduino Mega 2560
Felipe Nascimento Martins
Microcontrolador
O que é um Microcontrolador?
– Chip;
– CPU de pequeno porte, capaz de executar
um conjunto de instruções;
– Ou seja, possui um microprocessador!
– Instruções simples e rápidas;
– Possui memória(s);
– Possui periféricos;
– Pode se comunicar com outros periféricos;
etc.
Felipe Nascimento Martins
Componentes de um Microcontrolador
Conversor
D/A
Conversor
A/D
PWM
CPU
EEPROM
RAM
Porta
Serial
Porta
Paralela
Temporizadores
Microcontrolador
Felipe Nascimento Martins
Diagrama de blocos da arquitetura
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale)
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale)
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Cadê o
Arduino??
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale)
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Felipe Nascimento Martins
• ATMEL
• ATmega168: Diecimila, Duemilanove, Nano,
LilyPad;
• ATmega328P: Duemilanove, Nano, Fio, LilyPad,
Uno;
• ATmega1280: Mega;
• ATmega2560: Mega2560;
• ATmega32u4: Leonardo, Esplora, LilyPad USB,
Yún, Robot;
• AT91SAM3X8E: Due.
Microcontroladores do Arduino
Felipe Nascimento Martins
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 6 16 6
Uno ATmega328P 32 1 2 14 6 16 6
Mega ATmega1280 128 4 8 54 16 16 15
Mega2560 ATmega2560 256 4 8 54 16 16 15
Nano
ATmega168 ou
ATmega328
16/32 0,5/1 0,5 14 8 16 6
LilyPad
ATmega168V ou
ATmega328V
16/32 0,5 1 14 6 16 6
Leonardo ATmega32u4 32 1 2,5 20 12 16 7
Due AT91SAM3X8E 512 -- 96 54 12 84 12
Esplora ATmega32u4 32 1 2,5 20 12 16 7
Arduino
Felipe Nascimento Martins
Arduino - Microcontrolador
Felipe Nascimento Martins
Arduino - Microcontrolador
• ATmega328 (Arduino Uno):
• Núcleo AVR RISC de 8 bits;
• 32kB Flash, 2kB RAM, 1kB EEPROM;
• 23 pinos de E/S;
• 3 temporizadores/contadores;
• USART, I2C, interface a 2 fios SPI;
• 6 canais de conversor A/D de 10 bits;
• WDT com oscilador interno;
• Clock máximo de 20MHz;
• Opera de 1,8V a 5,5V.
Felipe Nascimento Martins
Arduino - Microcontrolador
• ATmega32u4 (Arduino Leonardo):
• Núcleo AVR RISC de 8 bits;
• 32kB Flash, 2kB RAM, 1kB EEPROM;
• 26 pinos de E/S;
• 3 temporizadores/contadores;
• USART, USB transceiver, I2C, 2 interfaces a 2 fios SPI;
• 12 canais de conversor A/D de 10 bits;
• WDT com oscilador interno;
• Clock máximo de 16MHz;
• Opera de 2,7V a 5,5V.
Felipe Nascimento Martins
Felipe Nascimento Martins
Características de Software
Arduino – Programação
Felipe Nascimento Martins
Arduino – Programação
Programa.HEXCompilador
Programador
IDE
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
No Arduino Uno:
pinos digitais 0 a 13 (0 a 13);
pinos analógicos 0 a 5 (14 a 19).
Prática 1: Pisca-LED
• Montagem:
Felipe Nascimento Martins
Matriz de contatos (Breadboard ou Protoboard)
Felipe Nascimento Martins
Felipe Nascimento Martins
http://123d.circuits.io/circuits/155964-pratica-1-pisca-led/embed
Prática 1: Pisca-LED
Felipe Nascimento Martins
Eletrônica:
Conceitos Básicos
Um pouco de eletrônica
• Ok. Entendi o programa.
• Mas o que acontece nos
pinos do Arduino?
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa.
• Mas o que acontece nos
pinos do Arduino?
• A função
digitalWrite(12,HIGH);
faz com que o pino 12 vá
para “nível alto”, ou seja,
ele fica com 5V.
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa.
• Mas o que acontece nos
pinos do Arduino?
• A função
digitalWrite(12,HIGH);
faz com que o pino 12 vá
para “nível alto”, ou seja,
ele fica com 5V.
• Este pino está ligado ao
RESISTOR+LED, e ao pino
GND (0V).
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa.
• Mas o que acontece nos
pinos do Arduino?
• A função
digitalWrite(12,HIGH);
faz com que o pino 12 vá
para “nível alto”, ou seja,
ele fica com 5V.
• Este pino está ligado ao
RESISTOR+LED, e ao pino
GND (0V).
• É um circuito série, por
onde circula corrente!
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Em resumo:
• É a circulação de corrente
elétrica (elétrons) que faz
acender o LED;
• Experimente retirar o fio
que liga o LED ao GND,
mantendo o pino 12 em 5V.
• O LED apaga pois a
corrente precisa circular
num circuito fechado!
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Em resumo:
• É a circulação de corrente
elétrica (elétrons) que faz
acender o LED;
• A corrente só existirá se
houver diferença de
potencial elétrico
(diferença de tensão) entre
pontos do circuito: 5V – 0 =
5V;
• Tensão: volt [V];
• Corrente: ampère [A].
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• A função
digitalWrite(12,LOW);
faz com que o pino 12 vá
para “nível baixo”, ou seja,
ele fica com 0V.
• Logo, como não há
diferença de tensão entre
os pinos 12 e GND, a
corrente é zero => LED
apaga.
Felipe Nascimento Martins
0V
0V
Um pouco de eletrônica
• Beleza. Mas, e o resistor?
Serve para quê?
Felipe Nascimento Martins
Um pouco de eletrônica
• Beleza. Mas, e o resistor?
Serve para quê?
• O elemento resistor serve
para dificultar a circulação
de corrente elétrica;
• Ele é colocado no circuito
para evitar que a corrente
cresça muito, o que pode
provocar problemas;
• No nosso circuito, o
resistor serve para evitar
que o LED queime devido
a uma corrente muito alta.
Felipe Nascimento Martins
Um pouco de eletrônica
• Quanto maior for o valor
da resistência do resistor,
menor será a corrente
(para uma mesma
diferença de tensão).
• O brilho do LED varia com
a corrente.
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo da corrente:
• Lei de Ohm: V = R * I
• V = 5V, R = 220Ω.
• I = 5 / 220
• I = 0,0227 A = 22,7 mA
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo 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
tensão em cada resistor:
• VR = R * I, R = 220Ω, I = 11,4 mA.
• VR = 220 * 0,0114 = 2,5 V.
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo da corrente:
• O LED tem queda de
tensão 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.
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Note que se a tensão do
pino 12 pudesse ser
alterada, a corrente no
circuito seria diferente.
• Ou seja, poderíamos
controlar o brilho do LED!
Felipe Nascimento Martins
+5V
0V
Prática 2: Código Morse
• Modifique o programa
Pisca-LED de forma que o
LED sinalize
indefinidamente o código
Morse que representa
S.O.S.:
...---...
OBS.: “ponto” é uma piscada
rápida do LED (pouco
tempo aceso), enquanto o
“traço” é uma piscada mais
lenta (mais tempo aceso).
Felipe Nascimento Martins
Diodo
• Dispositivo semicondutor que permite a circulação de
corrente apenas em um sentido;
• A tensão em seus terminais deve ter polaridade correta:
mais positiva no terminal A (anodo) e mais negativa no
terminal K (catodo);
• Apresenta queda de tensão aproximadamente fixa
(~0,7V) quando a corrente circula;
• Usado em circuitos retificadores: transforma corrente
alternada para contínua.
Felipe Nascimento Martins
Diodo
• Retificador de onda completa:
Felipe Nascimento Martins
Diodo - exemplos
Felipe Nascimento Martins
Prática 3: Não pisca-LED
• LED é um diodo especial
que brilha quando a
corrente circula por ele.
• Experimente inverter a
ligação dos pinos do LED
em nosso circuito e
verifique que ele não vai
mais piscar, mesmo
quando houver diferença
de potencial nos pinos!
Felipe Nascimento Martins
Capacitor
• Elemento que armazena energia na forma de campo
elétrico;
• Existem vários tipos: alguns têm polaridade (como os
eletrolíticos), outros não (como os cerâmicos);
• A tensão em seus terminais depende da carga
acumulada, e não varia instantaneamente;
• Em corrente contínua, são usados como filtros ou
“suavizadores” de tensão.
Felipe Nascimento Martins
Capacitor - exemplos
Felipe Nascimento Martins
Capacitor – exemplo de aplicação
• Retificador de onda completa com capacitor:
Felipe Nascimento Martins
Felipe Nascimento Martins
Sensores Digitais
Sensores com Sinais Digitais
• Diversos sensores proveem informação através
de sinais digitais:
• Botão;
• Porta aberta/fechada;
• Andar de elevador;
• Fim-de-curso em máquinas industriais;
• Equipamento ligado/desligado;
• Nível de reservatório;
• Presença;
• Toque;
• Etc.
Felipe Nascimento Martins
Sensores com Sinais Digitais
• Do ponto de vista elétrico, comportam-se como se
fossem uma chave liga/desliga;
• Nesses casos, podemos fazer a ligação de modo
que o sinal do sensor seja 0V ou 5V;
• No Arduino, a função utilizada para leitura de sinais
digitais é digitalRead(pino); onde pino é o
número do pino em que o sensor está ligado;
• Para Vs = 5V, retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
Prática 4: Leitura de Sinal Digital
Felipe Nascimento Martins
• Monte o circuito ao
lado.
• Altere o programa
da prática 1 para
que o LED acenda
com o botão for
pressionado, e
apague quando o
botão for liberado.
Felipe Nascimento Martins
http://123d.circuits.io/circuits/155968-pratica-4-leitura-de-sinal-digital/embed
Prática 4: Leitura de Sinal Digital
Felipe Nascimento Martins
Programas mais complexos
Funções do Arduino
• Já vimos:
void setup(){
...
}
void loop(){
...
}
Felipe Nascimento Martins
Funções do Arduino
• Já vimos:
pinMode(pino, OUTPUT ou INPUT);
digitalWrite(pino, LOW ou HIGH);
delay(número inteiro);
digitalRead(pino);
Felipe Nascimento Martins
Funções do Arduino
• Outras funções:
delayMicroseconds(número inteiro);
Pausa o programa pela quantidade definida de
microssegundos.
millis();
Retorna o número de milissegundos que se passou
desde que o microcontrolador foi ligado.
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no
pino (entre 0 e 5V). Tempo de conversão = 100μs.
Felipe Nascimento Martins
Funções do Arduino
• Outras funções:
delayMicroseconds(número inteiro);
Pausa o programa pela quantidade definida de
microssegundos.
millis();
Retorna o número de milissegundos que se passou
desde que o microcontrolador foi ligado.
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no
pino (entre 0 e 5V). Tempo de conversão = 100μs.
Felipe Nascimento Martins
Funções do Arduino
• Outras funções:
delayMicroseconds(número inteiro);
Pausa o programa pela quantidade definida de
microssegundos.
millis();
Retorna o número de milissegundos que se passou
desde que o microcontrolador foi ligado.
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no
pino (entre 0 e 5V). Tempo de conversão = 100μs.
Felipe Nascimento Martins
Funções do Arduino
• Exemplos:
while(analogRead(A2) < 950){
... // bloco de código
}
Executa o bloco de código até que o valor de retorno
da função analogRead seja maior que 950.
for(int conta = 0; conta < 6; conta++){
... // bloco de código
}
Executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
Funções do Arduino
• Exemplos:
while(analogRead(A2) < 950){
... // bloco de código
}
Executa o bloco de código até que o valor de retorno
da função analogRead seja maior que 950.
for(int conta = 0; conta < 6; conta++){
... // bloco de código
}
Executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
Funções do Arduino
• Exemplos:
if (brilho == 0 || brilho == 255) {
... // bloco de código 1
}
else {
... // bloco de código 2
}
Executa o bloco de código 1 se a condição de teste
for verdadeira. Caso contrário, executa o bloco de
código 2.
Felipe Nascimento Martins
Criando Funções no Arduino
int led = 13;
void setup(){
pinMode(led, OUTPUT);
}
void inverteLED(){
if (digitalRead(led)==0)
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
}
void loop(){
inverteLED();
delay(500);
}
Felipe Nascimento Martins
Tipos de Dados no Arduino
Felipe Nascimento Martins
boolean (8 bits) – true/false;
byte (8 bits) – número entre 0 e 255;
char (8 bits) – caractere (número entre -128 e 127);
unsigned char (8 bits) – mesmo tipo que ‘byte’;
word (16 bits) – número entre 0 e 65.535;
unsigned int (16 bits) – mesmo tipo que ‘word’;
int (16 bits) – número entre -32.768 e 32.767;
unsigned long (32 bits) – número entre 0 e
4.294.967.295;
long (32 bits) – número entre -2.147.483.648 e
2.147.483.647;
float (32 bits) – entre -3,4028235E38 to 3,4028235E38.
Linguagem do Arduino
Felipe Nascimento Martins
Linguagem do Arduino
Felipe Nascimento Martins
Linguagem do Arduino
Felipe Nascimento Martins
Planejamento de um Programa
• Fluxogramas
Felipe Nascimento Martins
Planejamento de um Programa
Felipe Nascimento Martins
Exercício: Desenhe o Fluxograma
const int ledPin = 13; // pino do LED
int ledState = LOW; // estado do LED
long previousMillis = 0; // última atualização do LED
long interval = 500; // interval para piscar LED
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop(){
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
} Felipe Nascimento Martins
Prática 5: Leitura de Sinal Digital
Felipe Nascimento Martins
• Monte o circuito ao
lado.
• Altere o programa
da prática 4 para
que o LED troque
de estado a cada
pressionar de
botão: se estiver
apagado, acende; e
vice-versa.
Prática 5: Leitura de Sinal Digital
Felipe Nascimento Martins
• Monte o circuito ao
lado.
• Altere o programa
da prática 4 para
que o LED troque
de estado a cada
pressionar de
botão: se estiver
apagado, acende; e
vice-versa.
• Funcionou como
esperado?
Leitura de Sinal Digital
Felipe Nascimento Martins
Bounce (oscilação de contato)
Felipe Nascimento Martins
Técnica para fazer debounce do sinal
Felipe Nascimento Martins
Felipe Nascimento Martins
int led_pin = 13;
int led_state = LOW;
int button_pin = 0;
int button_state;
// the setup routine runs once when you press reset:
void setup() {
pinMode(led_pin, OUTPUT);
pinMode(button_pin, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// Enquanto o botão não for pressionado, não faz nada.
while (digitalRead(button_pin)!=0){
}
// Depois que o botão é pressionado, aguarda ser solto
while (digitalRead(button_pin)==0){
}
// Atraso para aguardar oscilação de contato terminar
delay(50);
// Inverte o estado da variável led_state
led_state = !led_state;
// Copia variável led_state para o pino do LED
digitalWrite(led_pin, led_state);
}
Felipe Nascimento Martins
Sensores Analógicos
Sensores com Sinais Analógicos
• Diversos sensores proveem informação através
de sinais analógicos:
• Intensidade luminosa (LDR);
• Deslocamento (angular ou linear);
• Força/Torque (SFR, strain gage);
• Proximidade;
• Aceleração;
• Inclinação;
• Temperatura;
• Etc.
Felipe Nascimento Martins
Intensidade Luminosa: LDR
• Resistor cuja resistência varia conforme a
intensidade da luz incidente.
• Vários modelos com diferentes sensibilidades.
• Datasheet: http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf
Felipe Nascimento Martins
Intensidade Luminosa: LDR
Felipe Nascimento Martins
Prática 6: Usando o sensor de luz
• Monte o circuito com LDR – Light Dependent
Resistor (sensor de luz).
• Escreva um programa que acenda o LED do pino
13 quando houver pouca luz e apague o mesmo
LED quando houver muita luz.
void setup() {
...
}
void loop() {
...
}
Felipe Nascimento Martins
Deslocamento
• Deslocamento linear ou angular pode ser medido
com potenciômetros;
• Com alimentação de 5V, o sinal varia de 0 a 5V
(mínimo a máximo deslocamento);
• Há potenciômetros angulares multivoltas e
potenciômetros lineares de longo alcance.
Felipe Nascimento Martins
Deslocamento
Felipe Nascimento Martins
Força e Torque
• FSR (Force Sensing Resistor) e Strain Gage
(extensômetro): resistência varia com a
deformação.
• Usados para medir força e torque.
• Datasheets:
FSR - http://www.trossenrobotics.com/productdocs/2010-10-26-DataSheet-FSR402-Layout2.pdf
Célula de carga - http://www.alfainstrumentos.com.br/manuais/celulas/catalogo_celulas_0302cp.pdf
Felipe Nascimento Martins
Strain Gage
Felipe Nascimento Martins
Proximidade por infravermelho
• Sharp GP2Y0A21YK0F
• Tensão de alimentação: 5V;
• Pode medir distâncias de 10 a 80 cm;
• Sinal: tensão entre 1,65V e 2,15V.
• Há outros modelos com outras faixas de medição.
Datasheet: https://www.sparkfun.com/datasheets/Components/GP2Y0A21YK.pdf
Felipe Nascimento Martins
Proximidade por infravermelho
Felipe Nascimento Martins
Aceleração/Inclinação
• ADXL335
• Tensão de alimentação: 3,3 V;
• Mede aceleração nos 3 eixos do espaço;
• Mede aceleração de até 3g;
• Mede aceleração da gravidade (estática),
podendo ser usado para medir inclinação.
• Datasheet: https://www.sparkfun.com/datasheets/Components/SMD/adxl335.pdf
Felipe Nascimento Martins
Temperatura: RTDs
• RTD = Resistance Temperature Detectors
• Normalmente confeccionados com um fio (ou
enrolamento) de alta pureza de cobre, níquel ou
platina (estes são os melhores).
• RTDs comuns podem medir com erros da ordem de
±0,1ºC. Os de platina (PRT – Platinum Resistance
Thermometer) podem chegar a ±0,0001ºC.
• São estáveis e lineares, com ótima repetitividade.
• Aplicações incluem refrigeração de alimentos e
compostos químicos, fornos de fusão (produção de
metais e ligas), destilação fracionada (produção de
bebidas e derivados de petróleo), usinas nucleares e
aquecedores e refrigeradores domésticos.
Felipe Nascimento Martins
Temperatura: Termistores NTC/PTC
• São semicondutores cerâmicos que têm sua
resistência alterada com a variação de temperatura.
• Geralmente seu coeficiente de variação é maior que o
dos RTDs, mas a variação de resistência é menos
linear.
• Podem ser de dois tipos: NTC ou PTC (Negative ou
Positive Temperature Coefficient).
• Faixa típica de operação: de -100ºC a 300ºC.
• Resistência a 25ºC: de 0,5Ω a 100MΩ.
• Aplicações: circuitos simples de medição de
temperatura; para reduzir corrente de carga de
capacitores em fontes chaveadas (NTCs) etc.
Felipe Nascimento Martins
Temperatura: RTD x NTC
Temperatura: RTD ou NTC
Felipe Nascimento Martins
Temperatura: TMP35/36/37
• Tensão de alimentação: 2,7 V a 5,5 V;
• Fator de escala: 10 mV/°C;
• Precisão: ±2°C;
• Linearidade: ±0,5°C;
• Faixa de operação: −40°C a +125°C.
• Datasheet: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Temp/TMP35_36_37.pdf
Felipe Nascimento Martins
Temperatura: TMP35/36/37
Felipe Nascimento Martins
Felipe Nascimento Martins
Comunicação Serial
Comunicação serial
• Bit: menor unidade de informação -> 0 ou 1;
• Informação é enviada bit a bit, em sequência;
• Síncrona: uma linha de dados e outra de clock:
Felipe Nascimento Martins
Comunicação serial
• Bit: menor unidade de informação -> 0 ou 1;
• Informação é enviada bit a bit, em sequência;
• Assíncrona: apenas uma linha de dados. A
velocidade deve ser definida:
Felipe Nascimento Martins
Comunicação serial
• OK.
• Mas como posso transmitir outras informações
além de “zeros” e “uns”?
Felipe Nascimento Martins
Comunicação serial
• OK.
• Mas como posso transmitir outras informações
além de “zeros” e “uns”?
• Existe uma tabela que relaciona caracteres a
sequências de zeros e uns:
• ASCII (American Standard Code for
Information Interchange).
• Esta tabela criou um padrão para troca de
informações em sistemas binários.
Felipe Nascimento Martins
Felipe Nascimento Martins
Comunicação Serial no Arduino
• Microcontrolador possui hardware para
comunicação serial:
• Pino digital 0 (RX): recepção de dados;
• Pino digital 1 (TX): transmissão de dados;
• Bit 1 = 5V; Bit 0 = 0V;
• A maioria das placas Arduino possui hardware
que converte sinais do padrão serial assíncrono
para USB;
Felipe Nascimento Martins
Prática 7: Medindo Temperatura
• Monte o circuito com o sensor de temperatura.
• Escreva um programa que mostre o valor da
temperatura na tela do computador a cada 0,5s.
Felipe Nascimento Martins
Prática 7: Medindo Temperatura
• Exemplo de programa:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor = analogRead(A0);
Serial.println(sensor);
delay(500);
}
Felipe Nascimento Martins
Arduino
• A.
Prática 7: Medindo Temperatura
http://123d.circuits.io/circuits/155990-pratica-7-medindo-temperatura-sinal-analogico/embed
Felipe Nascimento Martins
Comunicação Serial no Arduino
• Serial.println(analogValue, DEC); //
envia analogValue (int) codificada em
ASCII no formato decimal
• Serial.println(analogValue, HEX); //
envia ASCII no formato hexadecimal
• Serial.println(analogValue, OCT); //
envia ASCII no formato octal
• Serial.println(analogValue, BIN); //
envia ASCII no formato binário
Felipe Nascimento Martins
Comunicação Serial no Arduino
• Serial.available(); // retorna 1 se
houver caracter disponível no buffer de
recepção. Caso contrário, retorna 0.
• Serial.read(); // lê um byte recebido
pela Serial (int)
• Exemplo:
int incomingByte;
if (Serial.available() > 0) {
incomingByte = Serial.read();
}
Felipe Nascimento Martins
Prática 8: Comunicação bidirecional
• Outro exemplo de comunicação serial: desta vez
o Arduino vai receber um dado do computador,
processá-lo e retornar o resultado pela porta
serial.
• Vamos analisar o programa:
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
if (numero>='0' && numero<='9')
Serial.println(numero-’0’);
else {
Serial.println("O valor deve ser numerico!");
continue;
}
numero-='0';
for (i = 0; i <= 10; i++) {
Serial.print(numero);
Serial.print(" x ");
Serial.print(i);
Serial.print(" = ");
Serial.println(numero*i);
}
Serial.println("");
}
}
Felipe Nascimento Martins
Prática 8: Comunicação bidirecional
Felipe Nascimento Martins
http://123d.circuits.io/circuits/155997-pratica-8-comunicacao-bidirecional-tabuada/embed
Felipe Nascimento Martins
Mais um pouco
de Eletrônica
Shift Registers
• Shift registers (ou Registradores de
Deslocamento) são memórias que recebem
uma sequência de bits enviados serialmente e
disponibilizam seus valores de forma
simultânea;
• Muito utilizados em sistemas embarcados
para economizar pinos de E/S dos
microcontroladores;
• CI 74HC595 é um shift register de 8 bits.
• Datasheet: http://arduino.cc/en/uploads/Tutorial/595datasheet.pdf
Felipe Nascimento Martins
Shift Registers
74HC595
Felipe Nascimento Martins
Shift Registers
74HC595
Felipe Nascimento Martins
Prática 9: Usando shift register
• Monte o circuito abaixo.
Felipe Nascimento Martins
Prática 9: Usando shift register
int latchPin = 8; //Pin connected to ST_CP of 74HC595
int clockPin = 12; //Pin connected to SH_CP of 74HC595
int dataPin = 11; //Pin connected to DS of 74HC595
void setup() {
//set pins to output so you can control the shift
register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
Felipe Nascimento Martins
Prática 9: Usando shift register
void loop() {
// count from 0 to 255 and display the number
for (int numberToDisplay = 0; numberToDisplay < 256;
numberToDisplay++) {
// take the latchPin low: LEDs don't change
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST,
numberToDisplay);
digitalWrite(latchPin, HIGH); // turn LEDs on
delay(500);
}
}
Felipe Nascimento Martins
Felipe Nascimento Martins
Controle de cargas analógicas
“Simulando” uma tensão analógica
• PWM = Pulse Width Modulation;
• Razão cíclica (duty cycle): define a tensão
média aplicada:
T(PWM) T(PWM) T(PWM)
A1 A2 A3
Felipe Nascimento Martins
Tensão média de um sinal PWM
Felipe Nascimento Martins
Sinal PWM versus sinal analógico
Felipe Nascimento Martins
Controle de potência por PWM
 P = V2 / R
analogWrite(11, 200);
 cria no pino 11 um sinal
PWM com razão cíclica
igual a 200;
 f = 490Hz;
 apenas alguns pinos
possuem saída PWM.
Felipe Nascimento Martins
Prática 10: Controle de brilho
int brilho = 0; // brilho do LED
int sensor; // valor do LDR
void setup() {
pinMode(A2, INPUT); // pino do LDR: entrada A2
pinMode(13, OUTPUT); // pino do LED: saida 13
Serial.begin(9600);
}
void loop() {
sensor = analogRead(A2); // le valor do LDR
brilho = map(sensor, 0, 1023, 0, 255);
Serial.println(brilho); // envia ao PC
analogWrite(13, brilho); // aciona LED
delay(100);
}
Felipe Nascimento Martins
Prática 11: Pisca-pisca suave
int brilho = 0; // brilho do LED
int variacao = 5; // quanto varia o brilho
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
analogWrite(13, brilho);
brilho = brilho + variacao;
if (brilho == 0 || brilho == 255) {
variacao = -variacao;
}
delay(30);
}
Felipe Nascimento Martins
Felipe Nascimento Martins
Módulo LCD
LCD – Liquid Cristal Display
• Opção prática de apresentar uma grande
quantidade de dados de forma relativamente
simples e barata;
• O módulo é constituído de um display de
cristal líquido (LCD) e de um controlador de
display;
• Existem dois tipos de módulo LCD: caractere
e gráfico.
Felipe Nascimento Martins
• Os displays de caracteres são mais baratos e
capazes de apresentar caracteres como
letras, números e símbolos;
• Sua tela é dividida em linhas e colunas, e
cada posição armazena um caractere;
• Não funcionam adequadamente para a
apresentação de gráficos.
LCD – Liquid Cristal Display
Felipe Nascimento Martins
• Os displays gráficos são mais caros e
complexos de programar;
• Podem apresentar basicamente qualquer tipo de
informação na tela, inclusive gráficos, fotos etc.
100 x 64 pixels 128 x 64 pixels
LCD – Liquid Cristal Display
Felipe Nascimento Martins
• Serão abordados neste curso os módulos de
caractere baseados no chip controlador
Hitachi HD 44780;
• É um chip que é praticamente padrão no
segmento de módulos de display LCD;
• Permite um interface simples com
microcontroladores.
LCD – Liquid Cristal Display
• Tem largura de barramento de dados
selecionável para 4 ou 8 bits;
• São necessárias três linhas de controle
adicionais: ENABLE, RS e R/W;
• A comunicação no modo de 4 bits é realizada
utilizando apenas as quatro linhas mais
significativas (D7 a D4). O byte é dividido em
dois nibbles onde o mais significativo é enviado
primeiro.
LCD – Liquid Cristal Display
Felipe Nascimento Martins
Bit 1 de dados do LCDD18
Bit 0 de dados do LCDD07
EnableE6
Read/WriteR/W5
Register SelectRS4
ContrasteVo3
Positivo (5V)Vdd2
TerraVss1
FunçãoNomePino
LCD – Liquid Cristal Display
Felipe Nascimento Martins
Catodo do back-light (se existir)K16
Anodo do back-light (se existir)A15
Bit 7 de dados do LCDD714
Bit 6 de dados do LCDD613
Bit 5 de dados do LCDD512
Bit 4 de dados do LCDD411
Bit 3 de dados do LCDD310
Bit 2 de dados do LCDD29
FunçãoNomePino
LCD – Liquid Cristal Display
Felipe Nascimento Martins
• O HD 44780 possui as seguintes memórias:
– 80 bytes de memória RAM (DDRAM – Data
Display RAM);
– 64 bytes de RAM para o gerador de
caracteres (CGRAM – Caracter Generator
RAM);
– 9920 bits de memória ROM (CGROM): 208
caracteres 5x8 ou 32 caracteres 5x10.
LCD – Liquid Cristal Display
Felipe Nascimento Martins
• O Arduino possui uma biblioteca para
utilização de LCDs de caractere;
• Após incluir a biblioteca, é necessário
declarar o display informando a que pinos do
Arduino o LCD está conectado;
• Em seguida, deve ser chamada a função de
inicialização, passando como parâmetros o
número de caracteres e de linhas que o LCD
possui.
LCD – Liquid Cristal Display
Felipe Nascimento Martins
Prática 12: Dados no LCD
#include <LiquidCrystal.h>
// inicializa bib. informando os pinos conectados:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // inicializa o LCD
lcd.print("hello, world!"); // mostra mensagem
}
void loop() {
// coloca cursor na coluna 0, linha 1:
lcd.setCursor(0, 1);
// mostra numero de segundos desde o reset:
lcd.print(millis()/1000);
delay(100);
}
Felipe Nascimento Martins
Prática 12: Dados no LCD
Felipe Nascimento Martins
Prática 12: Dados no LCD
Felipe Nascimento Martins
• Outras funções interessantes:
lcd.home(); // retorna cursor ao início
lcd.write(char); // imprime um caracter
lcd.blink(); // aciona cursor piscante
lcd.noBlink(); // desliga cursor piscante
lcd.autoscroll(); // ativa deslocamento a esquerda
lcd.noAutoscroll(); // desliga deslocamento
lcd.noDisplay(); // apaga tela (texto na memória)
lcd.display(); // liga tela (exibe caracteres)
lcd.rightToLeft(); // próxima letra à esquerda
lcd.leftToRight(); // próxima letra à direita
lcd.clear(); // limpa a tela
LCD – Liquid Cristal Display
Felipe Nascimento Martins
Prática 13: Valor do sensor no LCD
• Modifique o programa anterior para fazer com que a
primeira linha do LCD mostre o valor de temperatura
e a segunda linha mostre um relógio tipo HH:MM:SS.
Felipe Nascimento Martins
LCD gráfico 128 x 64 pixels
Detalhes: http://nossosrobos.blogspot.com.br/2012/01/lcd-para-seu-robo-com-arduino.html
Felipe Nascimento Martins
Felipe Nascimento Martins
Avançando com Arduino e
Sistemas Embarcados
Felipe Nascimento Martins
Motores Elétricos
Motor de Corrente Contínua (CC)
Felipe Nascimento Martins
• Alimentado em corrente contínua;
• Possui ímã e bobinas internamente;
• Velocidade é ajustada pela tensão de
alimentação (pode ser por PWM!);
• Sentido de giro é alterado pela polaridade.
Motor de Passo
Felipe Nascimento Martins
• Alimentado com sinais
digitais;
• Alimentação das
bobinas deve ser
sequencial;
• Permite controle preciso
de posição;
• Torque cai muito com o
aumento da velocidade.
Medição de deslocamento (encoder)
• Permite medir a velocidade e posição angular
dos motores;
• Precisão: número de pulsos por volta.
Felipe Nascimento Martins
Medição de deslocamento (encoder)
Felipe Nascimento Martins
Medição de deslocamento (encoder)
Felipe Nascimento Martins
Servomotor
Felipe Nascimento Martins
• É um motor CC que possui um sistema de
interno de medição e de controle:
• angular – controla a posição (giro) do eixo;
• contínuo – controla a velocidade do eixo;
Servomotor
Felipe Nascimento Martins
Servomotor
Felipe Nascimento Martins
• Normalmente é feito com um motor de
corrente contínua, um circuito eletrônico e
engrenagens para aumentar o torque;
Servomotor
Felipe Nascimento Martins
• Três fios: 2 de alimentação e um de controle;
• O sinal de referência (de posição ou
velocidade) é do tipo PWM.
Servomotor
Felipe Nascimento Martins
• Três fios: 2 de alimentação e um de controle;
• O sinal de referência (de posição ou
velocidade) é do tipo PWM.
Exemplo: Controle de Servomotores
Felipe Nascimento Martins
Felipe Nascimento Martins
Exemplo: Controle de Servomotores
#include <Servo.h>
Servo myservo; // create servo object
Servo myservo2;
int potpin = 0; // used to connect the potentiometer
int val; // value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin
myservo2.attach(10);
}
void loop() {
val = analogRead(potpin); // entre 0 e 1023
val = map(val, 0, 1023, 0, 179); // escalona
myservo.write(val);
myservo2.write(179-val);
delay(15);
} Felipe Nascimento Martins
Exemplo: Controle de Servomotores
Outros motores com Arduino
• Cada pino do Arduino pode fornecer, no máximo,
40mA de corrente -> pode não ser suficiente para
acionar um motor!
• Solução: usar transistores.
Felipe Nascimento Martins
Transistor
• Um transistor pode ser entendido
como uma “válvula” eletrônica: é
capaz de acionar cargas de alta
corrente a partir de um sinal de
controle de baixa corrente.
• Quanto maior for a corrente no pino
de “base” (B), maior será a corrente
entre os pinos “coletor” (C) e “emissor”
(E).
• Por exemplo, se a corrente na base
variar de 0 a 0,01 A, a corrente de
coletor pode variar de 0 a 1A!
Felipe Nascimento Martins
Exemplo: Motor CC com transistor
Felipe Nascimento Martins
Exemplo: Motor CC com transistor
Felipe Nascimento Martins
• Com um transistor é possível ligar e desligar um
motor, além de controlar sua velocidade (PWM);
• Mas, para inverter o sentido de giro de um motor
CC é necessário inverter o sentido de circulação
da corrente no motor;
• Com um transistor, a corrente circula apenas num
sentido;
• Solução: usar quatro transistores conectados em
forma de ponte: Ponte H.
Ponte H
Felipe Nascimento Martins
Ponte H
Felipe Nascimento Martins
Ponte H – exemplo
Felipe Nascimento Martins
Motor Shield oficial
Felipe Nascimento Martins
• Shield oficial para controle de motores: circuito
integrado com ponte H.
Motor Shield
• Pode acionar dois motores CC ou um motor de
passo: até 36V, 600mA, 5kHz.
Felipe Nascimento Martins
Motor Shield
• Exemplo: controle de velocidade dos motores
com o Shield Motor Control:
Felipe Nascimento Martins
• Pode acionar quatro
motores CC (46V, 4A) e
uma carga resistiva de até
30A.
Motor Shield 4 Power
Felipe Nascimento Martins
Felipe Nascimento Martins
Conectando Dispositivos
Comunicação Serial no Arduino
• A maioria das placas Arduino possui hardware
para implementação de comunicação serial em
diferentes padrões:
• SPI – Serial Peripheral Interface;
• TWI – Two Wire serial Interface (I2C);
• USART – Universal Synchronous and
Asynchronous serial Receiver and
Transmitter (estilo RS-232) – Já vimos este
tipo;
Felipe Nascimento Martins
SPI – Serial Peripheral Interface
Felipe Nascimento Martins
SPI
• SPI – Serial Peripheral Interface – é uma
interface de comunicação serial síncrona
utilizada para comunicação a curta distância:
• CIs conversores A/D e D/A;
• Memórias Flash e EEPROM;
• Relógios de tempo real;
• Sensores;
• Potenciômetros digitais;
• Telas de LCD; etc.
Felipe Nascimento Martins
SPI
• Na comunicação SPI sempre existe um
dispositivo mestre (em geral é o próprio
microcontrolador) que controla os periféricos;
• Três linhas são comuns a todos os dispositivos:
– MISO (Master In Slave Out) – linha pela qual o
escravo envia dados ao mestre;
– MOSI (Master Out Slave In) – linha pela qual o
mestre envia dados aos escravos;
– SCK (Serial Clock) – clock gerado pelo mestre
para sincronizar a comunicação.
Felipe Nascimento Martins
SPI
• Além das linhas MISO, MOSI e SCK, cada
dispositivo está conectado a uma linha SS:
• SS (Slave Select) – cada escravo possui uma
entrada desta linha, que é controlada pelo
mestre para habilitar ou desabilitar os
dispositivos individualmente:
• Em nível baixo: comunicação habilitada;
• Em nível alto: escravo ignora o mestre.
Felipe Nascimento Martins
SPI
Felipe Nascimento Martins
SPI com vários escravos
Felipe Nascimento Martins
SPI com vários escravos
Felipe Nascimento Martins
SPI com Arduino
• A biblioteca do Arduino faz a placa operar em
modo mestre;
• Ordem de transmissão dos dados (primeiro pelo
MSB ou pelo LSB): SPI.setBitOrder()
• Linha de clock fica em nível alto ou baixo
quando inativa e modo de amostragem de
dados: SPI.setDataMode()
• Velocidade de comunicação:
SPI.setClockDivider()
Felipe Nascimento Martins
Cartão de Memória SD
Felipe Nascimento Martins
Cartão de Memória SD
• A biblioteca “SD.h” provê meios de
utilização de cartões de memória SD com o
Arduino.
• Esse tipo de memória se comunica com o
microcontrolador por SPI.
Felipe Nascimento Martins
Cartão de Memória SD
Felipe Nascimento Martins
Cartão de Memória SD
Alimentação: 3,3V  uso de resistores em 5V!
Felipe Nascimento Martins
Exemplo: data logger
#include <SD.h>
const int chipSelect = 4;
void setup()
{
Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT); // chip select
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
}
Felipe Nascimento Martins
Exemplo: data logger
void loop()
{
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3;
analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
Felipe Nascimento Martins
Exemplo: data logger
// open the file. only one file can be open at a
time,
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}
Felipe Nascimento Martins
TWI – Two Wire serial Interface
(I2C)
Felipe Nascimento Martins
I2C
• I2C (Inter-Integrated Circuit) foi desenvolvido
pela PHILIPS no início da década de 1980 para
transferência de dados entre
microcontroladores e equipamentos;
• Barramento de comunicação serial de dados
entre dispositivos onde a conexão é feita
através de 2 fios;
• É half-duplex, ou seja, em determinado
instante, apenas recebe ou envia informação;
Felipe Nascimento Martins
I2C
• Taxa de transferência: até 100kbits/s;
• Operação em modo mestre/escravo: um
dispositivo ou processo (mestre) tem controle
unidirecional sobre um ou mais outros
dispositivos (escravos);
• Pode possuir mais de um mestre, mas só um
controla o barramento de cada vez.
Felipe Nascimento Martins
I2C
Felipe Nascimento Martins
I2C
Felipe Nascimento Martins
I2C
• Um fio transporta o sinal do clock (SCL – Serial
Clock Line) e o outro, os dados (DAS - Serial
Data Line);
• A comunicação é síncrona. Primeiro é enviado o
endereço do dispositivo destinatário. Em
seguida, o dado é enviado ao barramento.
I2C
Felipe Nascimento Martins
TWI (I2C)
• No Arduino a biblioteca Wire possui as funções
para implementação da comunicação I2C;
• Esta biblioteca implementa apenas
endereçamento de 7 bits;
• Caso use dispositivos que exijam 8 bits de
endereçamento, deve-se configurar seu
endereço para a faixa 0-127.
Felipe Nascimento Martins
TWI (I2C)
Felipe Nascimento Martins
Exemplo: Potenciômetro Digital
#include <Wire.h>
void setup() {
Wire.begin(); // join i2c (address optional for master)
}
byte val = 0;
void loop() {
Wire.beginTransmission(44); // transmit to device #44
// device address is specified in datasheet
Wire.write(byte(0x00)); // sends instruction byte
Wire.write(val); // sends potentiometer value byte
Wire.endTransmission(); // stop transmitting
val++; // increment value
if(val == 64) { // if reached 64th position (max)
val = 0; // start over from lowest value
}
delay(500);
}
Felipe Nascimento Martins
Arduino e NXT via RS-485 e I2C
Felipe Nascimento Martins
Arduino Nano
Arduino e NXT via RS-485 e I2C
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
Comunicação Serial USART:
Meios de Utilização
Felipe Nascimento Martins
Comunicação sem-fio
• Wixel shield for Arduino, com dois módulos Wixel;
• Rádio de 2,4GHz para até 30 metros, 350kbps;
• Possui microcontrolador programável por interface
amigável;
• Tem 15 pinos de I/O, com 6 entradas analógicas, que
podem ser programados de forma independente da
comunicação;
• Permite a criação de uma rede com até 128 módulos de
comunicação;
• A comunicação é feita como se fosse comunicação
serial padrão;
• Permite gravar programas no Arduino sem ligar o cabo
USB à placa!
Felipe Nascimento Martins
Comunicação sem-fio
http://nossosrobos.blogspot.com.br/2011/12/arduino-wireless.html
Felipe Nascimento Martins
Conexão Bluetooth
• Modelo JY-BT03 - Shenzhen Jiayuan Electronic Co. Ltd.;
• Conexão com pinos RX-TX do microcontrolador;
• Comunicação Bluetooth 2.0;
• Baud rate: 2.400 a 1.382.400 bps;
• Tensão de alimentação: 5,0 V (3,6V a 6,0V);
• Corrente: 35mA quando realiza "pareamento"; 8mA
quando conectado;
• Antena impressa na própria placa;
• Possui LED que indica o estado da conexão Bluetooth;
• Senha padrão: 1234.
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html
Felipe Nascimento Martins
Conexão Bluetooth
Conexão Bluetooth
Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html
Felipe Nascimento Martins
Conexão Bluetooth
Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html
Felipe Nascimento Martins
Conexão em rede ZigBee
• ZigBee designa um conjunto de especificações
para a comunicação sem-fio entre dispositivos
eletrônicos, com ênfase na baixa potência de
operação, na baixa taxa de transmissão de
dados e no baixo custo de implantação;
• Pode-se formar uma rede com vários módulos,
de maneira que a informação seja transmitida
de um ao seguinte (Mesh) para aumentar o
alcance total.
Felipe Nascimento Martins
Módulo XBee – ZigBee
• Módulo Digi XBee ZB - Antena Wire - Low Power
• Frequência de Transm.: 2,4 GHz
• Potência de Transm.: 1,25 mW
• Alcance Máximo estimado: até 120m (+1 dBm)
• Topologias de rede: P-to-P, P-to-M, ZigBee/Mesh
• Sleep Mode < 1µA
• RF Data Rate 250 kbps
• Segurança: 128-bit AES
• (10) GPIO, (4) ADC e 3V3 CMOS UART
Felipe Nascimento Martins
Módulo XBee – ZigBee
• XBee e XBee-PRO ZB
• Frequência de Transm.: 2,4 GHz
• Potência de transm.: 63 mW (+18 dBm) / Int'l
10 mW (+10 dBm)
• Alcance Máximo estimado: 3200 m
• RF Data Rate: RF 250 kbps, Serial até 1 Mbps
• Segurança: 128-bit AES
• Antena PCB - Ref: PIT
Felipe Nascimento Martins
Ethernet Shield
Felipe Nascimento Martins
Arduino com MATLAB
Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html
Felipe Nascimento Martins
Arduino com LabVIEW
Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835
Felipe Nascimento Martins
http://www.blendedtechnologies.com/realtime-plot-of-arduino-serial-data-using-python/231
Aquisição de dados com Arduino
Felipe Nascimento Martins
Aquisição de dados com Arduino
Felipe Nascimento Martins
Controle de um Robô
Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html
Felipe Nascimento Martins
Robôs baseados em Arduino
• DFRobotShop Rover - Arduino
Compatible Tracked Robot
Felipe Nascimento Martins
Robôs baseados em Arduino
• DFRobotShop Rover 2.0 – Arduino
Compatible Mecanum
Felipe Nascimento Martins
Robô Arduino oficial
• Arduino Robot
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html
Softwares gratuitos
Felipe Nascimento Martins
• IDE de programação do Arduino:
www.arduino.cc
• Fritzing - para fazer esquemas elétricos, de
proto-board e placas de circuito impresso:
www.fritzing.org
• 123D Circuits.io - para simulação de circuitos
com ou sem Arduino e projeto de placas de
circuito impresso (roda no navegador):
http://123d.circuits.io
Referências
Felipe Nascimento Martins
• ARDUINO. Language Reference. Disponível em:
<http://arduino.cc/en/Reference/HomePage>. MAR/2014.
• ERIKSSON, Fredrik. Industrial Circuits Application Note - Stepper
Motor Basics.
• FONSECA, Érika e BEPPU, Mathyan. Apostila Arduino. CT/UFF, 2010.
• JUSTEN, Álvaro. Curso de Arduino (apostila), 2011.
• LIMA, Charles B. de; VILLAÇA, Marco V. M. AVR e Arduino – Técnicas
de Projeto. 2ª ed. 2012.
• MARTINS, Felipe N. Introdução à Eletrônica com Arduino. Disponível
em: <http://www.slideshare.net/felipenm/oficina-de-introduo-a-eletrnica-
com-arduino>.
• Nossos Robôs: www.nossosrobos.blogspot.com
• POMÍLIO, J.A. Eletrônica de Potência. UNICAMP (apostila para o
curso de graduação). Acesso em AGO/2010.
• http://www.labdegaragem.com.br/wiki
• http://www.learningaboutelectronics.com/
• VALPEREIRO, Filipe. Workshop Arduino, 2008.
Obrigado!
Felipe N. Martins
@f_n_martins
www.facebook.com/felipenm

Mais conteúdo relacionado

Mais procurados

Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoFátima Bernardes
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorSandu Postolachi
 
Aula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorAula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorSuzana Viana Mota
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 

Mais procurados (20)

Arduino
ArduinoArduino
Arduino
 
03 mer2
03 mer203 mer2
03 mer2
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Uml
UmlUml
Uml
 
Aula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorAula 05 - Como funciona o Computador
Aula 05 - Como funciona o Computador
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Protocolos de Redes
Protocolos de RedesProtocolos de Redes
Protocolos de Redes
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Minicurso de Arduino Básico
Minicurso de Arduino BásicoMinicurso de Arduino Básico
Minicurso de Arduino Básico
 

Destaque

Mini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoMini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoFelipe Martins
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar ArduinoIsvaldo Souza
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino CompletoTiago Barros
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencialÁlvaro Justen
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para ArduinoRodrigo Rosa
 
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Manoel Lemos
 
Apostila Arduino - FBS Eletrônica
Apostila Arduino - FBS EletrônicaApostila Arduino - FBS Eletrônica
Apostila Arduino - FBS EletrônicaFabio Souza
 
Robótica: Introdução e Aplicações
Robótica: Introdução e AplicaçõesRobótica: Introdução e Aplicações
Robótica: Introdução e AplicaçõesFelipe Martins
 
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014Fabio Souza
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoTiago Barros
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectosDaniel Chavier
 
Robótica e Automação: Introdução e Aplicações
Robótica e Automação: Introdução e AplicaçõesRobótica e Automação: Introdução e Aplicações
Robótica e Automação: Introdução e AplicaçõesFelipe Martins
 
Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoRayner Pires
 
Robótica educacional
Robótica educacionalRobótica educacional
Robótica educacionalRaul Andrade
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Walter Coan
 
Palestra: Robótica com Arduino
Palestra: Robótica com ArduinoPalestra: Robótica com Arduino
Palestra: Robótica com ArduinoFelipe Martins
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Marco Antonio Maciel
 

Destaque (20)

Mini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoMini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com Arduino
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencial
 
Programação em C para Arduino
Programação em C para ArduinoProgramação em C para Arduino
Programação em C para Arduino
 
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
 
Apostila Arduino - FBS Eletrônica
Apostila Arduino - FBS EletrônicaApostila Arduino - FBS Eletrônica
Apostila Arduino - FBS Eletrônica
 
Robótica: Introdução e Aplicações
Robótica: Introdução e AplicaçõesRobótica: Introdução e Aplicações
Robótica: Introdução e Aplicações
 
1 aula do curso de automação - Arduino
1 aula do curso de automação - Arduino1 aula do curso de automação - Arduino
1 aula do curso de automação - Arduino
 
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao Arduino
 
Robótica seminário-ppt
Robótica seminário-pptRobótica seminário-ppt
Robótica seminário-ppt
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectos
 
Robótica e Automação: Introdução e Aplicações
Robótica e Automação: Introdução e AplicaçõesRobótica e Automação: Introdução e Aplicações
Robótica e Automação: Introdução e Aplicações
 
Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs Lego
 
Robótica educacional
Robótica educacionalRobótica educacional
Robótica educacional
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)
 
Palestra: Robótica com Arduino
Palestra: Robótica com ArduinoPalestra: Robótica com Arduino
Palestra: Robótica com Arduino
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011
 
Arduino
ArduinoArduino
Arduino
 

Semelhante a Introdução a Sistemas Embarcados com Arduino - mini-curso

A evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bitsA evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bitsEronides Neto
 
EL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfEL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfssuser56423c1
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduinoEdson Paz
 
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + ArduinoExiste um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + ArduinoVic Fernandes
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreMarcelo Laranjeira Melo
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoMarcelo Laranjeira Melo
 
Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011Álvaro Justen
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceRicardo Rufino
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosDouglas Esteves
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresCarlos Eduardo Pantoja
 
201728 22259 manual_picgenios
201728 22259 manual_picgenios201728 22259 manual_picgenios
201728 22259 manual_picgeniosBárbara Gama
 
Embarcados - Ao arduino e além
Embarcados - Ao arduino e alémEmbarcados - Ao arduino e além
Embarcados - Ao arduino e alémFabio Souza
 
Mini curso arduino básico pet v2
Mini curso arduino   básico pet v2Mini curso arduino   básico pet v2
Mini curso arduino básico pet v2Felipe Meganha
 
Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoDomingosRodrigues16
 

Semelhante a Introdução a Sistemas Embarcados com Arduino - mini-curso (20)

A evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bitsA evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bits
 
EL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfEL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdf
 
Introdução - Arduino - Renan Martins
Introdução - Arduino - Renan MartinsIntrodução - Arduino - Renan Martins
Introdução - Arduino - Renan Martins
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduino
 
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + ArduinoExiste um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livre
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo moderno
 
Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011
 
TDC2014 - Arduino Legacy
TDC2014 - Arduino LegacyTDC2014 - Arduino Legacy
TDC2014 - Arduino Legacy
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
 
201728 22259 manual_picgenios
201728 22259 manual_picgenios201728 22259 manual_picgenios
201728 22259 manual_picgenios
 
Embarcados - Ao arduino e além
Embarcados - Ao arduino e alémEmbarcados - Ao arduino e além
Embarcados - Ao arduino e além
 
Existe vida após o Arduino?
Existe vida após o Arduino?Existe vida após o Arduino?
Existe vida após o Arduino?
 
CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?
 
Mini curso arduino básico pet v2
Mini curso arduino   básico pet v2Mini curso arduino   básico pet v2
Mini curso arduino básico pet v2
 
Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando Arduino
 
Existe vida após o arduino?
Existe vida após o arduino? Existe vida após o arduino?
Existe vida após o arduino?
 

Mais de Felipe Martins

Competições Estudantis de Rrobótica
Competições Estudantis de RrobóticaCompetições Estudantis de Rrobótica
Competições Estudantis de RrobóticaFelipe Martins
 
Mercado de automação no ES
Mercado de automação no ESMercado de automação no ES
Mercado de automação no ESFelipe Martins
 
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...Felipe Martins
 
Controle do Gerador de Indução Trifásico Baseado em Lógica Fuzzy
Controle do Gerador de Indução Trifásico Baseado em Lógica FuzzyControle do Gerador de Indução Trifásico Baseado em Lógica Fuzzy
Controle do Gerador de Indução Trifásico Baseado em Lógica FuzzyFelipe Martins
 
Introdução ao Controle de Robôs Móveis
Introdução ao Controle de Robôs MóveisIntrodução ao Controle de Robôs Móveis
Introdução ao Controle de Robôs MóveisFelipe Martins
 
Modelagem e Controle de Robôs Móveis e Sistemas Multirrobôs
Modelagem e Controle de Robôs Móveis e Sistemas MultirrobôsModelagem e Controle de Robôs Móveis e Sistemas Multirrobôs
Modelagem e Controle de Robôs Móveis e Sistemas MultirrobôsFelipe Martins
 

Mais de Felipe Martins (6)

Competições Estudantis de Rrobótica
Competições Estudantis de RrobóticaCompetições Estudantis de Rrobótica
Competições Estudantis de Rrobótica
 
Mercado de automação no ES
Mercado de automação no ESMercado de automação no ES
Mercado de automação no ES
 
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...
Modelagem e Compensação da Dinâmica de Robôs Móveis e sua aplicação em Contro...
 
Controle do Gerador de Indução Trifásico Baseado em Lógica Fuzzy
Controle do Gerador de Indução Trifásico Baseado em Lógica FuzzyControle do Gerador de Indução Trifásico Baseado em Lógica Fuzzy
Controle do Gerador de Indução Trifásico Baseado em Lógica Fuzzy
 
Introdução ao Controle de Robôs Móveis
Introdução ao Controle de Robôs MóveisIntrodução ao Controle de Robôs Móveis
Introdução ao Controle de Robôs Móveis
 
Modelagem e Controle de Robôs Móveis e Sistemas Multirrobôs
Modelagem e Controle de Robôs Móveis e Sistemas MultirrobôsModelagem e Controle de Robôs Móveis e Sistemas Multirrobôs
Modelagem e Controle de Robôs Móveis e Sistemas Multirrobôs
 

Último

Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...LizanSantos1
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 anoandrealeitetorres
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundonialb
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 

Último (20)

Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
Intolerância religiosa. Trata-se de uma apresentação sobre o respeito a diver...
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 ano
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundo
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 

Introdução a Sistemas Embarcados com Arduino - mini-curso

  • 1. v. 2 - 2014 Introdução a Sistemas Embarcados com Arduino Felipe Nascimento Martins
  • 2. O trabalho Introdução ao Arduino de Felipe Nascimento Martins foi licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 3.0 Não Adaptada. Introdução a Sistemas Embarcados com Arduino Felipe Nascimento Martins
  • 4. Conteúdo • Sistemas embarcados; • Arduino: características de hardware; • Arduino: características de software; • Microcontrolador; • Eletrônica: conceitos básicos; • Planejamento de programas; • Sensores e atuadores; • Práticas (montagem e programação); • Avançando com o Arduino: shields, comunicação sem fio, aplicações em robótica... Felipe Nascimento Martins
  • 6. Sistema Embarcado • Sistema baseado em microcontroladores em que o computador é encapsulado e dedicado ao dispositivo ou sistema que ele controla; • Realiza um conjunto de tarefas pré-definidas, com requisitos específicos; • Além do computador dedicado, em geral possui sensores, atuadores e uma interface com o usuário. Felipe Nascimento Martins
  • 7. Sistema de Controle Embarcado Felipe Nascimento Martins
  • 8. Exemplos de Sistemas Embarcados • MP3 player, relógio digital, calculadora, controlador de veículo elétrico, navegador com GPS, leitora para pagamento com cartões de crédito, robô, semáforo, roteador, console de vídeo game, lavadora de roupas, marca-passo, quadricóptero, forno de micro- ondas, tablet, medidor de pressão arterial, televisão etc. Felipe Nascimento Martins
  • 11. O que é Arduino? • Arduino é uma plataforma de prototipagem eletrônica open-source, baseada nos princípios de flexibilidade e facilidade de uso para hardware e software. • Consiste de uma placa com microcontrolador programável preparada para receber sinais de sensores e acionar atuadores. • Sua linguagem de programação é baseada em Wiring (baseado em C/C++). • A placa pode funcionar em conjunto ou de forma independente do computador. Felipe Nascimento Martins
  • 12. Arduino – hardware Felipe Nascimento Martins
  • 13. Arduino – hardware Felipe Nascimento Martins
  • 14. Arduino – hardware Felipe Nascimento Martins
  • 16. Arduino é Open Source • Desenvolvido por: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino e David Mellis, na Itália, em 2005; • Todo o projeto é aberto: open source hardware and software; • 200 placas vendidas em 2005, 5.000 em 2006, 30.000 em 2007 e mais de 300.000 em 2011 e cerca de 1 milhão até setembro de 2013! • Site oficial: www.arduino.cc Felipe Nascimento Martins
  • 17.
  • 18. Arduino é Open Source! Felipe Nascimento Martins
  • 19. Arduino é Open Source! Felipe Nascimento Martins
  • 20. Arduino é Open Source! • Todo o hardware é aberto e os projetos estão disponíveis. • Quem quiser, pode comprar os componentes e montar a sua placa! • O software de programação também é livre e está disponível para download gratuitamente. Felipe Nascimento Martins
  • 21. Arduino é Open Source! • Todo o hardware é aberto e os projetos estão disponíveis. • Quem quiser, pode comprar os componentes e montar a sua placa! • O software de programação também é livre e está disponível para download gratuitamente. • Mas... Felipe Nascimento Martins
  • 22. Arduino é Open Source! • Todo o hardware é aberto e os projetos estão disponíveis. • Quem quiser, pode comprar os componentes e montar a sua placa! • O software de programação também é livre e está disponível para download gratuitamente. • Mas... • O nome Arduino é marca registrada! Felipe Nascimento Martins
  • 23. Clones do Arduino • Freeduino Felipe Nascimento Martins
  • 24. Clones do Arduino • Seeduino Felipe Nascimento Martins
  • 25. Clones do Arduino • Brasuíno Felipe Nascimento Martins
  • 26. Clones do Arduino • Severino Felipe Nascimento Martins
  • 27. Similares ao Arduino • chipKIT Uno32 - PIC32MX320F128 (32 bits, 80MHz, 128kB Flash, 16kB SRAM) Felipe Nascimento Martins
  • 28. Similares ao Arduino • Olimexino – STM32F103RBT6 (núcleo ARM Cortex M3, 32 bits, 128kB, 72MHz) Felipe Nascimento Martins
  • 29. Similares ao Arduino • Adafruit Trinket – ATtiny85 Felipe Nascimento Martins
  • 30. Similares ao Arduino • TI LaunchPad: MSP430 Felipe Nascimento Martins
  • 31. Similares ao Arduino • LaunchPad: ARM Cortex M4 Felipe Nascimento Martins
  • 32. Compatível com Arduino Felipe Nascimento Martins
  • 34. Arduino Uno • Microcontrolador: ATmega328; • Tensão de operação: 5V; • Tensão de entrada (recomendada): 7-12V; • Pinos digitais de E/S:14 (6 podem ter sinal PWM); • Pinos com entrada analógica: 6; • Corrente máxima por pino de E/S: 40 mA; • Hardware para comunicação: 1 porta serial (UART TTL), I2C (TWI), SPI; • Memória Flash (de programa): 32 kB, dos quais 0,5 kB são usados pelo bootloader; • Memória SRAM: 2 kB; EEPROM: 1 kB; • Frequência de clock: 16 MHz. Felipe Nascimento Martins
  • 36. Arduino Leonardo • Microcontrolador: ATmega32u4; • Tensão de operação: 5V; • Tensão de entrada (recomendada): 7-12V; • Pinos digitais de E/S: 20 (7 podem ter sinal PWM); • Pinos com entrada analógica: 12; • Corrente máxima por pino de E/S: 40 mA; • Hardware para comunicação: 1 porta serial (UART TTL), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse); • Memória Flash (de programa): 32 kB, dos quais 4 kB são usados pelo bootloader; • Memória SRAM: 2,5 kB; EEPROM: 1 kB; • Frequência de clock: 16 MHz. Felipe Nascimento Martins
  • 38. Arduino Mega 2560 • Microcontrolador: ATmega2560; • Tensão de operação: 5V; • Tensão de entrada (recomendada): 7-12V; • Pinos digitais de E/S: 54 (15 podem ter sinal PWM); • Pinos com entrada analógica: 16; • Corrente máxima por pino de E/S: 40 mA; • Hardware para comunicação: 4 portas seriais (UART TTL), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse); • Memória Flash (de programa): 256 kB, dos quais 8 kB são usados pelo bootloader; • Memória SRAM: 8 kB; EEPROM: 4 kB; • Frequência de clock: 16 MHz. Felipe Nascimento Martins
  • 41. O que é um Microcontrolador? – Chip; – CPU de pequeno porte, capaz de executar um conjunto de instruções; – Ou seja, possui um microprocessador! – Instruções simples e rápidas; – Possui memória(s); – Possui periféricos; – Pode se comunicar com outros periféricos; etc. Felipe Nascimento Martins
  • 42. Componentes de um Microcontrolador Conversor D/A Conversor A/D PWM CPU EEPROM RAM Porta Serial Porta Paralela Temporizadores Microcontrolador Felipe Nascimento Martins
  • 43. Diagrama de blocos da arquitetura Felipe Nascimento Martins
  • 44. Exemplos de Microcontroladores • Família 8051 (Intel ou ATMEL) • 80C196KB (Intel) • 68HC11 (Motorola / Freescale) • MSP430 (Texas Instruments) • ATmega328 (ATMEL) • PIC16F628A (Microchip) • dsPIC30F6014 (Microchip) • Cortex M3 (ARM) Felipe Nascimento Martins
  • 45. Exemplos de Microcontroladores • Família 8051 (Intel ou ATMEL) • 80C196KB (Intel) • 68HC11 (Motorola / Freescale) • MSP430 (Texas Instruments) • ATmega328 (ATMEL) • PIC16F628A (Microchip) • dsPIC30F6014 (Microchip) • Cortex M3 (ARM) Cadê o Arduino?? Felipe Nascimento Martins
  • 46. Exemplos de Microcontroladores • Família 8051 (Intel ou ATMEL) • 80C196KB (Intel) • 68HC11 (Motorola / Freescale) • MSP430 (Texas Instruments) • ATmega328 (ATMEL) • PIC16F628A (Microchip) • dsPIC30F6014 (Microchip) • Cortex M3 (ARM) Felipe Nascimento Martins
  • 47. • ATMEL • ATmega168: Diecimila, Duemilanove, Nano, LilyPad; • ATmega328P: Duemilanove, Nano, Fio, LilyPad, Uno; • ATmega1280: Mega; • ATmega2560: Mega2560; • ATmega32u4: Leonardo, Esplora, LilyPad USB, Yún, Robot; • AT91SAM3X8E: Due. Microcontroladores do Arduino Felipe Nascimento Martins
  • 48. 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 6 16 6 Uno ATmega328P 32 1 2 14 6 16 6 Mega ATmega1280 128 4 8 54 16 16 15 Mega2560 ATmega2560 256 4 8 54 16 16 15 Nano ATmega168 ou ATmega328 16/32 0,5/1 0,5 14 8 16 6 LilyPad ATmega168V ou ATmega328V 16/32 0,5 1 14 6 16 6 Leonardo ATmega32u4 32 1 2,5 20 12 16 7 Due AT91SAM3X8E 512 -- 96 54 12 84 12 Esplora ATmega32u4 32 1 2,5 20 12 16 7 Arduino Felipe Nascimento Martins
  • 49. Arduino - Microcontrolador Felipe Nascimento Martins
  • 50. Arduino - Microcontrolador • ATmega328 (Arduino Uno): • Núcleo AVR RISC de 8 bits; • 32kB Flash, 2kB RAM, 1kB EEPROM; • 23 pinos de E/S; • 3 temporizadores/contadores; • USART, I2C, interface a 2 fios SPI; • 6 canais de conversor A/D de 10 bits; • WDT com oscilador interno; • Clock máximo de 20MHz; • Opera de 1,8V a 5,5V. Felipe Nascimento Martins
  • 51. Arduino - Microcontrolador • ATmega32u4 (Arduino Leonardo): • Núcleo AVR RISC de 8 bits; • 32kB Flash, 2kB RAM, 1kB EEPROM; • 26 pinos de E/S; • 3 temporizadores/contadores; • USART, USB transceiver, I2C, 2 interfaces a 2 fios SPI; • 12 canais de conversor A/D de 10 bits; • WDT com oscilador interno; • Clock máximo de 16MHz; • Opera de 2,7V a 5,5V. Felipe Nascimento Martins
  • 53. Arduino – Programação Felipe Nascimento Martins
  • 55. Arduino – Programa básico Felipe Nascimento Martins
  • 56. Arduino – Programa básico Felipe Nascimento Martins
  • 57. Arduino – Programa básico Felipe Nascimento Martins
  • 58. Arduino – Programa básico Felipe Nascimento Martins
  • 59. Arduino – Programa básico Felipe Nascimento Martins
  • 60. Arduino – Programa básico Felipe Nascimento Martins No Arduino Uno: pinos digitais 0 a 13 (0 a 13); pinos analógicos 0 a 5 (14 a 19).
  • 61. Prática 1: Pisca-LED • Montagem: Felipe Nascimento Martins
  • 62. Matriz de contatos (Breadboard ou Protoboard) Felipe Nascimento Martins
  • 65. Um pouco de eletrônica • Ok. Entendi o programa. • Mas o que acontece nos pinos do Arduino? Felipe Nascimento Martins
  • 66. Um pouco de eletrônica • Ok. Entendi o programa. • Mas o que acontece nos pinos do Arduino? • A função digitalWrite(12,HIGH); faz com que o pino 12 vá para “nível alto”, ou seja, ele fica com 5V. Felipe Nascimento Martins
  • 67. Um pouco de eletrônica • Ok. Entendi o programa. • Mas o que acontece nos pinos do Arduino? • A função digitalWrite(12,HIGH); faz com que o pino 12 vá para “nível alto”, ou seja, ele fica com 5V. • Este pino está ligado ao RESISTOR+LED, e ao pino GND (0V). Felipe Nascimento Martins
  • 68. Um pouco de eletrônica • Ok. Entendi o programa. • Mas o que acontece nos pinos do Arduino? • A função digitalWrite(12,HIGH); faz com que o pino 12 vá para “nível alto”, ou seja, ele fica com 5V. • Este pino está ligado ao RESISTOR+LED, e ao pino GND (0V). • É um circuito série, por onde circula corrente! Felipe Nascimento Martins +5V 0V
  • 69. Um pouco de eletrônica • Em resumo: • É a circulação de corrente elétrica (elétrons) que faz acender o LED; • Experimente retirar o fio que liga o LED ao GND, mantendo o pino 12 em 5V. • O LED apaga pois a corrente precisa circular num circuito fechado! Felipe Nascimento Martins +5V 0V
  • 70. Um pouco de eletrônica • Em resumo: • É a circulação de corrente elétrica (elétrons) que faz acender o LED; • A corrente só existirá se houver diferença de potencial elétrico (diferença de tensão) entre pontos do circuito: 5V – 0 = 5V; • Tensão: volt [V]; • Corrente: ampère [A]. Felipe Nascimento Martins +5V 0V
  • 71. Um pouco de eletrônica • A função digitalWrite(12,LOW); faz com que o pino 12 vá para “nível baixo”, ou seja, ele fica com 0V. • Logo, como não há diferença de tensão entre os pinos 12 e GND, a corrente é zero => LED apaga. Felipe Nascimento Martins 0V 0V
  • 72. Um pouco de eletrônica • Beleza. Mas, e o resistor? Serve para quê? Felipe Nascimento Martins
  • 73. Um pouco de eletrônica • Beleza. Mas, e o resistor? Serve para quê? • O elemento resistor serve para dificultar a circulação de corrente elétrica; • Ele é colocado no circuito para evitar que a corrente cresça muito, o que pode provocar problemas; • No nosso circuito, o resistor serve para evitar que o LED queime devido a uma corrente muito alta. Felipe Nascimento Martins
  • 74. Um pouco de eletrônica • Quanto maior for o valor da resistência do resistor, menor será a corrente (para uma mesma diferença de tensão). • O brilho do LED varia com a corrente. Felipe Nascimento Martins
  • 75. Um pouco de eletrônica • Cálculo da corrente: • Lei de Ohm: V = R * I • V = 5V, R = 220Ω. • I = 5 / 220 • I = 0,0227 A = 22,7 mA Felipe Nascimento Martins
  • 76. Um pouco de eletrônica • Cálculo 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 tensão em cada resistor: • VR = R * I, R = 220Ω, I = 11,4 mA. • VR = 220 * 0,0114 = 2,5 V. Felipe Nascimento Martins
  • 77. Um pouco de eletrônica • Cálculo da corrente: • O LED tem queda de tensão 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. Felipe Nascimento Martins +5V 0V
  • 78. Um pouco de eletrônica • Note que se a tensão do pino 12 pudesse ser alterada, a corrente no circuito seria diferente. • Ou seja, poderíamos controlar o brilho do LED! Felipe Nascimento Martins +5V 0V
  • 79. Prática 2: Código Morse • Modifique o programa Pisca-LED de forma que o LED sinalize indefinidamente o código Morse que representa S.O.S.: ...---... OBS.: “ponto” é uma piscada rápida do LED (pouco tempo aceso), enquanto o “traço” é uma piscada mais lenta (mais tempo aceso). Felipe Nascimento Martins
  • 80. Diodo • Dispositivo semicondutor que permite a circulação de corrente apenas em um sentido; • A tensão em seus terminais deve ter polaridade correta: mais positiva no terminal A (anodo) e mais negativa no terminal K (catodo); • Apresenta queda de tensão aproximadamente fixa (~0,7V) quando a corrente circula; • Usado em circuitos retificadores: transforma corrente alternada para contínua. Felipe Nascimento Martins
  • 81. Diodo • Retificador de onda completa: Felipe Nascimento Martins
  • 82. Diodo - exemplos Felipe Nascimento Martins
  • 83. Prática 3: Não pisca-LED • LED é um diodo especial que brilha quando a corrente circula por ele. • Experimente inverter a ligação dos pinos do LED em nosso circuito e verifique que ele não vai mais piscar, mesmo quando houver diferença de potencial nos pinos! Felipe Nascimento Martins
  • 84. Capacitor • Elemento que armazena energia na forma de campo elétrico; • Existem vários tipos: alguns têm polaridade (como os eletrolíticos), outros não (como os cerâmicos); • A tensão em seus terminais depende da carga acumulada, e não varia instantaneamente; • Em corrente contínua, são usados como filtros ou “suavizadores” de tensão. Felipe Nascimento Martins
  • 85. Capacitor - exemplos Felipe Nascimento Martins
  • 86. Capacitor – exemplo de aplicação • Retificador de onda completa com capacitor: Felipe Nascimento Martins
  • 88. Sensores com Sinais Digitais • Diversos sensores proveem informação através de sinais digitais: • Botão; • Porta aberta/fechada; • Andar de elevador; • Fim-de-curso em máquinas industriais; • Equipamento ligado/desligado; • Nível de reservatório; • Presença; • Toque; • Etc. Felipe Nascimento Martins
  • 89. Sensores com Sinais Digitais • Do ponto de vista elétrico, comportam-se como se fossem uma chave liga/desliga; • Nesses casos, podemos fazer a ligação de modo que o sinal do sensor seja 0V ou 5V; • No Arduino, a função utilizada para leitura de sinais digitais é digitalRead(pino); onde pino é o número do pino em que o sensor está ligado; • Para Vs = 5V, retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
  • 90. Prática 4: Leitura de Sinal Digital Felipe Nascimento Martins • Monte o circuito ao lado. • Altere o programa da prática 1 para que o LED acenda com o botão for pressionado, e apague quando o botão for liberado.
  • 93. Funções do Arduino • Já vimos: void setup(){ ... } void loop(){ ... } Felipe Nascimento Martins
  • 94. Funções do Arduino • Já vimos: pinMode(pino, OUTPUT ou INPUT); digitalWrite(pino, LOW ou HIGH); delay(número inteiro); digitalRead(pino); Felipe Nascimento Martins
  • 95. Funções do Arduino • Outras funções: delayMicroseconds(número inteiro); Pausa o programa pela quantidade definida de microssegundos. millis(); Retorna o número de milissegundos que se passou desde que o microcontrolador foi ligado. analogRead(pino); Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100μs. Felipe Nascimento Martins
  • 96. Funções do Arduino • Outras funções: delayMicroseconds(número inteiro); Pausa o programa pela quantidade definida de microssegundos. millis(); Retorna o número de milissegundos que se passou desde que o microcontrolador foi ligado. analogRead(pino); Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100μs. Felipe Nascimento Martins
  • 97. Funções do Arduino • Outras funções: delayMicroseconds(número inteiro); Pausa o programa pela quantidade definida de microssegundos. millis(); Retorna o número de milissegundos que se passou desde que o microcontrolador foi ligado. analogRead(pino); Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100μs. Felipe Nascimento Martins
  • 98. Funções do Arduino • Exemplos: while(analogRead(A2) < 950){ ... // bloco de código } Executa o bloco de código até que o valor de retorno da função analogRead seja maior que 950. for(int conta = 0; conta < 6; conta++){ ... // bloco de código } Executa o bloco de código até que conta >= 6. Felipe Nascimento Martins
  • 99. Funções do Arduino • Exemplos: while(analogRead(A2) < 950){ ... // bloco de código } Executa o bloco de código até que o valor de retorno da função analogRead seja maior que 950. for(int conta = 0; conta < 6; conta++){ ... // bloco de código } Executa o bloco de código até que conta >= 6. Felipe Nascimento Martins
  • 100. Funções do Arduino • Exemplos: if (brilho == 0 || brilho == 255) { ... // bloco de código 1 } else { ... // bloco de código 2 } Executa o bloco de código 1 se a condição de teste for verdadeira. Caso contrário, executa o bloco de código 2. Felipe Nascimento Martins
  • 101. Criando Funções no Arduino int led = 13; void setup(){ pinMode(led, OUTPUT); } void inverteLED(){ if (digitalRead(led)==0) digitalWrite(led, HIGH); else digitalWrite(led, LOW); } void loop(){ inverteLED(); delay(500); } Felipe Nascimento Martins
  • 102. Tipos de Dados no Arduino Felipe Nascimento Martins boolean (8 bits) – true/false; byte (8 bits) – número entre 0 e 255; char (8 bits) – caractere (número entre -128 e 127); unsigned char (8 bits) – mesmo tipo que ‘byte’; word (16 bits) – número entre 0 e 65.535; unsigned int (16 bits) – mesmo tipo que ‘word’; int (16 bits) – número entre -32.768 e 32.767; unsigned long (32 bits) – número entre 0 e 4.294.967.295; long (32 bits) – número entre -2.147.483.648 e 2.147.483.647; float (32 bits) – entre -3,4028235E38 to 3,4028235E38.
  • 103. Linguagem do Arduino Felipe Nascimento Martins
  • 104. Linguagem do Arduino Felipe Nascimento Martins
  • 105. Linguagem do Arduino Felipe Nascimento Martins
  • 106. Planejamento de um Programa • Fluxogramas Felipe Nascimento Martins
  • 107. Planejamento de um Programa Felipe Nascimento Martins
  • 108. Exercício: Desenhe o Fluxograma const int ledPin = 13; // pino do LED int ledState = LOW; // estado do LED long previousMillis = 0; // última atualização do LED long interval = 500; // interval para piscar LED void setup() { pinMode(ledPin, OUTPUT); } void loop(){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(ledPin, ledState); } } Felipe Nascimento Martins
  • 109. Prática 5: Leitura de Sinal Digital Felipe Nascimento Martins • Monte o circuito ao lado. • Altere o programa da prática 4 para que o LED troque de estado a cada pressionar de botão: se estiver apagado, acende; e vice-versa.
  • 110. Prática 5: Leitura de Sinal Digital Felipe Nascimento Martins • Monte o circuito ao lado. • Altere o programa da prática 4 para que o LED troque de estado a cada pressionar de botão: se estiver apagado, acende; e vice-versa. • Funcionou como esperado?
  • 111. Leitura de Sinal Digital Felipe Nascimento Martins
  • 112. Bounce (oscilação de contato) Felipe Nascimento Martins
  • 113. Técnica para fazer debounce do sinal Felipe Nascimento Martins
  • 114. Felipe Nascimento Martins int led_pin = 13; int led_state = LOW; int button_pin = 0; int button_state; // the setup routine runs once when you press reset: void setup() { pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT); } // the loop routine runs over and over again forever: void loop() { // Enquanto o botão não for pressionado, não faz nada. while (digitalRead(button_pin)!=0){ } // Depois que o botão é pressionado, aguarda ser solto while (digitalRead(button_pin)==0){ } // Atraso para aguardar oscilação de contato terminar delay(50); // Inverte o estado da variável led_state led_state = !led_state; // Copia variável led_state para o pino do LED digitalWrite(led_pin, led_state); }
  • 116. Sensores com Sinais Analógicos • Diversos sensores proveem informação através de sinais analógicos: • Intensidade luminosa (LDR); • Deslocamento (angular ou linear); • Força/Torque (SFR, strain gage); • Proximidade; • Aceleração; • Inclinação; • Temperatura; • Etc. Felipe Nascimento Martins
  • 117. Intensidade Luminosa: LDR • Resistor cuja resistência varia conforme a intensidade da luz incidente. • Vários modelos com diferentes sensibilidades. • Datasheet: http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf Felipe Nascimento Martins
  • 118. Intensidade Luminosa: LDR Felipe Nascimento Martins
  • 119. Prática 6: Usando o sensor de luz • Monte o circuito com LDR – Light Dependent Resistor (sensor de luz). • Escreva um programa que acenda o LED do pino 13 quando houver pouca luz e apague o mesmo LED quando houver muita luz. void setup() { ... } void loop() { ... } Felipe Nascimento Martins
  • 120. Deslocamento • Deslocamento linear ou angular pode ser medido com potenciômetros; • Com alimentação de 5V, o sinal varia de 0 a 5V (mínimo a máximo deslocamento); • Há potenciômetros angulares multivoltas e potenciômetros lineares de longo alcance. Felipe Nascimento Martins
  • 122. Força e Torque • FSR (Force Sensing Resistor) e Strain Gage (extensômetro): resistência varia com a deformação. • Usados para medir força e torque. • Datasheets: FSR - http://www.trossenrobotics.com/productdocs/2010-10-26-DataSheet-FSR402-Layout2.pdf Célula de carga - http://www.alfainstrumentos.com.br/manuais/celulas/catalogo_celulas_0302cp.pdf Felipe Nascimento Martins
  • 124. Proximidade por infravermelho • Sharp GP2Y0A21YK0F • Tensão de alimentação: 5V; • Pode medir distâncias de 10 a 80 cm; • Sinal: tensão entre 1,65V e 2,15V. • Há outros modelos com outras faixas de medição. Datasheet: https://www.sparkfun.com/datasheets/Components/GP2Y0A21YK.pdf Felipe Nascimento Martins
  • 126. Aceleração/Inclinação • ADXL335 • Tensão de alimentação: 3,3 V; • Mede aceleração nos 3 eixos do espaço; • Mede aceleração de até 3g; • Mede aceleração da gravidade (estática), podendo ser usado para medir inclinação. • Datasheet: https://www.sparkfun.com/datasheets/Components/SMD/adxl335.pdf Felipe Nascimento Martins
  • 127. Temperatura: RTDs • RTD = Resistance Temperature Detectors • Normalmente confeccionados com um fio (ou enrolamento) de alta pureza de cobre, níquel ou platina (estes são os melhores). • RTDs comuns podem medir com erros da ordem de ±0,1ºC. Os de platina (PRT – Platinum Resistance Thermometer) podem chegar a ±0,0001ºC. • São estáveis e lineares, com ótima repetitividade. • Aplicações incluem refrigeração de alimentos e compostos químicos, fornos de fusão (produção de metais e ligas), destilação fracionada (produção de bebidas e derivados de petróleo), usinas nucleares e aquecedores e refrigeradores domésticos. Felipe Nascimento Martins
  • 128. Temperatura: Termistores NTC/PTC • São semicondutores cerâmicos que têm sua resistência alterada com a variação de temperatura. • Geralmente seu coeficiente de variação é maior que o dos RTDs, mas a variação de resistência é menos linear. • Podem ser de dois tipos: NTC ou PTC (Negative ou Positive Temperature Coefficient). • Faixa típica de operação: de -100ºC a 300ºC. • Resistência a 25ºC: de 0,5Ω a 100MΩ. • Aplicações: circuitos simples de medição de temperatura; para reduzir corrente de carga de capacitores em fontes chaveadas (NTCs) etc. Felipe Nascimento Martins
  • 130. Temperatura: RTD ou NTC Felipe Nascimento Martins
  • 131. Temperatura: TMP35/36/37 • Tensão de alimentação: 2,7 V a 5,5 V; • Fator de escala: 10 mV/°C; • Precisão: ±2°C; • Linearidade: ±0,5°C; • Faixa de operação: −40°C a +125°C. • Datasheet: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Temp/TMP35_36_37.pdf Felipe Nascimento Martins
  • 134. Comunicação serial • Bit: menor unidade de informação -> 0 ou 1; • Informação é enviada bit a bit, em sequência; • Síncrona: uma linha de dados e outra de clock: Felipe Nascimento Martins
  • 135. Comunicação serial • Bit: menor unidade de informação -> 0 ou 1; • Informação é enviada bit a bit, em sequência; • Assíncrona: apenas uma linha de dados. A velocidade deve ser definida: Felipe Nascimento Martins
  • 136. Comunicação serial • OK. • Mas como posso transmitir outras informações além de “zeros” e “uns”? Felipe Nascimento Martins
  • 137. Comunicação serial • OK. • Mas como posso transmitir outras informações além de “zeros” e “uns”? • Existe uma tabela que relaciona caracteres a sequências de zeros e uns: • ASCII (American Standard Code for Information Interchange). • Esta tabela criou um padrão para troca de informações em sistemas binários. Felipe Nascimento Martins
  • 139. Comunicação Serial no Arduino • Microcontrolador possui hardware para comunicação serial: • Pino digital 0 (RX): recepção de dados; • Pino digital 1 (TX): transmissão de dados; • Bit 1 = 5V; Bit 0 = 0V; • A maioria das placas Arduino possui hardware que converte sinais do padrão serial assíncrono para USB; Felipe Nascimento Martins
  • 140. Prática 7: Medindo Temperatura • Monte o circuito com o sensor de temperatura. • Escreva um programa que mostre o valor da temperatura na tela do computador a cada 0,5s. Felipe Nascimento Martins
  • 141. Prática 7: Medindo Temperatura • Exemplo de programa: void setup() { Serial.begin(9600); } void loop() { int sensor = analogRead(A0); Serial.println(sensor); delay(500); } Felipe Nascimento Martins
  • 143. Prática 7: Medindo Temperatura http://123d.circuits.io/circuits/155990-pratica-7-medindo-temperatura-sinal-analogico/embed Felipe Nascimento Martins
  • 144. Comunicação Serial no Arduino • Serial.println(analogValue, DEC); // envia analogValue (int) codificada em ASCII no formato decimal • Serial.println(analogValue, HEX); // envia ASCII no formato hexadecimal • Serial.println(analogValue, OCT); // envia ASCII no formato octal • Serial.println(analogValue, BIN); // envia ASCII no formato binário Felipe Nascimento Martins
  • 145. Comunicação Serial no Arduino • Serial.available(); // retorna 1 se houver caracter disponível no buffer de recepção. Caso contrário, retorna 0. • Serial.read(); // lê um byte recebido pela Serial (int) • Exemplo: int incomingByte; if (Serial.available() > 0) { incomingByte = Serial.read(); } Felipe Nascimento Martins
  • 146. Prática 8: Comunicação bidirecional • Outro exemplo de comunicação serial: desta vez o Arduino vai receber um dado do computador, processá-lo e retornar o resultado pela porta serial. • Vamos analisar o programa: 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
  • 147. if (numero>='0' && numero<='9') Serial.println(numero-’0’); else { Serial.println("O valor deve ser numerico!"); continue; } numero-='0'; for (i = 0; i <= 10; i++) { Serial.print(numero); Serial.print(" x "); Serial.print(i); Serial.print(" = "); Serial.println(numero*i); } Serial.println(""); } } Felipe Nascimento Martins
  • 148.
  • 149. Prática 8: Comunicação bidirecional Felipe Nascimento Martins http://123d.circuits.io/circuits/155997-pratica-8-comunicacao-bidirecional-tabuada/embed
  • 150. Felipe Nascimento Martins Mais um pouco de Eletrônica
  • 151. Shift Registers • Shift registers (ou Registradores de Deslocamento) são memórias que recebem uma sequência de bits enviados serialmente e disponibilizam seus valores de forma simultânea; • Muito utilizados em sistemas embarcados para economizar pinos de E/S dos microcontroladores; • CI 74HC595 é um shift register de 8 bits. • Datasheet: http://arduino.cc/en/uploads/Tutorial/595datasheet.pdf Felipe Nascimento Martins
  • 154. Prática 9: Usando shift register • Monte o circuito abaixo. Felipe Nascimento Martins
  • 155. Prática 9: Usando shift register int latchPin = 8; //Pin connected to ST_CP of 74HC595 int clockPin = 12; //Pin connected to SH_CP of 74HC595 int dataPin = 11; //Pin connected to DS of 74HC595 void setup() { //set pins to output so you can control the shift register pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } Felipe Nascimento Martins
  • 156. Prática 9: Usando shift register void loop() { // count from 0 to 255 and display the number for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) { // take the latchPin low: LEDs don't change digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); digitalWrite(latchPin, HIGH); // turn LEDs on delay(500); } } Felipe Nascimento Martins
  • 157. Felipe Nascimento Martins Controle de cargas analógicas
  • 158. “Simulando” uma tensão analógica • PWM = Pulse Width Modulation; • Razão cíclica (duty cycle): define a tensão média aplicada: T(PWM) T(PWM) T(PWM) A1 A2 A3 Felipe Nascimento Martins
  • 159. Tensão média de um sinal PWM Felipe Nascimento Martins
  • 160. Sinal PWM versus sinal analógico Felipe Nascimento Martins
  • 161. Controle de potência por PWM  P = V2 / R analogWrite(11, 200);  cria no pino 11 um sinal PWM com razão cíclica igual a 200;  f = 490Hz;  apenas alguns pinos possuem saída PWM. Felipe Nascimento Martins
  • 162. Prática 10: Controle de brilho int brilho = 0; // brilho do LED int sensor; // valor do LDR void setup() { pinMode(A2, INPUT); // pino do LDR: entrada A2 pinMode(13, OUTPUT); // pino do LED: saida 13 Serial.begin(9600); } void loop() { sensor = analogRead(A2); // le valor do LDR brilho = map(sensor, 0, 1023, 0, 255); Serial.println(brilho); // envia ao PC analogWrite(13, brilho); // aciona LED delay(100); } Felipe Nascimento Martins
  • 163. Prática 11: Pisca-pisca suave int brilho = 0; // brilho do LED int variacao = 5; // quanto varia o brilho void setup() { pinMode(13, OUTPUT); } void loop() { analogWrite(13, brilho); brilho = brilho + variacao; if (brilho == 0 || brilho == 255) { variacao = -variacao; } delay(30); } Felipe Nascimento Martins
  • 165. LCD – Liquid Cristal Display • Opção prática de apresentar uma grande quantidade de dados de forma relativamente simples e barata; • O módulo é constituído de um display de cristal líquido (LCD) e de um controlador de display; • Existem dois tipos de módulo LCD: caractere e gráfico. Felipe Nascimento Martins
  • 166. • Os displays de caracteres são mais baratos e capazes de apresentar caracteres como letras, números e símbolos; • Sua tela é dividida em linhas e colunas, e cada posição armazena um caractere; • Não funcionam adequadamente para a apresentação de gráficos. LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 167. • Os displays gráficos são mais caros e complexos de programar; • Podem apresentar basicamente qualquer tipo de informação na tela, inclusive gráficos, fotos etc. 100 x 64 pixels 128 x 64 pixels LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 168. • Serão abordados neste curso os módulos de caractere baseados no chip controlador Hitachi HD 44780; • É um chip que é praticamente padrão no segmento de módulos de display LCD; • Permite um interface simples com microcontroladores. LCD – Liquid Cristal Display
  • 169. • Tem largura de barramento de dados selecionável para 4 ou 8 bits; • São necessárias três linhas de controle adicionais: ENABLE, RS e R/W; • A comunicação no modo de 4 bits é realizada utilizando apenas as quatro linhas mais significativas (D7 a D4). O byte é dividido em dois nibbles onde o mais significativo é enviado primeiro. LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 170. Bit 1 de dados do LCDD18 Bit 0 de dados do LCDD07 EnableE6 Read/WriteR/W5 Register SelectRS4 ContrasteVo3 Positivo (5V)Vdd2 TerraVss1 FunçãoNomePino LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 171. Catodo do back-light (se existir)K16 Anodo do back-light (se existir)A15 Bit 7 de dados do LCDD714 Bit 6 de dados do LCDD613 Bit 5 de dados do LCDD512 Bit 4 de dados do LCDD411 Bit 3 de dados do LCDD310 Bit 2 de dados do LCDD29 FunçãoNomePino LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 172. • O HD 44780 possui as seguintes memórias: – 80 bytes de memória RAM (DDRAM – Data Display RAM); – 64 bytes de RAM para o gerador de caracteres (CGRAM – Caracter Generator RAM); – 9920 bits de memória ROM (CGROM): 208 caracteres 5x8 ou 32 caracteres 5x10. LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 173. • O Arduino possui uma biblioteca para utilização de LCDs de caractere; • Após incluir a biblioteca, é necessário declarar o display informando a que pinos do Arduino o LCD está conectado; • Em seguida, deve ser chamada a função de inicialização, passando como parâmetros o número de caracteres e de linhas que o LCD possui. LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 174. Prática 12: Dados no LCD #include <LiquidCrystal.h> // inicializa bib. informando os pinos conectados: LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); // inicializa o LCD lcd.print("hello, world!"); // mostra mensagem } void loop() { // coloca cursor na coluna 0, linha 1: lcd.setCursor(0, 1); // mostra numero de segundos desde o reset: lcd.print(millis()/1000); delay(100); } Felipe Nascimento Martins
  • 175. Prática 12: Dados no LCD Felipe Nascimento Martins
  • 176. Prática 12: Dados no LCD Felipe Nascimento Martins
  • 177. • Outras funções interessantes: lcd.home(); // retorna cursor ao início lcd.write(char); // imprime um caracter lcd.blink(); // aciona cursor piscante lcd.noBlink(); // desliga cursor piscante lcd.autoscroll(); // ativa deslocamento a esquerda lcd.noAutoscroll(); // desliga deslocamento lcd.noDisplay(); // apaga tela (texto na memória) lcd.display(); // liga tela (exibe caracteres) lcd.rightToLeft(); // próxima letra à esquerda lcd.leftToRight(); // próxima letra à direita lcd.clear(); // limpa a tela LCD – Liquid Cristal Display Felipe Nascimento Martins
  • 178. Prática 13: Valor do sensor no LCD • Modifique o programa anterior para fazer com que a primeira linha do LCD mostre o valor de temperatura e a segunda linha mostre um relógio tipo HH:MM:SS. Felipe Nascimento Martins
  • 179. LCD gráfico 128 x 64 pixels Detalhes: http://nossosrobos.blogspot.com.br/2012/01/lcd-para-seu-robo-com-arduino.html Felipe Nascimento Martins
  • 180. Felipe Nascimento Martins Avançando com Arduino e Sistemas Embarcados
  • 182. Motor de Corrente Contínua (CC) Felipe Nascimento Martins • Alimentado em corrente contínua; • Possui ímã e bobinas internamente; • Velocidade é ajustada pela tensão de alimentação (pode ser por PWM!); • Sentido de giro é alterado pela polaridade.
  • 183. Motor de Passo Felipe Nascimento Martins • Alimentado com sinais digitais; • Alimentação das bobinas deve ser sequencial; • Permite controle preciso de posição; • Torque cai muito com o aumento da velocidade.
  • 184. Medição de deslocamento (encoder) • Permite medir a velocidade e posição angular dos motores; • Precisão: número de pulsos por volta. Felipe Nascimento Martins
  • 185. Medição de deslocamento (encoder) Felipe Nascimento Martins
  • 186. Medição de deslocamento (encoder) Felipe Nascimento Martins
  • 187. Servomotor Felipe Nascimento Martins • É um motor CC que possui um sistema de interno de medição e de controle: • angular – controla a posição (giro) do eixo; • contínuo – controla a velocidade do eixo;
  • 189. Servomotor Felipe Nascimento Martins • Normalmente é feito com um motor de corrente contínua, um circuito eletrônico e engrenagens para aumentar o torque;
  • 190. Servomotor Felipe Nascimento Martins • Três fios: 2 de alimentação e um de controle; • O sinal de referência (de posição ou velocidade) é do tipo PWM.
  • 191. Servomotor Felipe Nascimento Martins • Três fios: 2 de alimentação e um de controle; • O sinal de referência (de posição ou velocidade) é do tipo PWM.
  • 192. Exemplo: Controle de Servomotores Felipe Nascimento Martins
  • 193. Felipe Nascimento Martins Exemplo: Controle de Servomotores
  • 194. #include <Servo.h> Servo myservo; // create servo object Servo myservo2; int potpin = 0; // used to connect the potentiometer int val; // value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin myservo2.attach(10); } void loop() { val = analogRead(potpin); // entre 0 e 1023 val = map(val, 0, 1023, 0, 179); // escalona myservo.write(val); myservo2.write(179-val); delay(15); } Felipe Nascimento Martins Exemplo: Controle de Servomotores
  • 195. Outros motores com Arduino • Cada pino do Arduino pode fornecer, no máximo, 40mA de corrente -> pode não ser suficiente para acionar um motor! • Solução: usar transistores. Felipe Nascimento Martins
  • 196. Transistor • Um transistor pode ser entendido como uma “válvula” eletrônica: é capaz de acionar cargas de alta corrente a partir de um sinal de controle de baixa corrente. • Quanto maior for a corrente no pino de “base” (B), maior será a corrente entre os pinos “coletor” (C) e “emissor” (E). • Por exemplo, se a corrente na base variar de 0 a 0,01 A, a corrente de coletor pode variar de 0 a 1A! Felipe Nascimento Martins
  • 197. Exemplo: Motor CC com transistor Felipe Nascimento Martins
  • 198. Exemplo: Motor CC com transistor Felipe Nascimento Martins
  • 199. • Com um transistor é possível ligar e desligar um motor, além de controlar sua velocidade (PWM); • Mas, para inverter o sentido de giro de um motor CC é necessário inverter o sentido de circulação da corrente no motor; • Com um transistor, a corrente circula apenas num sentido; • Solução: usar quatro transistores conectados em forma de ponte: Ponte H. Ponte H Felipe Nascimento Martins
  • 201. Ponte H – exemplo Felipe Nascimento Martins
  • 202. Motor Shield oficial Felipe Nascimento Martins • Shield oficial para controle de motores: circuito integrado com ponte H.
  • 203. Motor Shield • Pode acionar dois motores CC ou um motor de passo: até 36V, 600mA, 5kHz. Felipe Nascimento Martins
  • 204. Motor Shield • Exemplo: controle de velocidade dos motores com o Shield Motor Control: Felipe Nascimento Martins
  • 205. • Pode acionar quatro motores CC (46V, 4A) e uma carga resistiva de até 30A. Motor Shield 4 Power Felipe Nascimento Martins
  • 207. Comunicação Serial no Arduino • A maioria das placas Arduino possui hardware para implementação de comunicação serial em diferentes padrões: • SPI – Serial Peripheral Interface; • TWI – Two Wire serial Interface (I2C); • USART – Universal Synchronous and Asynchronous serial Receiver and Transmitter (estilo RS-232) – Já vimos este tipo; Felipe Nascimento Martins
  • 208. SPI – Serial Peripheral Interface Felipe Nascimento Martins
  • 209. SPI • SPI – Serial Peripheral Interface – é uma interface de comunicação serial síncrona utilizada para comunicação a curta distância: • CIs conversores A/D e D/A; • Memórias Flash e EEPROM; • Relógios de tempo real; • Sensores; • Potenciômetros digitais; • Telas de LCD; etc. Felipe Nascimento Martins
  • 210. SPI • Na comunicação SPI sempre existe um dispositivo mestre (em geral é o próprio microcontrolador) que controla os periféricos; • Três linhas são comuns a todos os dispositivos: – MISO (Master In Slave Out) – linha pela qual o escravo envia dados ao mestre; – MOSI (Master Out Slave In) – linha pela qual o mestre envia dados aos escravos; – SCK (Serial Clock) – clock gerado pelo mestre para sincronizar a comunicação. Felipe Nascimento Martins
  • 211. SPI • Além das linhas MISO, MOSI e SCK, cada dispositivo está conectado a uma linha SS: • SS (Slave Select) – cada escravo possui uma entrada desta linha, que é controlada pelo mestre para habilitar ou desabilitar os dispositivos individualmente: • Em nível baixo: comunicação habilitada; • Em nível alto: escravo ignora o mestre. Felipe Nascimento Martins
  • 213. SPI com vários escravos Felipe Nascimento Martins
  • 214. SPI com vários escravos Felipe Nascimento Martins
  • 215. SPI com Arduino • A biblioteca do Arduino faz a placa operar em modo mestre; • Ordem de transmissão dos dados (primeiro pelo MSB ou pelo LSB): SPI.setBitOrder() • Linha de clock fica em nível alto ou baixo quando inativa e modo de amostragem de dados: SPI.setDataMode() • Velocidade de comunicação: SPI.setClockDivider() Felipe Nascimento Martins
  • 216. Cartão de Memória SD Felipe Nascimento Martins
  • 217. Cartão de Memória SD • A biblioteca “SD.h” provê meios de utilização de cartões de memória SD com o Arduino. • Esse tipo de memória se comunica com o microcontrolador por SPI. Felipe Nascimento Martins
  • 218. Cartão de Memória SD Felipe Nascimento Martins
  • 219. Cartão de Memória SD Alimentação: 3,3V  uso de resistores em 5V! Felipe Nascimento Martins
  • 220. Exemplo: data logger #include <SD.h> const int chipSelect = 4; void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); pinMode(10, OUTPUT); // chip select if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } Serial.println("card initialized."); } Felipe Nascimento Martins
  • 221. Exemplo: data logger void loop() { // make a string for assembling the data to log: String dataString = ""; // read three sensors and append to the string: for (int analogPin = 0; analogPin < 3; analogPin++) { int sensor = analogRead(analogPin); dataString += String(sensor); if (analogPin < 2) { dataString += ","; } } Felipe Nascimento Martins
  • 222. Exemplo: data logger // open the file. only one file can be open at a time, File dataFile = SD.open("datalog.txt", FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.println(dataString); dataFile.close(); // print to the serial port too: Serial.println(dataString); } // if the file isn't open, pop up an error: else { Serial.println("error opening datalog.txt"); } } Felipe Nascimento Martins
  • 223. TWI – Two Wire serial Interface (I2C) Felipe Nascimento Martins
  • 224. I2C • I2C (Inter-Integrated Circuit) foi desenvolvido pela PHILIPS no início da década de 1980 para transferência de dados entre microcontroladores e equipamentos; • Barramento de comunicação serial de dados entre dispositivos onde a conexão é feita através de 2 fios; • É half-duplex, ou seja, em determinado instante, apenas recebe ou envia informação; Felipe Nascimento Martins
  • 225. I2C • Taxa de transferência: até 100kbits/s; • Operação em modo mestre/escravo: um dispositivo ou processo (mestre) tem controle unidirecional sobre um ou mais outros dispositivos (escravos); • Pode possuir mais de um mestre, mas só um controla o barramento de cada vez. Felipe Nascimento Martins
  • 228. I2C • Um fio transporta o sinal do clock (SCL – Serial Clock Line) e o outro, os dados (DAS - Serial Data Line); • A comunicação é síncrona. Primeiro é enviado o endereço do dispositivo destinatário. Em seguida, o dado é enviado ao barramento.
  • 230. TWI (I2C) • No Arduino a biblioteca Wire possui as funções para implementação da comunicação I2C; • Esta biblioteca implementa apenas endereçamento de 7 bits; • Caso use dispositivos que exijam 8 bits de endereçamento, deve-se configurar seu endereço para a faixa 0-127. Felipe Nascimento Martins
  • 232. Exemplo: Potenciômetro Digital #include <Wire.h> void setup() { Wire.begin(); // join i2c (address optional for master) } byte val = 0; void loop() { Wire.beginTransmission(44); // transmit to device #44 // device address is specified in datasheet Wire.write(byte(0x00)); // sends instruction byte Wire.write(val); // sends potentiometer value byte Wire.endTransmission(); // stop transmitting val++; // increment value if(val == 64) { // if reached 64th position (max) val = 0; // start over from lowest value } delay(500); } Felipe Nascimento Martins
  • 233. Arduino e NXT via RS-485 e I2C Felipe Nascimento Martins Arduino Nano
  • 234. Arduino e NXT via RS-485 e I2C 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
  • 235. Comunicação Serial USART: Meios de Utilização Felipe Nascimento Martins
  • 236. Comunicação sem-fio • Wixel shield for Arduino, com dois módulos Wixel; • Rádio de 2,4GHz para até 30 metros, 350kbps; • Possui microcontrolador programável por interface amigável; • Tem 15 pinos de I/O, com 6 entradas analógicas, que podem ser programados de forma independente da comunicação; • Permite a criação de uma rede com até 128 módulos de comunicação; • A comunicação é feita como se fosse comunicação serial padrão; • Permite gravar programas no Arduino sem ligar o cabo USB à placa! Felipe Nascimento Martins
  • 238. Conexão Bluetooth • Modelo JY-BT03 - Shenzhen Jiayuan Electronic Co. Ltd.; • Conexão com pinos RX-TX do microcontrolador; • Comunicação Bluetooth 2.0; • Baud rate: 2.400 a 1.382.400 bps; • Tensão de alimentação: 5,0 V (3,6V a 6,0V); • Corrente: 35mA quando realiza "pareamento"; 8mA quando conectado; • Antena impressa na própria placa; • Possui LED que indica o estado da conexão Bluetooth; • Senha padrão: 1234. Felipe Nascimento Martins
  • 242. Conexão em rede ZigBee • ZigBee designa um conjunto de especificações para a comunicação sem-fio entre dispositivos eletrônicos, com ênfase na baixa potência de operação, na baixa taxa de transmissão de dados e no baixo custo de implantação; • Pode-se formar uma rede com vários módulos, de maneira que a informação seja transmitida de um ao seguinte (Mesh) para aumentar o alcance total. Felipe Nascimento Martins
  • 243. Módulo XBee – ZigBee • Módulo Digi XBee ZB - Antena Wire - Low Power • Frequência de Transm.: 2,4 GHz • Potência de Transm.: 1,25 mW • Alcance Máximo estimado: até 120m (+1 dBm) • Topologias de rede: P-to-P, P-to-M, ZigBee/Mesh • Sleep Mode < 1µA • RF Data Rate 250 kbps • Segurança: 128-bit AES • (10) GPIO, (4) ADC e 3V3 CMOS UART Felipe Nascimento Martins
  • 244. Módulo XBee – ZigBee • XBee e XBee-PRO ZB • Frequência de Transm.: 2,4 GHz • Potência de transm.: 63 mW (+18 dBm) / Int'l 10 mW (+10 dBm) • Alcance Máximo estimado: 3200 m • RF Data Rate: RF 250 kbps, Serial até 1 Mbps • Segurança: 128-bit AES • Antena PCB - Ref: PIT Felipe Nascimento Martins
  • 246. Arduino com MATLAB Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html Felipe Nascimento Martins
  • 247. Arduino com LabVIEW Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835 Felipe Nascimento Martins
  • 249. Aquisição de dados com Arduino Felipe Nascimento Martins
  • 250. Controle de um Robô Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html Felipe Nascimento Martins
  • 251. Robôs baseados em Arduino • DFRobotShop Rover - Arduino Compatible Tracked Robot Felipe Nascimento Martins
  • 252. Robôs baseados em Arduino • DFRobotShop Rover 2.0 – Arduino Compatible Mecanum Felipe Nascimento Martins
  • 253. Robô Arduino oficial • Arduino Robot Felipe Nascimento Martins Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html
  • 254. Softwares gratuitos Felipe Nascimento Martins • IDE de programação do Arduino: www.arduino.cc • Fritzing - para fazer esquemas elétricos, de proto-board e placas de circuito impresso: www.fritzing.org • 123D Circuits.io - para simulação de circuitos com ou sem Arduino e projeto de placas de circuito impresso (roda no navegador): http://123d.circuits.io
  • 255. Referências Felipe Nascimento Martins • ARDUINO. Language Reference. Disponível em: <http://arduino.cc/en/Reference/HomePage>. MAR/2014. • ERIKSSON, Fredrik. Industrial Circuits Application Note - Stepper Motor Basics. • FONSECA, Érika e BEPPU, Mathyan. Apostila Arduino. CT/UFF, 2010. • JUSTEN, Álvaro. Curso de Arduino (apostila), 2011. • LIMA, Charles B. de; VILLAÇA, Marco V. M. AVR e Arduino – Técnicas de Projeto. 2ª ed. 2012. • MARTINS, Felipe N. Introdução à Eletrônica com Arduino. Disponível em: <http://www.slideshare.net/felipenm/oficina-de-introduo-a-eletrnica- com-arduino>. • Nossos Robôs: www.nossosrobos.blogspot.com • POMÍLIO, J.A. Eletrônica de Potência. UNICAMP (apostila para o curso de graduação). Acesso em AGO/2010. • http://www.labdegaragem.com.br/wiki • http://www.learningaboutelectronics.com/ • VALPEREIRO, Filipe. Workshop Arduino, 2008.