You are on page 1of 15

Eduardo Sila Damasceno e Marisa Cavalcante

O que Arduino ?
Arduino uma plataforma de hardware livre, baseado em microprocessador de cdigo aberto, uma placa fsica em cdigo aberto baseada em um circuito de entradas/sadas simples, e linguagem de programao padro, que essencialmente C/C++, sendo uma plataforma completamente personalizvel j que todo o seu projeto aberto aos usurios. O objetivo da criao do Arduino ter uma plataforma totalmente aberta, tanto hardware como software acessveis, pois alm de ter um custo baixo uma plataforma flexvel e de fcil utilizao, tanto para profissionais como para interessados na rea, visando fornecer uma alternativa para aqueles que no tem alcance a outros microcontroladores, que alm do custo elevado e software prioritrio, no podem ser personalizados e so mais difceis de utilizar pois requerem um maior nvel de conhecimento tcnico. Uma das grandes vantagens do Arduino o seu nvel de personalizao, como se trata de uma plataforma aberta, todo o projeto disponibilizado aos seus usurios no site www.arduino.cc, assim caso o usurio queira ele pode montar o seu prprio Arduino e adicionar ou retirar funcionalidades de acordo com o seu projeto, o mesmo tambm pode ser feito com a sua IDE (software utilizado para programar o Arduino), que de cdigo aberto, e funciona nos sistemas operacionais Windows, Macintosh OSX, e Linux, diferente da maioria dos microcontroladores em que suas IDE's funcionam apenas no Windows. Todas essas qualidades fazem o Arduino se tornar uma alternativa muito interessante para o ensino.

Descrio da placa Arduino

Os componentes mais bsicos da placa Arduino so: Entrada usb Entrada de alimentao Pino ICSP
1 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Pinos de entrada analgica Pinos digitais Pinos de alimentao Boto reset

Descrio dos componentes bsicos Entrada USB A entrada USB da placa Arduino utilizada para realizar a comunicao entre o Arduino e o computador, atravs dessa comunicao so enviados os cdigos referentes as aes que o Arduino executar, a entrada tambm utilizada para o envio e recepo de informaes do cdigo em execuo, que sero exibidos em um hiperterminal (monitor serial) e alm dessas funes a entrada USB tambm fornece alimentao para a placa Arduino. O padro do cabo utilizado USB AB. Entrada de alimentao Caso seja necessrio mais alimentao, ou caso haja necessidade da no utilizao da alimentao atravs da entrada USB, a placa Arduino dispe de uma entrada padro para adaptadores AC-DC. Pino ICSP Esse pino suporta comunicao SPI (Serial Peripheral Interface Bus ), presente nos modelos de Arduino, Duemilanove e Diecimila, usado por alguns modelos de shield como por ex. Ethernet Shield. Pinos de entrada analgica A funo principal dos pinos de entrada analgica para a maioria dos usurios de Arduino, a leitura de sensores analgicos, como por exemplo, ldr, sensores de distncia, sensores de temperatura, os pinos de entrada analgica fazem leituras em valores inteiros em um intervalo de 0-1023 ( converso 10 bits). Pinos digitais Os pinos digitais so pinos de propsito geral de entrada(input) e sada(output), cada pino tem uma chave interna que pode receber os valores HIGH e LOW, o funcionamento deles parecido com o de um interruptor que pode estar ligado ou desligado, assim podemos ligar ou desligar componentes, ex: led. Pinos de alimentao Como mais uma alternativa de alimentao para a placa Arduino, existe o pino VIN (voltage input), atravs dele e do pino GND a placa pode ser alimentada, ligando uma bateria ou pilhas atravs de um adaptador diretamente a esses dois pinos, porm cada modelo de Arduino requer
2 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

um faixa de voltagem diferente, portanto antes usar o pino verifique qual a necessria para alimentar a sua placa corretamente.

Boto reset Utilizado para dar um reset fsico no microcontrolador, o boto reset era utilizado em algumas verses anteriores do Arduino como um procedimento antes de enviar um novo cdigo para a placa. Arduino IDE O Arduino IDE (ambiente de desenvolvimento integrado ou Integrated Development Environment) o software que nos possibilita escrever cdigos e envi-los para a placa Arduino, atravs dele possvel verificar quando e aonde h erros no cdigo. O programa fornece ao usurio a opo de salvar o cdigo, podendo assim administrar seus projetos. Tambm h a interface serial de comunicao, por onde o usurio pode enviar dados do seu projeto e visualiz-los na tela. Dentro do programa so disponibilizados exemplos prontos, desde os de nvel bsico at o nvel avanado, assim o usurio pode ir subindo progressivamente conforme o conhecimento que vai adquirindo.

