Você está na página 1de 61

Módulo:

Tópicos Iniciais em Informática


e Programação

Sistemas Embarcados
Ano/Semestre: 2016/2
Carga Horária: 173 h

Professor (a)/ titulação: Eng. Rafael Rehm Me.


1 Introdução

2 Eletrônica

3 Hardware
 O que ele faz?

Recebe, Gera e Interpreta Dados.


 Premite desenvolver:
Controle residencial

Robótica

Design interativo

Quase tudo que sonhar


esta ferramenta pode
tornar realidade.
Arduino e Robótica

Arduíno?
Arduino é uma plataforma open-source para criação de protótipos
eletrônicos, baseada em hardware e software fácil usar. Foi criada para
artistas, projetistas, hobbistas ou qualquer um interessado em criar objetos
interativos e inteligentes.
Arduino e Robótica

Quem?
Arduino é um projeto iniciado na Itália em 2005. Uma comunidade ativa se
formou em torno deste projeto.

Onde?
Página inicial: arduino.cc
• Hardware livre
• Software livre
• Diferentes modelos
• Simples e confiável
• Robusto o suficiente para a maioria das
atividades de robótica livre
Um dos Arduinos
Mas, o que é?

Uma ferramenta para criar objetos que sentem e controlam o


ambiente.
Baseado em um microcontrolador e um ambiente de desenvolvimento
simples.
Pode ser usado para receber dados de uma variedade enorme de
sensores e controlar uma variedade enorme de objetos tais como
lâmpadas, motores etc.
Pode ser usado sozinho ou em conjunto com seu computador.
Placas podem ser compradas ou montadas em casa...
Ambiente de desenvolvimento, circuitos tudo é aberto e livre.
Por que ele?

1 Barato quando comparado com outras alternativas.


2 Cross-platform: roda em Windows, Macintosh OSX, and Linux
operating systems.
3 Ambiente de desenvolvimento simples, semelhante linguagem C.
4 Código Aberto
5 Arduino é baseado em Atmel’s microcontroladores.
Programação em C é requisito!!!

1. Reservem livros
2. Revisem C
Arduino UNO
Entradas e saídas digitais (I/O) 14 (6 com saída PWM)
Entradas analógicas 6
Clock de operação 16MHz
Processador Atmega328 – Atmel
Microcontrolador de 8bits
RISC com 131 instruções
2 timers de 8 bits
4 timers de 16 bits
Portas de comunicação Gravação via USB;
1 porta RS-232 disponivel
Alimentação recomendada 7-12V (pode ser alimentado pela USB)
Corrente DC máxima por pino de I/O 40mA
Memória Flash 32kB (armazenar código)
Memória SRAM 2kB (rodar programa)
Memória EEPROM 1 kB (gravar dados)
Clock de 16MHz
• Em eletrônica e especialmente em circuitos
digitais síncronos, o clock é um sinal usado para
coordenar as ações de dois ou mais circuitos eletrônicos.

• Um sinal de clock oscila entre os estados alto e baixo,


normalmente usando um duty cycle de 50%, e gerando
uma onda quadrada.

• Unidade de frequência no SI: Hertz[Hz] = 1ciclo/seg


Memória Flash
• Memória do tipo EEPROM, re-gravável que, ao
contrário de uma memória RAM convencional,
preserva o seu conteúdo sem a necessidade de
fonte de alimentação.

• Armazena o código do programa que gravamos


no Arduino, assim ao retirar a alimentação da
placa o código continua gravado e não é perdido!
Memória SRAM
• Static Random Access Memory, memória estática
de acesso aleatório, mantém dados armazenados
enquanto alimentação é mantida mas ao
contrário da DRAM, não requer refresh.

• Utilizada para executar o programa que gravamos


no Arduino, assim ao retirar a alimentação da
placa qualquer status de variáveis de execução
do código é perdido!
Memória EEPROM
• Electrically-Erasable Programmable Read-Only Memory,
memória não volátil, que ao contrário de uma EPROM,
uma EEPROM pode ser programada e apagada
eletricamente várias vezes.

• Utilizada para que seu programa grave dados que deseje


recuperar posteriormente caso a alimentção seja
perdida a exemplo de status de variáveis de execução do
código!
Section Summary

1 Introdução

2 Eletrônica

3 Hardware
O que preciso saber de eletrônica?

1 Para começar quase nada.


