mini curso sistemas embarcados

58
INTRODUÇÃO AO DESENVOLVIMENTO DE SISTEMAS EMBARCADOS SUZANA VIANA MOTA VIII Simpósio de Informática – Tecnologia Aplicada ao Desenvolvimento Social

Upload: suzana-mota

Post on 09-Jul-2015

197 views

Category:

Engineering


11 download

DESCRIPTION

Este mini curso aborda os fundamentos do desenvolvimento embarcado e boas práticas de programação, demonstra as principais diferenças em relação ao desenvolvimento de software para sistemas computacionais convencionais, em especial derivadas das restrições de capacidade de processamento, memória e energia que estão presentes em muitos sistemas embarcados, também serão apresentados conceitos relacionados as plataformas Arduino e Raspberry pi.

TRANSCRIPT

Page 1: Mini Curso Sistemas Embarcados

INTRODUÇÃO AO DESENVOLVIMENTO DE

SISTEMAS EMBARCADOS SUZANA VIANA MOTA

VIII Simpósio de Informática – Tecnologia Aplicada ao Desenvolvimento Social

Page 2: Mini Curso Sistemas Embarcados

Sistemas Embarcados

Page 3: Mini Curso Sistemas Embarcados

Um pouco de história

• Apollo Guidance Computer• Desenvolvido em 1968 no MIT.• Um computador - guia, que

operava em tempo real, e era considerado o item mais arriscado do sistema.

Page 4: Mini Curso Sistemas Embarcados

Um pouco de história

• Década de 60 - 70

• O primeiro sistema embarcado de produção em massa foi o computador guia do míssil nuclear LGM -30 Minuteman.

Page 5: Mini Curso Sistemas Embarcados

Um pouco de história

• Em meados da década de 80, com evolução da microeletrônica pode-se juntar vários componentes num único chip, o circuito integrado.

Page 6: Mini Curso Sistemas Embarcados

Microcontrolador X Microprocessador

Memória ROM

Memória RAM

Portas I/O Periféricos

Page 7: Mini Curso Sistemas Embarcados

Microcontrolador

• 40 Pinos• 16 bits• 8 canais para conversor de A/D• 1536 bytes de memória RAM• 40 MHz de Clock

Page 8: Mini Curso Sistemas Embarcados

Programando Microcontroladores

EditorEditor

CC

CompiladorCompilador

HexadecimalHexadecimal GravadorGravador

Page 9: Mini Curso Sistemas Embarcados

Ambiente de Desenvolvimento

Page 10: Mini Curso Sistemas Embarcados

Acende LED

void main()

{

while(TRUE)

{

output_high(PIN_D0);

delay_us(100);

output_low(PIN_D0);

}

}

Page 11: Mini Curso Sistemas Embarcados

• Ok, Entendi o programa.

• Mas o que acontece no microcontrolador?

output_high(PIN_D0);

Faz com que o PINO 19, vá para o nível “alto”, ou seja, ele fica com 5v.

Page 12: Mini Curso Sistemas Embarcados

output_low(PIN_D0);

Faz com que o PINO 19, vá para o nível “baixo”, ou seja, ele fica com 0v.

Page 13: Mini Curso Sistemas Embarcados

Sensores

• São dispositivos capazes de captar ações ou estímulos externos.

Page 14: Mini Curso Sistemas Embarcados

Posição, Presença, Proximidade, Toque

Movimento, Velocidade, Deslocamento

Temperatura

Umidade

Acústica, Som, Vibração

Químico, GásFluxoForça, Carga, Esforço, Tensão, Pressão

Vazamentos, Níveis

Elétrico, Magnético

Aceleração

Luz, Visão de Máquina

Sensores

Page 15: Mini Curso Sistemas Embarcados

Sensores Digitais

• Do ponto de vista elétrico, comportam-se como se fossem uma chave: liga/desliga.

• Portanto podemos fazer a ligação de modo que o sinal do sensor seja 0v ou 5v.

Sensor Óptico Sensor de Presença Sensor de Toque

Page 16: Mini Curso Sistemas Embarcados

Sensores Analógicos

• Pode assumir qualquer valor no seu sinal de saída ao longo do tempo, desde que esteja dentro da sua faixa de operação.

Sensor de Temperatura

Microfone Web Cam

Page 17: Mini Curso Sistemas Embarcados

Comunicação Serial

O padrão RS-232 é uma dos mais difundidos no mundo da automação e controle. Hoje em dia muitos equipamentos fazem uso do mesmo.

