130
Introdu Introdu ç ç ão ão à à Eletrônica com Eletrônica com Arduino Arduino Felipe Nascimento Martins v. 4 - 2013 VIII Jornada de Iniciação Científica, Desenvolvimento Tecnológico e Inovação do Ifes

Mini-curso de Introdução a Eletrônica com Arduino

Embed Size (px)

DESCRIPTION

Mini-curso de Introdução a Eletrônica com Arduino. Inclui exemplos de circuitos e códigos. Autor: Felipe Nascimento Martins

Citation preview

Page 1: Mini-curso de Introdução a Eletrônica com Arduino

IntroduIntroduçção ão àà Eletrônica com Eletrônica com ArduinoArduino

Felipe Nascimento Martins

v. 4 - 2013

VIII Jornada de Iniciação Científica, Desenvolvimento Tecnológico e Inovação do Ifes

Page 2: Mini-curso de Introdução a Eletrônica com Arduino

O trabalho Introdução à Eletrônica com Arduino de Felipe Nascimento Martins foi

licenciado com uma LicençaCreative Commons - Atribuição-

CompartilhaIgual 3.0 Não Adaptada.

Page 3: Mini-curso de Introdução a Eletrônica com Arduino

http://nera.sr.ifes.edu.br

Felipe Nascimento Martins

Page 4: Mini-curso de Introdução a Eletrônica com Arduino

Contato:

Twitter: @@f_n_martinsf_n_martins

http://www.facebook.com/felipenmhttp://www.facebook.com/felipenm

[email protected]@gmail.com

Page 5: Mini-curso de Introdução a Eletrônica com Arduino

Conteúdo

• Arduino;• Microcontrolador;• Primeiro programa;• Um pouco de eletrônica (pouco mesmo!);• Programas mais legais;• Práticas (montagem e programação);• Avançando com o Arduino: shields,

comunicação sem fio, aplicações em robótica...

Felipe Nascimento Martins

Page 6: Mini-curso de Introdução a Eletrônica com Arduino

Felipe Nascimento Martins

Page 7: Mini-curso de Introdução a Eletrônica com Arduino

O que é Arduino?

• Arduino é uma plataforma de prototipagemeletrô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

Page 8: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – hardware

Felipe Nascimento Martins

Page 9: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – hardware

Felipe Nascimento Martins

Page 10: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – software

Page 11: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 12: Mini-curso de Introdução a Eletrônica com Arduino
Page 13: Mini-curso de Introdução a Eletrônica com Arduino

Arduino é Open Source!

Felipe Nascimento Martins

Page 14: Mini-curso de Introdução a Eletrônica com Arduino

Arduino é Open Source!

Felipe Nascimento Martins

Page 15: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 16: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 17: Mini-curso de Introdução a Eletrônica com Arduino

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 ArduinoArduino é marca registrada!

Felipe Nascimento Martins

Page 18: Mini-curso de Introdução a Eletrônica com Arduino

Clones do Arduino

• Freeduino

Felipe Nascimento Martins

Page 19: Mini-curso de Introdução a Eletrônica com Arduino

Clones do Arduino

• Seeduino

Felipe Nascimento Martins

Page 20: Mini-curso de Introdução a Eletrônica com Arduino

Clones do Arduino

• Brasuíno

Felipe Nascimento Martins

Page 21: Mini-curso de Introdução a Eletrônica com Arduino

Clones do Arduino

• Severino

Felipe Nascimento Martins

Page 22: Mini-curso de Introdução a Eletrônica com Arduino

Similares ao Arduino

• chipKIT Uno32 - PIC32MX320F128 (32 bits, 80MHz, 128kB Flash, 16kB SRAM)

Felipe Nascimento Martins

Page 23: Mini-curso de Introdução a Eletrônica com Arduino

Similares ao Arduino

• Olimexino – STM32F103RBT6 (núcleo ARM CortexM3, 32 bits, 128kB, 72MHz)

Felipe Nascimento Martins

