Você está na página 1de 43

Microcontroladores : A Revoluo do Arduino

O que um Microcontrolador?

Computador ?
CI ?

Computador num CI!


Entradas => INTELIGNCIA => Saidas Entradas => INTELIGNCIA => Saidas

Computador

Microcontrolador

Sensores => INTELIGNCIA => Atuadores

No caso da robtica

Arduino = Microcontrolador + Gravador + Interfaces


A alma do negcio o Microcontrolador ATMega 328 ou 168
Porm ele no funciona sozinho

Circuitos auxiliares

Como toda CPU, precisa de um Clock


Para isto temos o cristal

Interface serial/USB
Regulador de tenso {7,21} V 5 V

Especificacoes do Arduino Duemilanove (2009)


ATMega 328

Clock 16 MHz Memorias

32 KB Flash seu programa 1 KB (bootloader) + O que voce quiser 2 KB - RAM Variaveis do seu programa!

1 KB EEPROM
Entradas/Saidas 14 digitais (6 PWM), 6 Analogicas (ADC 10 bits)

PWM (Modulao por Largura de Pulso)

AnalogWrite ([0-255]) Porta Digital

Conversor Analgico<->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

Hardware - status - 2004

Referncia PIC Microchip


R$ 32,00 o microcontrolador

R$ 300,00 o ambiente de desenvolvimento


Possvel?

Melhores estgios R$ 300,00 por mes

No para todos

Software status - 2004

Catequese para se programar em assembly

Conhecida como a linguagem mais baixo-nvel que humanos conseguem ler. Menos papo e mais cdigo, 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_OF F & _PWRTE_ON & _INTRC_OSC_NOCLKOUT VARIABLES UDATA_SHR delayA RES 1 delayB RES 1 ;********************************************************************** RESET_VECTOR CODE 0x000 ; processor reset vector goto main ; go to beginning of program PROGRAM CODE main 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 call movlw movwf call goto PORTC delay 0xFF PORTC delay loop

;------------------------------------------------------------------;Delay Routine delay movlw movwf loopA movlw movwf loopB decfsz goto decfsz goto delayB, f loopB delayA, f loopA 0xFF delayB 0xFF delayA

return ;------------------------------------------------------------------END ; directive 'end of program'

A possibilidade da linguagem C

Era possvel programar em C


Mas pra que? C muito facil! pros fracos! Alis, C gasta tanta memria que melhor fazer em assembly (vai debugar agora em assembly!)

Arduino a quebra de paradigmas

Software Livre Faa e extenda (em casa)


Hardware Livre Faa e extenda (em casa!)

Cultura de simplificao
Linguagem Wiring o C simplificado Voc tambm pode programar o Arduino em C puro. Piscando um LED no Arduino :

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

// LED

// sets the

// sets the // waits for a // sets the

// waits for a

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 expanso 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 Arduino


Resultado de tecnologias Open Source
Roboduino
Interfaceamento para motores e sensores

ArduinoBT
Arduino com Bluetooth integrado

Program-Me Brasileira
Diversos sensores e drivers de motor onboard
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) Controle seu mouse por acelerometros numa luva Aquecedor, alarme de seguranca e iluminacao. Interface WEB

MouseGlove

Automao de casa

Padaria
Arduino avisa aos clientes via Twitter quando o po 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
my $sp=new Device::SerialPort("/dev/ttyUSB0"); $sp->databits(8); $sp->baudrate(9600); $sp->stopbits(1); $sp->parity("none"); $sp->write(s);

O cdigo do Arduino tem de estar preparado para receber mensagens, e interpreta-las para a ao desejada se for o caso

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, distncia, microfone, luz, Infravermelho(controle remoto), muito mais! Motores, LEDs, TVs, caixa de som, LED Infravermelho(controle remoto), muito mais!

Atuadores

Concluso

Facilidade

At artistas programam hoje Estudantes de escolas tcnicas no tem mais porque no 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 Palestras

Dia 16 III Arduino Hack Day

Hands on
Arduino Dojo?

Agora usar a imaginao e desenvolver!

Perguntas?

Contato

eu@samircury.eng.br
samircury@uerj.br

@samircury
youtube.com/samircury videos sobre Arduino e etc.