Page 18: Mini Curso Sistemas Embarcados

Comunicação Serial

Page 19: Mini Curso Sistemas Embarcados

Comunicação Serial

while(TRUE)

{

int SENSORES = 3;

int v_inicio=[2]

for(int i=0;i<SENSORES;i++)

{

set_adc_channel(i);

delay_us(300);

v_inicio[i] = read_adc();

}

}

Page 20: Mini Curso Sistemas Embarcados

Tipo de DadosTipo Tamanho em Bits Faixa de Valores

BOOLEAN 1 0 ou 1

CHAR 8 0 a 255

INT 8 0 a 255

LONG INT 16 0 a 65.535

FLOAT 32 0 a 4.294.967.295

Page 21: Mini Curso Sistemas Embarcados

Tabela ASCII

Page 22: Mini Curso Sistemas Embarcados
Page 23: Mini Curso Sistemas Embarcados

Plataformas Open Hardware

Page 24: Mini Curso Sistemas Embarcados

Arduino

• Criado na Itália em 2005• Democratizar o ensino de programação e

eletrônica.

Page 25: Mini Curso Sistemas Embarcados

Arduino Uno

• 14 pinos digitais• 6 entradas analógicas• Clock de 16 Mhz• 20.00 € = R$ 60,00

Page 26: Mini Curso Sistemas Embarcados

Arduino Uno

Page 27: Mini Curso Sistemas Embarcados

Arduino Uno

Page 28: Mini Curso Sistemas Embarcados

Arduino Esplora

• Joystick Analógico• Acelerômetro• Clock de 16 Mhz• 39.90 € = R$ 120,00

Page 29: Mini Curso Sistemas Embarcados

Arduino Esplora

Page 30: Mini Curso Sistemas Embarcados

Arduino Nano

• 14 pinos digitais• 8 entradas analógicas• Clock de 16 Mhz• 33.00 € = R$ 100,00

Page 31: Mini Curso Sistemas Embarcados

Arduino Nano

Page 32: Mini Curso Sistemas Embarcados

Raspberry Pi

• Criado em 2006 no Reino Unido• Começou a ser comercializado em 2012• Custa em média 35 doláres

Page 33: Mini Curso Sistemas Embarcados

Modelo A

CPU: 700 MHz GPU: Dual Core VideoCore

RAM: 256MB 1 Porta USB 2.0Saídas de vídeo: HDMI

Composite RCA (PAL e NTSC)Saídas de áudio: Conector de 3.5 mm, HDMI

35 USD = R$ 77,00

Page 34: Mini Curso Sistemas Embarcados

Modelo B CPU: 700 MHz

GPU: Dual Core VideoCore

RAM: 512MB 2 Portas USB 2.0Saídas de vídeo: HDMI

Composite RCA (PAL e NTSC)Saídas de áudio: Conector de 3.5 mm, HDMI

Porta Ethernet

45 USD = R$ 99,00

Page 35: Mini Curso Sistemas Embarcados

Modelo B+ CPU: 700 MHz

GPU: Dual Core VideoCore

RAM: 512MB 4 Portas USB 2.0Saídas de vídeo: HDMI

Composite RCA (PAL e NTSC)Saídas de áudio: Conector de 3.5 mm, HDMI

Porta Ethernet45 USD = R$ 99,00

Page 36: Mini Curso Sistemas Embarcados

Projetos

Page 37: Mini Curso Sistemas Embarcados

XCaracterísticas Arduino Raspberry Pi

Sistema Operacional - Linux - Raspbian

Linguagem de Programação C Python

IDE Arduino IDE, Eclipse OpenEmbedded, Eclipse

Arquitetura 8 bits 32 bits

Processamento 16 Mhz 700 Mhz

RAM 2 KB 256 MB

USB 1 2

Áudio - Stereo

Vídeo - HDMI, NTSC, PAL

Page 38: Mini Curso Sistemas Embarcados

Inspirações...

Page 39: Mini Curso Sistemas Embarcados

Criando o primeiro projeto

• Acesse: www.123d.circuits.io• Clique em SIGN UP• Preencha os campos necessários para o

cadastro.• Clique em CIRCUITS• Clique em CREATE A NEW CIRCUITS• Preencha o Campo NAME

Page 40: Mini Curso Sistemas Embarcados
Page 41: Mini Curso Sistemas Embarcados
Page 42: Mini Curso Sistemas Embarcados
Page 43: Mini Curso Sistemas Embarcados

PISCA LED

• 1 ARDUINO• 1 RESISTOR 1k Ω• 1 LED