3 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Programando na IDE
Para programar na IDE Arduino utilizaremos duas de suas funes principais, a primeira o void setup() nela fazemos as configuraes dos componentes e recursos que utilizaremos, por exemplo, para ligar um led, nesse caso o led atuar como um dispositivo de sada, vamos usar a porta digital 13 no exemplo, ento dentro da funo void setup(), colocamos o seguinte comando, pinMode(13, OUTPUT); caso o dispositivo seja de entrada escreveramos pinMode(13, INPUT); Para iniciar uma comunicao serial, e criar a possibilidade de enviar os dados obtidos e visualiz-los em um hiper terminal, usamos a funo Serial.begin(9600); em que o 9600 representa a velocidade dessa comunicao em bits por segundo, e para o envio de dados utilizamos o comando Serial.print(dados1), em que dados1 apenas uma varivel que representa algum valor, que pode ser do tipo inteiro, real, caractere ou string. Para escrever e ler atravs das portas digitais da placa Arduino utilizaremos as seguintes funes: digitalRead(13), para leitura, aonde o 13 representa o pino da porta digital a ser lida, e para escrita temos digitalWrite este pode divido em duas parte por se tratar de um comando de sada, j que ela aceita dois valores HIGH e LOW, que podem ser entendidos como ligado e desligado (e na leitura de uma porta digital so recebidos como 1 e 0), e escritos da seguinte maneira para os dois casos: digitalWrite(13, HIGH); digitalWrite(13, LOW); J para leitura em portas analgicas utilizaremos o seguinte comando analogRead(13); A IDE Arduino pode ser baixada no seguinte endereo: http://arduino.googlecode.com/files/arduino-0022.zip

Experimento 1: Piscar um led


O experimento a seguir prope um primeiro contato com o Arduino, aonde um LED ser ligado a placa em uma porta digital, e atravs do cdigo programado nele o LED piscar interruptamente, com um intervalo de alternao entre acender e apagar de 1 segundo. Nesse experimento sero utilizados os seguintes componentes: 1 LED, 1 resistor de 330 Ohm, 2 fios. Definio dos componentes: LED LED a sigla em ingls para Light Emitting Diode, ou Diodo Emissor de Luz. O led um diodo semicondutor (juno P-N) que quando energizado emite luz visvel. Obs: O led um componente que possui polaridade, portanto a sua perna maior deve ser ligada a alimentao e a perna menor ao terra (GND na placa Arduino) no caso de um led normal de 2 pernas, caso seja um led RGB, que possui 4 pernas, a maior ligada no terra.
4 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Resistor O resistor um dispositivo cujas principais funes so: dificultar a passagem da corrente eltrica e transformar energia eltrica em energia trmica por efeito joule. Entendemos a dificuldade que o resistor apresenta passagem da corrente eltrica como sendo resistncia eltrica. O material mais comum na fabricao do resistor o carbono. Para o resistor vlida a expresso:

Que relaciona a resistncia oferecida passagem da corrente eltrica com tenso e corrente eltrica. Devemos lembrar que a unidade da resistncia eltrica o ohm () relao entre a tenso e a corrente eltrica em ampre. Obs: Diferente do led o resistor no possui polaridade, portanto a ligao de suas pernas no segue alguma determinada ordem. Monte o circuito com base na figura a abaixo, e faa o upload do cdigo usando a IDE do Arduino. Este circuito foi desenhado em um software freeware Fritzing disponvel em http://fritzing.org/.

Cdigo: void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }

Este cdigo tambem est disponvel em exemplos no IDE do Arduino veja na figura abaixo como obte-lo

5 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Experimento 2: Leitura de porta analgica com um LDR O experimento a seguir prope um contato mais avanado com o Arduino, que consiste em ligar um LDR a placa Arduino em uma porta analgica e a partir do cdigo fornecido a seguir, ler os valores fornecidos pelo LDR e envi-los para a porta serial a cada 0,25 segundos. Nesse experimento sero utilizados os seguintes componentes: 1 LDR, 1 resistor de 330 Ohms, 2 fios. Definio dos componentes: LDR Do ingls Light Dependent Resistor, ou resistor dependente de luz, a resistncia do LDR varia de forma inversamente proporcional quantidade de luz incidente sobre ele, isto , enquanto o feixe de luz estiver incidindo, o LDR oferece uma resistncia muito baixa. Quando este feixe cortado, sua resistncia aumenta, o LDR tambm chamado de clula fotocondutiva, ou ainda de fotoresistncia, o LDR um dispositivo semicondutor de dois terminais. Com o LDR pode-se fazer o controle automtico de porta, alarme contra ladro, controle de iluminao em um recinto entre outros.
6 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Obs: Assim como o resistor o LDR no possui polaridade, portanto a ligao de seus terminais no segue nenhuma ordem pr-determinada.

