mini curso sistemas embarcados

Post on 09-Jul-2015

197 Views

Category:

Engineering

11 Downloads

Preview:

Click to see full reader

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

INTRODUÇÃO AO DESENVOLVIMENTO DE

SISTEMAS EMBARCADOS SUZANA VIANA MOTA

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

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.

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.

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.

Microcontrolador X Microprocessador

Memória ROM

Memória RAM

Portas I/O Periféricos

Microcontrolador

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

Programando Microcontroladores

EditorEditor

CC

CompiladorCompilador

HexadecimalHexadecimal GravadorGravador

Ambiente de Desenvolvimento

Acende LED

void main()

{

while(TRUE)

{

output_high(PIN_D0);

delay_us(100);

output_low(PIN_D0);

}

}

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

output_low(PIN_D0);

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

Sensores

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

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

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

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

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.

Comunicação Serial

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();

}

}

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

Tabela ASCII

Plataformas Open Hardware

Arduino

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

eletrônica.

Arduino Uno

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

Arduino Uno

Arduino Uno

Arduino Esplora

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

Arduino Esplora

Arduino Nano

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

Arduino Nano

Raspberry Pi

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

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

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

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

Projetos

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

Inspirações...

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

PISCA LED

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

PISCA LED

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}

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);}

}

PISCA LED + Botão

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

PISCA LED + Botão

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); } }

LED + Potenciômetro

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

LED + Potenciômetro

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

Servo Motor + Potenciômetro

• 1 ARDUINO• 1 POTENCIOMETRO• 1 SERVO MOTOR

Servo Motor + Potenciômetro

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

}

Pisca LED + Arco-íris de botões

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); } }

Obrigada!

Contato:

suzana.svm@gmail.com

suzana.mota@cti.gov.br

top related