V2 - Microcontroladores: a revolucao do arduino

Preview:

DESCRIPTION

Palestra dada na Semana da Computacao da Universidade Plinio Leite. detalhes em : http://blog.arduinrio.cc/2010/10/03/palestra-hardware-livre-na-semana-de-computacao-da-universidade-plinio-leite-niteroi/

Citation preview

Microcontroladores :A Revolução do Arduino

O que é um Microcontrolador?

Computador ? CI ?

Computador num CI! Computador

Entradas => INTELIGÊNCIA => Saidas Microcontrolador

Entradas => INTELIGÊNCIA => Saidas Sensores => INTELIGÊNCIA => Atuadores

− No caso da robótica

Arduino = Microcontrolador + Gravador + Interfaces

• A alma do negócio é o Microcontrolador ATMega 328 ou 168

– Porém ele não funciona sozinho

Circuitos auxiliares

• Como toda CPU, precisa de um Clock – Para isto temos o cristal

• Interface serial/USB

• Regulador de tensão – {7,21} V → 5 V

Especificacoes do Arduino Duemilanove (2009)

ATMega 328ATMega 328 Clock – 16 MHzClock – 16 MHz MemoriasMemorias

32 KB – Flash – seu programa – 1 KB (bootloader) 32 KB – Flash – seu programa – 1 KB (bootloader) + O que voce quiser + O que voce quiser

2 KB - RAM – Variaveis do seu programa!2 KB - RAM – Variaveis do seu programa! 1 KB – EEPROM1 KB – EEPROM Entradas/Saidas – 14 digitais (6 PWM), 6 Entradas/Saidas – 14 digitais (6 PWM), 6

Analogicas (ADC 10 bits)Analogicas (ADC 10 bits)

PWM(Modulação por Largura de Pulso)

AnalogWrite ([0-255]) – Porta Digital