Monte o circuito com base na figura a abaixo, e faa o upload do cdigo usando a IDE do Arduino. O valor do resistor que ser utilizado igual a 10 Kohms

Cdigo: void setup(){ pinMode(A0, INPUT); Serial.begin(9600); } int LDR; void loop(){ LDR = analogRead(A0); Serial.print("Valor lido no LDR:\t"); Serial.println(LDR); delay(250); }

7 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Exerccios e Aplicaes com o Arduino; Efetuando medidas Eltricas


Problema 1..... Limites de corrente eletrica para LEDS

Considere o seguinte circuito:

a. Considerando que um led tolera tenses da ordem de 2,0 V (um pouco mais para o LED azul) qual deve ser o valor minimo de resistencia que devemos associar ao circuito ara uma corrente da ordem de 4mA?

b. Para este valor de resistencia, qual deve ser o valor de corrente eletrica do circuito?

c. Feitas estas consideraoes e levando em conta que o Arduino pode fornecer uma tenso de 5V, determine usando uma porta analogica a tenso nos terminais do LED, com o resistor de menor valor existente na caixinha de componentes da bancada. Para isso voce deve elaborar um programa que permita ler a tenso nos terminais do LED em Volts. Use delay de 500ms.

8 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

d. Com este mesmo programa, insira uma linha que permita calcular qual deve ser a tenso nos terminais do resistor. E imprima este resultado no monitor serial.

e. Utilizando o multimetro do laboratrio determine o valor de tenso nos terminais do led e nos terminais do resistor. E preencha a tabela abaixo:

Multimetro Vled (volts) Vresistor

Arduino - Porta analogica

f. Ainda neste mesmo programa calcule a corrente no circuito em mA e imprima em tabela este resultado.

g. Utilizando o multimetro do laboratrio determine o valor de tenso nos terminais do led e nos terminais do resistor. E preencha a tabela abaixo:

Multimetro Corrente circuito(mA) eletrica no

Arduino - Porta analogica

Cole abaixo o Cdigo Fonte Final: Depois de corrigido poste no blog do projeto

9 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Problema 2: Determinando Resistencia em um LDR e sua dependencia com a LUZ

a. Utilizando o prgrama j elaborado no item anterior e subsitituindo o LED pelo LDR verifique o valores de tenso no LDR e corrente eletrica no circuito com a incidencia de luz da sala no LDR. Preencha a tabela abaixo: Tenso no LDR Corrente no circuito

b. Com os valores indicados acima determine qual o valor de resistencia no LDR , sabendo que: VLDR= R(LDR) I

Tenso no LDR

Corrente no circuito

RLDR (OHMS)

c. A partir destes resultados insira uma linha de programao adicional em que possivel obter o valor de resistencia no LDR para cada leitura efetuada na porta analogica do Arduino. Voce deve obter a impressao deste resultado no monitor serial

10 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

d. Agora deslique o pino de alimentao do seu circuito e faa uma leitura com o multimetro do valor de resistencia no LDR com a luz da sala.

Preencha a tabela abaixo Multimetro RLDR (OHMS) Arduino

e. Estes valores so compativeis?

f. Ligue novamente o circuito no Arduino e bloquei a luz no sensor (completamente) e verifique o novo valor de resistencia obtido.

Preencha a tabela abaixo

Resistencia associada ao LDR =............ Luz da sala RLDR (OHMS) com o Arduino Bloqueando o sensor

g. Altere o valor de resistencia que est associado ao circuito para um maior valor. Repita o procedimento para a determinao de resistencia no LDR com a luz da sala e bloqueando o sensor. Nao esquea de alterar o valor de resistencia para o calculo da corrente eletrica no circuito na linhad de programao correspondente.

Resistencia associada ao LDR =............ Luz da sala


marisac@pucsp.br

Bloqueando o sensor

11

Eduardo Sila Damasceno e Marisa Cavalcante