Page 44: Mini Curso Sistemas Embarcados

PISCA LED

Page 45: Mini Curso Sistemas Embarcados

LED//Definindo LEDint led = 7;void setup() { //Inicializando o LED pinMode(led, OUTPUT); }

// the loop routine runs over and over again forever:void loop() { digitalWrite(led, HIGH); // Led em Pino Alto delay(1000); // Aguarda digitalWrite(led, LOW); // Led em Pino Baixo delay(1000); // Aguarda}

Page 46: Mini Curso Sistemas Embarcados

PISCA LED ( SOS)//Definindo LEDint led = 7;void setup() { //Inicializando o LED pinMode(led, OUTPUT); }

// the loop routine runs over and over again forever:void loop() { for (int x=0; x<3; x++) {

digitalWrite(ledPin, HIGH);delay(150);digitalWrite(ledPin, LOW);delay(100);}

}

Page 47: Mini Curso Sistemas Embarcados

PISCA LED + Botão

• 1 ARDUINO• 2 RESISTORES 1k Ω• 1 LED• 1 BOTÃO

Page 48: Mini Curso Sistemas Embarcados

PISCA LED + Botão

Page 49: Mini Curso Sistemas Embarcados

Pisca LED + Botãoconst int botao = 13; // identifica o pino onde ligar o botaoconst int led = 7; // identifica o pino onde ligar o ledint estado;

void setup() { pinMode(botao, INPUT); // configura o pino como entrada pinMode(led, OUTPUT); // configura o pino como saída}

void loop() { estado = digitalRead(botao);

if( estado == LOW) { digitalWrite(led, LOW); } else { digitalWrite(led, HIGH); } }

Page 50: Mini Curso Sistemas Embarcados

LED + Potenciômetro

• 1 ARDUINO• 1 RESISTOR 390 ohm• 1 LED• 1 POTENCIOMETRO• 1 MULTIMETRO ( OPCIONAL )

Page 51: Mini Curso Sistemas Embarcados

LED + Potenciômetro

Page 52: Mini Curso Sistemas Embarcados

int ledPin = 7;int val = 0;

void setup() {

pinMode(ledPin, OUTPUT);

}void loop() {

val = analogRead(A0);digitalWrite(ledPin, HIGH);delay(val);digitalWrite(ledPin, LOW);delay(val);

}

LED + Potenciômetro

Page 53: Mini Curso Sistemas Embarcados

Servo Motor + Potenciômetro

• 1 ARDUINO• 1 POTENCIOMETRO• 1 SERVO MOTOR

Page 54: Mini Curso Sistemas Embarcados

Servo Motor + Potenciômetro

Page 55: Mini Curso Sistemas Embarcados

Servo Motor + Potenciômetro#include <Servo.h>

//incluindo biblioteca para controle do servomotor Servo servoMotorObj; //Criando um objeto da classe Servo int const potenciometroPin = 0; //pino analógico onde o potenciômetro está conectadoint const servoMotorPin = 3; //pino digital associado ao controle do servomotorint valPotenciometro; //variável usada para armazenar o valor lido no potenciômetro

void setup() { servoMotorObj.attach(servoMotorPin); //associando o pino digital ao objeto da classe Servo} void loop() {

valPotenciometro = analogRead(potenciometroPin); //lendo o valor do potenciômetro (intervalo entre 0 e 1023) valPotenciometro = map(valPotenciometro, 0, 1023, 0, 180); //mapeando o valor para a escala do servo (entre 0 e 180) servoMotorObj.write(valPotenciometro); //definindo o valor/posição do servomotor delay(15);

}

Page 56: Mini Curso Sistemas Embarcados

Pisca LED + Arco-íris de botões

Page 57: Mini Curso Sistemas Embarcados

const char botao = 11;char estadoBotao;int atraso = 1000;int i = 0;void setup() { pinMode(botao, INPUT); for ( i = 0; i < 4; i ++ ) {

pinMode(i, OUTPUT); digitalWrite(i, LOW); digitalWrite(0, HIGH); } i =0;

}

LED + Botãovoid loop() { delay(atraso); estadoBotao = digitalRead(botao); if(estadoBotao == LOW){ digitalWrite(i, LOW); i++; if (i == 4) { i = 0;} digitalWrite(i, HIGH); } else { digitalWrite(i, LOW); i--; if (i == -1) { i = 3;} digitalWrite(i, HIGH); } }

Page 58: Mini Curso Sistemas Embarcados

Obrigada!

Contato:

[email protected]

[email protected]