2 Corrente de pilha não mata (quase nunca).
3 O que é tensão (Volt) representada por V, corrente (Ampere)
representada por I, e Potência (Watt) representada por W.
4 O que é uma resistência (Ohm).
5 Lei de Ohm V = R*I
6 Potência P = V*I ou P = RI2 ou P = V2/R.
Mais?
Para não dizer que nunca viu.

Figura: Resistências, Capacitores e Indutor


Então responda!

1 Se a tensão da bateria é 9V e a potência da lâmpada é 3W, qual é a


corrente que passa no circuito?
2 Chave não tem resistência (praticamente).
3 Qual é a resistência da lâmpada?
LED
1 Light Emitting Diode conduzem corrente (acendem) somente quando
polarizados com a tensão correta.
2 Quando acendem, os leds têm uma tensão constante sobre eles. Para
um led vermelho é aproximadamente de 1.7V.
3 A corrente máxima que ele aceita é 30 mA. Costuma-se usar uma
corrente entre 10 e 20 mA.
4 Este led está polarizado corretamente?
• Testes devem ser realizados numa placa de
prototipagem onde os componentes são
fixados sem a necessidade de solda.

Internamente, a placa tem comunicação


metálica conforme esquema acima.
Section Summary

1 Introdução

2 Eletrônica

3 Hardware
O que tem?
O Microcontrolador

1 ATmega2560/V
2 Microcontrolador Atmel de 8 bits.
3 Conversores Analógicos / Digitais
4 16 MHz
5 4 Kbytes EEPROM
6 8 Kbytes SRAM
7 64k/128k/256k bytes de Flash
8 Timers/Counters
9 PWMs
Shields

1 Shields são placas que podem ser acopladas no topo do arduino e


extendem sua capacidade.
2 A Shield acima fornece capacidade de se conectar na Rede e Internet.
Shields
GSM-GPRS

GPS
Display de 7 segmentos

Display colorido

Display 16x2
Controle de Motor
Ponte H – 1A
Controle de Motor
Ponte H – 2A
GameDuino
Saida VGA
Audio Stereo joystick
Ethernet Wi-Fi
microSD

SDCard logger
CanBus
ZigBee
Saídas a Relé
Os pinos digitais

1 No Arduino exemplo temos 13 entradas/saídas digitais.


2 Os pinos podem ser configurados por programa como entradas ou
saídas.
Usando como saída

Ligando
Usar a saída digital para acender um led.
Usando como entrada
Usar a entrada digital para verificar se uma chave está fechada ou
aberta.
Os pinos analógicos

1 No Arduino exemplo temos 6 entradas analógicas.


2 Converte uma voltagem DC de 0 até 5V em um valor digital de 0 até
1023.
3 Conversão feita com um circuito chamado conversor analógico-digital.
Usando

Ligando
Usar a entrada analógica para controlar um led piscando.
Exemplo de Protótipo
Ambiente Desenvolvimento
Etapas para trabalhar

1 Um Arduino e um cabo USB.


2 Baixar o ambiente de desenvolvimento do Arduino.
3 Conectar a placa do Arduino e o computador com o cabo USB.
4 Instalar drivers.
5 Iniciar o ambiente.
6 Escrever a sua aplicação.
7 Compilar
8 Selecionar o modelo de Arduino.
9 Selecionar a porta serial.
10 Subir seu programa para o Arduino.
O Início
Selecionando o Arduino
Eemplo Programar o Piscar de um LED