Page 24: Mini-curso de Introdução a Eletrônica com Arduino

Similares ao Arduino

• Adafruit Trinket – ATtiny85

Felipe Nascimento Martins

Page 25: Mini-curso de Introdução a Eletrônica com Arduino

Similares ao Arduino

• LaunchPad - MSP430

Felipe Nascimento Martins

Page 26: Mini-curso de Introdução a Eletrônica com Arduino

Similares ao Arduino

• LaunchPad - MSP430

US$4,30 com frete

grátis!!

http://www.ti.com/tool/msp-exp430g2

Page 27: Mini-curso de Introdução a Eletrônica com Arduino

Felipe Nascimento Martins

Page 28: Mini-curso de Introdução a Eletrônica com Arduino

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 serial: 1 porta;• 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

Page 29: Mini-curso de Introdução a Eletrônica com Arduino

Felipe Nascimento Martins

Page 30: Mini-curso de Introdução a Eletrônica com Arduino

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 serial: 4 portas;• 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

Page 31: Mini-curso de Introdução a Eletrônica com Arduino

Felipe Nascimento Martins

Arduino Mega 2560

Page 32: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 33: Mini-curso de Introdução a Eletrônica com Arduino

Componentes de um Microcontrolador

Conversor

D/A

ConversorA/D

PWM

CPU

EEPROM

RAM

PortaSerial

Porta

Paralela

Temporizadores

Microcontrolador

Felipe Nascimento Martins

Page 34: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 35: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 36: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 37: Mini-curso de Introdução a Eletrônica com Arduino

Microcontroladores do Arduino

• 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.

Page 38: Mini-curso de Introdução a Eletrônica com Arduino

71612202,5132ATmega32u4Esplora

6168140,50,5/116/32ATmega168 ouATmega328

Nano

61661410,516/32ATmega168V ouATmega328V

LilyPad

71612202,5132ATmega32u4Leonardo

1284125496--512AT91SAM3X8EDue

1516165484256ATmega2560Mega2560

1516165484128ATmega1280Mega

6166142132ATmega328PUno

6166140,50,5/116/32ATmega168/328PDuemilanove

PinosPWM

Clock (MHz)

PinosA/D

Dig. I/O

SRAMkB

EEPROMkB

FlashkB

ProcessadorArduino

Arduino

Page 39: Mini-curso de Introdução a Eletrônica com Arduino

Arduino - Microcontrolador

Felipe Nascimento Martins

Page 40: Mini-curso de Introdução a Eletrônica com Arduino

Arduino - Microcontrolador

• ATmega328:• Núcleo AVR RISC de 8 bits;• 32kB Flash, 2kB RAM, 1kB EEPROM;• 23 pinos de E/S;• 3 temporizadores/contadores;• USART;• 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

Page 41: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 42: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 43: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 44: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 45: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 46: Mini-curso de Introdução a Eletrônica com Arduino

Arduino – Programa básico

Felipe Nascimento Martins

Page 47: Mini-curso de Introdução a Eletrônica com Arduino

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).

Page 48: Mini-curso de Introdução a Eletrônica com Arduino

Prática 1: Pisca-LED

• Montagem:

Felipe Nascimento Martins

Page 49: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• Ok. Entendi o programa. • Mas o que acontece nos

pinos do Arduino?

Felipe Nascimento Martins

Page 50: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• Ok. Entendi o programa. • Mas o que acontece nos

pinos do Arduino?• A funçãodigitalWrite(12,HIGH);

faz com que o pino 12 vápara “nível alto”, ou seja, ele fica com 5V.

Felipe Nascimento Martins

Page 51: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• Ok. Entendi o programa. • Mas o que acontece nos