`

Conversor Analógico<->Digital (ADC)

Amostragem● Taxa de amostragem

● Teorema utilizado nas telecomunicacoes – no minimo 2X● Na pratica, 8 a 10 X

● Limite - Taxa maxima de amostragem no arduino?● Pensem nisto

Quantizacao - AnalogRead()

• Etapa na qual a amostra e quantizada de acordo com a resolucao do ADC.

• Arduino – 0 a 5V – 10 bits – 2^10 = 1024 – 0 a 1023

– 5V / 1024 =~ 5 mV

Hardware - status - 2004

Referência – PIC – Microchip R$ 32,00 o microcontrolador R$ 300,00 o ambiente de desenvolvimento

Melhores estágios – R$ 300,00 por mes Possível?

− Não para todos

Software – status - 2004

Catequese para se programar em assembly Conhecida como a linguagem mais baixo-nível que

humanos conseguem ler. Menos papo e mais código, como se faz um LED

piscar :

list p=16F630 ; list directive to define processor #include <p16F630.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT VARIABLES UDATA_SHRdelayA RES 1delayB RES 1 ;**********************************************************************RESET_VECTOR CODE 0x000 ; processor reset vector goto main ; go to beginning of programPROGRAM CODEmain call 0x3FF ; retrieve factory calibration value bsf STATUS,RP0 ; set file register bank to 1 movwf OSCCAL ; update register with factory cal value movlw 0x00 movwf TRISC bcf STATUS,RP0 ; set file register bank to 0 loop clrf PORTC call delay movlw 0xFF movwf PORTC call delay goto loop ;-------------------------------------------------------------------;Delay Routine delay movlw 0xFF movwf delayA loopA movlw 0xFF movwf delayB loopB decfsz delayB, f goto loopB decfsz delayA, f goto loopA return;------------------------------------------------------------------- END ; directive 'end of program'

A possibilidade da linguagem C

Era possível programar em C● Mas pra que? C é muito facil! É pros fracos!● Aliás, C gasta tanta memória que é melhor fazer em

assembly● (vai debugar agora em assembly!)

Arduino – a quebra de paradigmas

Software Livre – Faça e extenda (em casa) Hardware Livre – Faça e extenda (em casa!)

Cultura de simplificação Linguagem Wiring – o “C simplificado” Você também pode programar o Arduino em C

puro. Piscando um LED no Arduino :

int ledPin = 13; // LED connected to digital pin 13void setup(){ pinMode(ledPin, OUTPUT); // sets the digital pin as output}void loop(){ digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second}

IDE

• Escrita em Java, roda em– Linux

– OSX

– Windows

• Basta compilar

• Escolher o microcontrolador

• Upload do codigo via USB

• Pronto!

Mao na massa!

Ferramenta didatica – Fritzing!

• Represente circuitos para uma crianca de 5 anos

• O Diagrama tambem esta disponivel.

• Compartilhe!

Simulador de circuitos!

• http://www.falstad.com/circuit/

• Simule sensores, motores, etc...

Shields – Bibliotecas de Hardware Com apenas encaixando a placa de expansão e

carregando a biblioteca, você já tem a funcionalidade pronta

No PIC você faria o interfaceamento e teria que programar a interface via software

Shields muito legais existentes :

Shield Ethernet

• Fale com seu Arduino via TCP/IP, logo de qualquer lugar do mundo

Wi-Fi Shield

• Fale com seu Arduino de qualquer lugar do mundo sem precisar de fios

– WEP (64-bit and 128-bit)

– WPA/WPA2 (TKIP and AES) PSK

Motor Shield

• 2 Servo motores

• 4 Motores DC – dois sentidos

• 2 motores de passo

SD Shield

Placas Derivadas do ArduinoResultado de tecnologias Open Source

• Roboduino– Interfaceamento para motores e sensores

ArduinoBT

• Arduino com Bluetooth integrado

Program-Me – Brasileira

• Diversos sensores e drivers de motor on-board

– Buzzer

– Sensor de Luz

– 4 drivers de motores

– LEDs de Debug + Resistor

Severino

• Serial =(• 3.3V =)

Nano

Mega

Fio

• Desenhada para aplicacoes sem fio– Conector para bateria de Polimero de Litio

– Xbee integrado

Lilypad

• Muito interessante – Componentes costuraveis

– Linhas condutivas

Casos de uso• OpenEnergyMonitor.org

– Monitore o uso de energia eletrica numa casa, escritorio ou fabrica (com graficos caso mande para o PC)

• MouseGlove– Controle seu mouse por acelerometros numa

luva

• Automação de casa– Aquecedor, alarme de seguranca e iluminacao.

– Interface WEB

• Padaria– Arduino avisa aos clientes via Twitter quando o

pão sai.

E como falar com esse cara?

• USB – FDTI USB/Serial

• Serial

• Ethernet - TCP/IP

• Wi-Fi – TCP/IP

• Bluetooth

• Xbee?

Fazendo o Perl falar com ele

• Device::SerialPort – no Linux

• O código do Arduino tem de estar preparado para receber mensagens, e interpreta-las para a ação desejada – se for o caso

my $sp=new Device::SerialPort("/dev/ttyUSB0");

$sp->databits(8);$sp->baudrate(9600);$sp->stopbits(1);$sp->parity("none");

$sp->write(“s”);

void loop() { char pc_input; if (Serial.available()) { pc_input = Serial.read(); } if( pc_input == 'w') { if (Speed < 255){ Speed = Speed + 5; } go_forward(Speed); } if( pc_input == 's') { stopMotors(); } if( pc_input == 'a') { turn_left(10); } if( pc_input == 'd') { turn_right(10); } }

Um minuto sobre Cellbots• Arduino + Android

• Arduino + Smartphone

• Vantagens– Diversos sensores (acelerometros, GPS,

luminosidade)

– Camera embutida (streaming)

– Muitos rodam Linux, logo sem dificuldade rodam Perl

– Interface Wi-Fi

– Interface Bluetooth

– Internet – 3G / GPRS

Arduino TV Out

Possibilidades• Interfaceamento com controle remoto

– So precisa calibrar

• Interfaceamento com controle de Wii

• Interfaceamento com Ipod/Iphone/Android

• Sensores– Temperatura, distância, microfone, luz, Infra-

vermelho(controle remoto), muito mais!

• Atuadores– Motores, LEDs, TVs, caixa de som, LED Infra-

vermelho(controle remoto), muito mais!

Conclusão Facilidade

Até artistas programam hoje Estudantes de escolas técnicas não tem mais porque

não estudar este assunto− Um Arduino custa R$ 40,00 vindo da china− Por volta de R$ 85,00 no Brasil.

Criatividade A facilidade te abstrai os problemas menores para que

você se preocupe com o seu real problema

ArduInRio

• Comunidade carioca de Arduino– http://www.arduinrio.cc

– http://wiki.arduinrio.cc

• Dia 16 – III Arduino Hack Day– Palestras

– Hands on

– Arduino Dojo?

Agora é usar a imaginação e desenvolver!

Perguntas?

Contato

• eu@samircury.eng.br

• samircury@uerj.br

• @samircury• youtube.com/samircury – videos sobre Arduino e

etc.

Recommended