/*
Blink: Turns on an LED on for one second,
then off for one second, repeatedly.
This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino ֓←
boards:
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(3000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
Servos
Servos

1 Servos Rotação Limitada.


2 Servos Rotação Contínua.

Adriano Cruz () Arduíno 16 de setembro de 2013 37 / 51


Conectando Servos

Adriano Cruz () Arduíno 16 de setembro de 2013 38 / 51


Esquemas

Arduino
Servo D2 +5V

GND

Vin

9V
GND

1 Normalmente vermelho usado para VCC.


2 Normalmente preto usado para Ground.
3 A outra cor controla o motor.
4 Arduino usa pinos D0 e D1 para comunicar-se usando USB ou serial,
somente use-os se for necessário.
Bibliotecas

1 Bibliotecas são coleções de classes que extendem as capacidades


básicas do Arduíno.
2 Veja em http://arduino.cc/en/Reference/Libraries.
3 Deve-se declarar estas bibliotecas antes de usar.
4 Para incluir a biblioteca que controla os servos usamos:
#include <Servo.h>
5 Agora podemos referenciar métodos e objetos desta biblioteca.
6 A biblioteca Servo vem com a instalação padrão e pode controlar até
12 motores na maioria dos Arduinos e até 48 com o Mega.
Bibliotecas

1 Para cada servo devemos criar uma instância do objeto Servo.


Exemplo: Servo myservo;.
2 No função setup() deve-se associar esta instância a um pino específico.
Exemplo: myServo.attach(2);.
3 Para controlar o motor há uma série de funções, incluindo
read(), write(), detach().
4 Ver em http://arduino.cc/en/Reference/Servo.
5 Usaremos write que requer um parâmetro: o grau de rotação.
Centrando um Servo

// servoCenter.pde - Center servo


֓// (c) Kimmo Karvinen & Tero Karvinen http://BotBook←
.com
// updated
#include <Servo.h>
Servo myServo;
void setup(){
myServo.attach(2);
myServo.write(90);
}

void loop() {
delay(100);
}
Controlando um Servo

// Move servo to center, void loop() {


// maximum angle myServo.write(90);
// and to minumum angle delay(delayTime);
#include <Servo.h> myServo.write(180);
Servo myServo; delay(delayTime);
int delayTime = 1000; myServo.write(90);
delay(delayTime);
void setup() { myServo.write(0);
myServo.attach(2); delay(delayTime);
} }
Sensores Ultrasônicos

1 Um sensor ultrassônico funciona usando os mesmos princípios que um


radar.
2 Ele transmite um sinal de alta frequência e, baseado no eco, determina
a distância de um objeto.
3 A frequência fica fora do alcance do ouvido humano.
4 Sensores ultrassônicos podem medir distâncias entre 2cm e 3m.
5 Luzes não afetam estes sensores. Eles podem funcionar em completa
escuridão.
6 Existe a possibilidade do sensor não detectar superfícies refletoras ou
objetos localizados em ângulos agudos.
7 Isto porque o som pode não voltar ao sensor.
8 Objetos pequenos podem não refletir energia suficiente e não serem
detectados.
Um Sensor Distância
Um Esquema com Sensor Distância

Arduino Ping
Servo D2 +5V +5V

GND
D4 SIG

GND

D3
Servo VIN

GND GND
9V
Controlando o Sensor

const int pingPin= 2;


long duration, distanceInches , distanceCm ;
void setup(){
Serial.begin(9600) ;
}
void loop() {
pinMode(pingPin , OUTPUT);
digitalWrite(pingPin , LOW); delayMicroseconds(2) ;
digitalWrite(pingPin , HIGH); delayMicroseconds(5);
digitalWrite(pingPin , LOW); pinMode(pingPin , INPUT);
duration = pulseIn(pingPin , HIGH);
distanceInches = microsecondsToInches(duration);
distanceCm= microsecondsToCentimeters(duration);
Serial.print(distanceInches);
Serial.print("in , "); Serial.print(distanceCm);
Serial . print ("cm") ;
Serial.println();
delay(100) ;
}
Controlando o Sensor

long microsecondsToInches(long microseconds) {


return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
Sensores Ultrasônicos

1 A função microsecondsToInches() faz o cálculo usando o sistema


usado em países de língua inglesa.
2 De acordo com o manual do Parallax há 73.746 microsegundos por
polegada.
3 Isto é derivado da velocidade do som (1,130 pés por segundo).
4 Este cálculo fornece o tempo para o som ir e voltar.
5 Por isso há uma divisão por 2 para obter a distância até o obstáculo.
6 A função microsecondsToCentimeters() faz o cálculo usando o SI.
7 A velocidade do som é 340 m/s ou 29 microsegundos por centimetro.
Sensores Ultrasônicos

1 O exemplo inclui o número 29 na função


microsecondsToCentimeters().
2 A velocidade do som (m/s) a uma determinada temperatura (oC) do
ar é calculada pela fórmula 331.5 + 0.6 ∗ t.
3 A uma temperatura de 20o C, temos:
331.5 + 0.6 ∗ 20 = 331.5 + 12 = 343.5 m/s.
4 Vamos converter para microsegundos por centímetros.
5 Começar convertendo para centímetros por segundo:
343.5 ∗ 100 = 34350 cm/s.
6 Em microsegundos (µs), temos: 34350/1000000 = 0.03435 cm/µs
7 Velocidade pode ser expressa no tempo que leva para percorrer uma
determinada distância.
8 Vamos converter para µs/cm ou seja 1/0.03435 = 29.112.
9 Se o projeto for usado em um local onde a temperatura for diferente
de 20o C os cálculos devem ser refeitos.

Você também pode gostar