v2 - microcontroladores: a revolucao do arduino
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/TRANSCRIPT
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
• @samircury• youtube.com/samircury – videos sobre Arduino e
etc.