pinos do Arduino?• A funçãodigitalWrite(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

Page 52: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• Ok. Entendi o programa. • Mas o que acontece nos

pinos do Arduino?• A funçãodigitalWrite(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

Page 53: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 54: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 55: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• A funçãodigitalWrite(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

Page 56: Mini-curso de Introdução a Eletrônica com Arduino

Um pouco de eletrônica

• Beleza. Mas, e o resistor? Serve para quê?

Felipe Nascimento Martins

Page 57: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 58: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 59: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 60: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 61: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 62: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 63: Mini-curso de Introdução a Eletrônica com Arduino

Simulador: 123d.circuits.io

Felipe Nascimento Martins

Detalhes: http://123d.circuits.io/circuits/34111/edit#

Page 64: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 65: Mini-curso de Introdução a Eletrônica com Arduino

Diodo

• Retificador de onda completa:

Felipe Nascimento Martins

Page 66: Mini-curso de Introdução a Eletrônica com Arduino

Diodo - exemplos

Felipe Nascimento Martins

Page 67: Mini-curso de Introdução a Eletrônica com Arduino

Matriz de contatos (Breadboard ou Protoboard)

Felipe Nascimento Martins

Page 68: Mini-curso de Introdução a Eletrônica com Arduino

Matriz de contatos (Breadboard ou Protoboard)

Felipe Nascimento Martins

Page 69: Mini-curso de Introdução a Eletrônica com Arduino

Prática 1.1: 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

Page 70: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 71: Mini-curso de Introdução a Eletrônica com Arduino

Capacitor - exemplos

Felipe Nascimento Martins

Page 72: Mini-curso de Introdução a Eletrônica com Arduino

Capacitor – exemplo de aplicação

• Retificador de onda completa com capacitor:

Felipe Nascimento Martins

Page 73: Mini-curso de Introdução a Eletrônica com Arduino

Prática 2: Pisca-LED com Capacitor

• Monte o circuito ao lado.• Use o mesmo programa

da prática 1, mas altere o tempo de espera para 5 segundos;

• Rode o programa e verifique o resultado;

• Depois, retire o capacitor e rode o mesmo programa. O que muda?

Felipe Nascimento Martins

Page 74: Mini-curso de Introdução a Eletrônica com Arduino

Arduino

• Outras funções:digitalRead(pino);

Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).analogRead(pino);

Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100µs.

while(analogRead(A2) < 950);

Mantém-se em loop até que o valor de retorno da função analogRead seja maior que 800.

for(int conta = 0; conta < 6; conta++)

Loop: executa o bloco de código até que conta >= 6.

Felipe Nascimento Martins

Page 75: Mini-curso de Introdução a Eletrônica com Arduino

Arduino

• Outras funções:digitalRead(pino);

Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).analogRead(pino);

Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100µs.

while(analogRead(A2) < 950);

Mantém-se em loop até que o valor de retorno da função analogRead seja maior que 800.

for(int conta = 0; conta < 6; conta++)

Loop: executa o bloco de código até que conta >= 6.

Felipe Nascimento Martins

Page 76: Mini-curso de Introdução a Eletrônica com Arduino

Arduino

• Outras funções:digitalRead(pino);

Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).analogRead(pino);

Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100µs.

while(analogRead(A2) < 950);

Mantém-se em loop até que o valor de retorno da função analogRead seja maior que 950.

for(int conta = 0; conta < 6; conta++)

Loop: executa o bloco de código até que conta >= 6.

Felipe Nascimento Martins

Page 77: Mini-curso de Introdução a Eletrônica com Arduino

Arduino

• Outras funções:digitalRead(pino);

Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).analogRead(pino);

Obtém valor entre 0 e 1023 proporcional à tensão no pino (entre 0 e 5V). Tempo de conversão = 100µs.

while(analogRead(A2) < 950);

Mantém-se em loop até que o valor de retorno da função analogRead seja maior que 800.

for(int conta = 0; conta < 6; conta++)

Loop: executa o bloco de código até que conta >= 6.

Felipe Nascimento Martins

Page 78: Mini-curso de Introdução a Eletrônica com Arduino

LDR – Resistência variável com a luz

Felipe Nascimento Martins

Page 79: Mini-curso de Introdução a Eletrônica com Arduino

LDR – Resistência variável com a luz