RLDR (OHMS) com o Arduino

h. Para este novo valor de resistencia o seu sensor est mais sensivel ou menos sensivel a variao de intensidade luminosa neste intervalo de luminosidade.

12 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

Experimento 3: Potencimetro e PWM Esse experimento prope que a partir da leitura de um potencimetro ligado em uma porta analgica, e dos valores obtidos, eles sejam convertidos para o padro PWM (0~255), e enviados para uma porta digital no caso ligada a um led, o que ajudar na percepo do que ocorre fisicamente no uso do PWM atravs da intensidade com que o led acender/apagar. Nesse experimento sero utilizados os seguintes componentes: 1 potencimetro 10Kohms, 1 led, 1 resistor de 330 Ohm, alguns fios. Definio dos componentes: Potencimetro Potencimetros so dispositivos eltricos que tm a sua resistncia eltrica alterada mecanicamente, so muito usados para controlar/alterar as caractersticas de entrada/sada de aparelhos eletrnicos, como volume, balano, graves, brilho, contraste, cor, tempo de funcionamento( em tv's, dvd's, monitores, relgios, ... )... So tambm conhecidos como resistores variveis, ou ainda, reostatos. Possuem internamente uma trilha resistiva (de niquel-cromo ou de carbono), sobre a qual desliza um cursor, que altera a resistncia eltrica entre seu conector central e um dos dois laterais(normalmente so trs conectores), no so eletricamente polarizados.

O que PWM
Pulse Width Modulation - Modulao por Largura de Pulso Circuitos digitais s produzem dois nmeros: "0" e "1". J circuitos analgicos podem ter uma infinidade de variaes. Por exemplo, em um circuito digital s podemos ligar ("1") ou desligar ("0") um motor ou uma lmpada, enquanto que em um circuito analgico podemos controlar em infinitos gradientes o brilho da lmpada desde o seu estado total de apagamento at o seu brilho mximo. Com um motor acontece o mesmo, podemos controlar em gradientes sua velocidade, desde o seu estado de no rotao at a sua velocidade mxima. Para um circuito digital poder controlar um circuito analgico - um brilho de uma lmpada ou a velocidade de um motor - h basicamente duas tcnicas. A converso D/A (Digital/Analgico) e a modulao por largura de pulso (PWM). A converso digital/analgico usa uma quantidade de bits proporcionais quantidade de gradientes (brilhos, velocidades, etc) que pretendemos ter. Por exemplo, se forem usados 4 bits, temos uma possibilidade de 16 (2^4) gradientes de brilho/rotao, de 0000 a 1111. O problema desta tcnica que quanto mais gradientes voc quiser, mais bits so necessrios. J a tcnica PWM utiliza apenas um bit. Nela gerada uma forma de onda quadrada onde o ciclo de carga (tempo em que a forma de onda permanece em "1") define a velocidade/brilho do sistema analgico. Por exemplo, supondo uma forma de onda perfeitamente quadrada, onde 50% do tempo ela est em "0" e 50% do tempo ela est em "1", o resultado final ser que a lmpada ter 50% do seu brilho e um motor 50% de sua velocidade. Se configurarmos esta forma de onda para ficar 30% do seu tempo em "1" e 70% do seu tempo
13 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

em "0", o resultado ser um brilho/velocidade de 30% de sua capacidade total. Em resumo, o PWM uma tcnica para converso digital/analgico usando apenas um bit, onde gerada uma forma de onda quadrada onde o tempo em que esta forma fica em "1" define o valor da sada (velocidade/brilho). Monte o circuito com base na figura a abaixo, e faa o upload do cdigo usando a IDE do Arduino. Obs: o PWM no Arduino utilizado atravs dos pinos digitais 3,5,6,9,10,11 e usando a funo analogWrite(); Nesse experimento utilizaremos a funo map que faz uma converso de escala entre valores, j que o potencimetro l valores em um intervalo 0~1023 (10bits) e o pwm usa valores no intervalo 0-255 (8bits).

Cdigo
void setup(){ pinMode(A0, INPUT); pinMode(9, OUTPUT); } int POT,CON; void loop(){ POT = analogRead(A0); CON = map(POT,0,1023,0,255); analogWrite(9, CON); }

Tarefa Extra:
Pense em algum pequeno projeto com o Arduino utilizando o que voc aprendeu at o momento.

14 marisac@pucsp.br

Eduardo Sila Damasceno e Marisa Cavalcante

15 marisac@pucsp.br

You might also like