Felipe Nascimento Martins

Page 80: Mini-curso de Introdução a Eletrônica com Arduino

LDR – Resistência variável com a luz

Felipe Nascimento Martins

O pino 13 tem um resistor

interno!

Page 81: Mini-curso de Introdução a Eletrônica com Arduino

Prática 3: Usando o sensor de luz

• Monte o circuito com o LDR – Light Dependent

Resistor – e execute o seguinte programa:

void setup()

Serial.begin(9600);

void loop()

int sensor = analogRead(A2);

Serial.println(sensor, DEC);

Felipe Nascimento Martins

Page 82: Mini-curso de Introdução a Eletrônica com Arduino

Arduino

• A.

Page 83: Mini-curso de Introdução a Eletrônica com Arduino

Prática 4: 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

Page 84: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 85: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 86: Mini-curso de Introdução a Eletrônica com Arduino

Comunicação serial

• OK. • Mas como posso transmitir outras informações

além de “zeros” e “uns”?

Felipe Nascimento Martins

Page 87: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 88: Mini-curso de Introdução a Eletrônica com Arduino

Tabela ASCII

Felipe Nascimento Martins

Page 89: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 90: Mini-curso de Introdução a Eletrônica com Arduino

Prática 5: 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

Page 91: Mini-curso de Introdução a Eletrônica com Arduino

if (numero>='0' && numero<='9')

Serial.println(numero, BYTE);

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

Page 92: Mini-curso de Introdução a Eletrônica com Arduino
Page 93: Mini-curso de Introdução a Eletrônica com Arduino

PWM

• 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

Page 94: Mini-curso de Introdução a Eletrônica com Arduino

Tensão média de um sinal PWM

Felipe Nascimento Martins

Page 95: Mini-curso de Introdução a Eletrônica com Arduino

Sinal PWM versus sinal analógico

Felipe Nascimento Martins

Page 96: Mini-curso de Introdução a Eletrônica com Arduino

Controle de potência por PWM

analogWrite(11, 200);

cria no pino 11 um sinal PWM com razão cíclica igual a 200;

f = 490Hz; apenas alguns pinos

digitais possuem saída PWM.

Felipe Nascimento Martins

Page 97: Mini-curso de Introdução a Eletrônica com Arduino

Prática 6: Controle de brilho PWM

int brilho = 0; // brilho do LED

int sensor // valor do LDR

void setup()

pinMode(A2, INPUT); // pino do LDR: entrada A2

pinMode(11, OUTPUT); // pino do LED: saida 11

Serial.begin(9600);

void loop()

sensor = analogRead(A2); // le do LDR

brilho = map(sensor, 0, 1023, 0, 255);

Serial.println(brilho, DEC); // envia ao PC

analogWrite(11, brilho); // aciona LED

Felipe Nascimento Martins

Page 98: Mini-curso de Introdução a Eletrônica com Arduino

Prática 7: Pisca-pisca suave

int brilho = 0; // brilho do LED

int variacao = 5; // quanto varia o brilho

void setup()

pinMode(11, OUTPUT);

void loop()

analogWrite(11, brilho);

brilho = brilho + variacao;

if (brilho == 0 || brilho == 255)

variacao = -variacao;

delay(30);

Felipe Nascimento Martins

Page 99: Mini-curso de Introdução a Eletrônica com Arduino

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.

Page 100: Mini-curso de Introdução a Eletrônica com Arduino

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.

Page 101: Mini-curso de Introdução a Eletrônica com Arduino

Servomotor

Felipe Nascimento Martins

Page 102: Mini-curso de Introdução a Eletrônica com Arduino

Servomotor

Felipe Nascimento Martins

• É um motor CC que possui um sistema de interno de controle:• angular – controla a posição (giro) do eixo;• contínuo – controla a velocidade do eixo;

Page 103: Mini-curso de Introdução a Eletrônica com Arduino

Servomotor

Felipe Nascimento Martins

• Normalmente é feito com um motor de corrente contínua, um circuito eletrônico e engrenagens para aumentar o torque;

Page 104: Mini-curso de Introdução a Eletrônica com Arduino

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.

Page 105: Mini-curso de Introdução a Eletrônica com Arduino

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.

Page 106: Mini-curso de Introdução a Eletrônica com Arduino

Prática 8: Controle de Servomotores

Felipe Nascimento Martins

Page 107: Mini-curso de Introdução a Eletrônica com Arduino

Felipe Nascimento Martins

Prática 8: Controle de Servomotores

Page 108: Mini-curso de Introdução a Eletrônica com Arduino

#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

Prática 8: Controle de Servomotores

Page 109: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 110: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 111: Mini-curso de Introdução a Eletrônica com Arduino

Prática 9: Motor CC com transistor

Felipe Nascimento Martins

Page 112: Mini-curso de Introdução a Eletrônica com Arduino

Prática 9: Motor CC com transistor

Felipe Nascimento Martins

Page 113: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Shields

• Pode acionar dois motores CC ou um motor de passo: até 36V, 600mA, 5kHz.

Felipe Nascimento Martins

Page 114: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Shields

• Exemplo: controle de velocidade dos motores com o Shield Motor Control:

Felipe Nascimento Martins

Page 115: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Shields

Felipe Nascimento Martins

• Shield oficial para controle de motores:

Page 116: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Shields

Felipe Nascimento Martins

• Ethernet Shield:

Page 117: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: 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

Page 118: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino

Felipe Nascimento Martins

Arduino Nano

Page 119: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Sem fio

Detalhes: http://nossosrobos.blogspot.com.br/2011/12/arduino-wireless.html

Felipe Nascimento Martins

Page 120: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Bluetooth

Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html

Felipe Nascimento Martins

Page 121: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: LCDs

Detalhes: http://nossosrobos.blogspot.com.br/2012/01/lcd-para-seu-robo-com-arduino.html

Felipe Nascimento Martins

• LCD gráfico 128x128 pixels:

Page 122: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: MATLAB

Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html

Felipe Nascimento Martins

Page 123: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: LabVIEW

Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835

Felipe Nascimento Martins

Page 124: Mini-curso de Introdução a Eletrônica com Arduino

Avançando com Arduino: Robô

Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html

Felipe Nascimento Martins

Page 125: Mini-curso de Introdução a Eletrônica com Arduino

Robôs baseados em Arduino

• DFRobotShop Rover - ArduinoCompatible Tracked Robot

Felipe Nascimento Martins

Page 126: Mini-curso de Introdução a Eletrônica com Arduino

Robôs baseados em Arduino

• DFRobotShop Rover 2.0 – ArduinoCompatible Mecanum

Felipe Nascimento Martins

Page 127: Mini-curso de Introdução a Eletrônica com Arduino

Robô Arduino oficial

• Arduino Robot

Felipe Nascimento Martins

Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html

Page 128: Mini-curso de Introdução a Eletrônica com Arduino

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

Page 129: Mini-curso de Introdução a Eletrônica com Arduino

Referências

Felipe Nascimento Martins

• VALPEREIRO, Filipe. Workshop Arduino, 2008.• JUSTEN, Álvaro. Curso de Arduino (apostila), 2011.• FONSECA, Érika e BEPPU, Mathyan. Apostila

Arduino. CT/UFF, 2010.• ERIKSSON, Fredrik. Industrial Circuits Application

Note - Stepper Motor Basics.

• POMÍLIO, J.A. Eletrônica de Potência. UNICAMP (apostila para o curso de graduação). Acesso em AGO/2010.

• Blog: www.nossosrobos.blogspot.com• Site oficial do Arduino: www.arduino.cc• http://www.labdegaragem.com.br/wiki

Page 130: Mini-curso de Introdução a Eletrônica com Arduino

Obrigado!

Felipe N. Martins

@@f_n_martinsf_n_martins

www.facebook.com/felipenmwww.facebook.com/felipenm