segunda-feira, 20 de dezembro de 2010

Arduino + LM35 - como montar um termometro

O Laboratório de Garagem publicou um ótimo tutorial, demonstrando como utilizar o Arduino para medir a temperatura, através do sensor LM35.

O tutorial pode ser lido aqui.

sábado, 11 de dezembro de 2010

Conectando um LED externo ao Arduino

Em um post anterior, mostrei minha experiência inicial com o desenvolvimento para o Arduino. Basicamente, fizemos uma aplicação que fazia piscar um led embutido no próprio hardware. Agora, vamos melhorar esse projeto, adicionando um LED externo à placa.

Mais atenção: "ainda" não sou um especialista em eletrônica. Esses posts que estou publicando são um registro do que vou lendo e aprendendo. Apesar de nada de ruim ter acontecido nos meus experimentos, não posso garantir de que vai funcionar com você e muito menos que não vai explodir na sua cara!!! É por sua conta e risco !!! :-P

I. LEDs

LEDs não podem simplesmente ter voltagem aplicado a eles. Dessa forma, é necessário utilizar um resistor para diminuir a corrente aplicado ao LED. Estes componentes são fáceis de achar em qualquer loja de componentes eletrônicos e vem junto com o kit apresentado no artigo anterior.

Os conectores da placa do Arduino são projetados de forma que possam ser conectados placas especiais, denominadas shields. Entretanto, pode-se conectar fios diretamente a eles, a fim de experimentação.

A figura abaixo mostra o esquema para conectar um LED externo.



Diagramas utilizados em eletrônica usam símbolos especiais para representar os componentes eletrônicos. O LED aparece como uma flecha, indicando que os LED (um tipo de diodo), em comum a todos os diodos, permitem o fluxo da corrente em apenas uma direção. As pequenas flechas próximas ao simbolo do led indicam que ele emite luz.

O resistor está ilustrado como um retângulo. Entretanto, pode aparecer também como uma linha em zig-zag. O resto das linhas do diagrama representam conexões elétricas entre os componentes.

Podemos conectar componentes diretamente aos sockets pin 12 e GND (Ground ou terra), mas primeiro, precisamos conectar um terminal do LED a um terminal do resistor.

II. Conectando o LED ao Arduino

Não importa qual terminal do resistor é conectado ao LED. Entretanto, o LED deve ser conectado da forma correta. O LED sempre tem um terminal menor que o outro e é o maior que deve ser conectado ao pin 12. O menor deve ser conectado ao resistor. LEDs e alguns outros componentes tem a convenção de fazer o terminal positivo maior que o terminal negativo.

Para conectar o resistor ao terminal menor, deve-se, cuidadosamente, enrolar um terminal do resistor em volta do terminal menor do LED, conforme a figura abaixo:



Depois, empurre o terminal maior do LED para dentro do pin digital 12 e o terminal livre do resistor em um dos dois sockets GND. A figura abaixo ilustra como deve ficar:



Agora, podemos modificar o sketch, do post anterior, para usar o LED externo que acabamos de conectar. Tudo que precisamos fazer é alterar o código onde especificamos o pin 13. Assim, precisamos mudar a linha:

int ledPin = 13;

para

int ledPin = 12;


Agora, faça o upload, clicando no botão Upload.


III. Usando a protoboard


Ficar amarando fios uns nos outros serviu para o nosso “hello world”, mas não é muito prático para projetos maiores. Uma protoboard (ou breadboard, ou matriz de contato) permite a construção de circuitos complicados, sem a necessidade de fazer solda. Assim, a construção de protótipos para o seu projeto fica mais fácil.

Na superfície de uma protoboard há uma base de plástico em que existem centenas de orifícios onde são encaixados os componentes. Em sua parte inferior são instalados contatos metálicos que interligam eletricamente os componentes inseridos na placa. Geralmente suportam correntes entre 1 A e 3 A.

Na figura abaixo, ilustramos uma protoboard básica. Na figura, existem duas fileiras horizontais: uma na parte superior e uma na parte inferior. Todos os furos das fileiras horizontais superiores estão interligados entre si. O mesmo ocorre com as fileiras horizontais inferiores, de forma independente. Geralmente, as filas horizontais superiores e inferiores são reservadas para ligar a alimentação.

A região central da protoboard é divida em filas verticais que contem cinco furos que são ligados eletricamente entre si. Dessa forma, todos os furos de uma mesma fila estão interligados entre si.

Os terminais dos componentes são encaixados nos furos da placa, a qual incumbe-se das conexões básicas. Não só os terminais dos componentes, como também interligações mediante fios (jumpers) podem ser conectados para obter o contato elétrico.

Uma protoboard e vários jumpers são itens que geralmente fazem parte de qualquer kit para iniciante.

Utilizaremos a protoboard para montar o nosso circuito elétrico, responsável por acender um led.

A figura abaixo mostra como ficou o nosso projeto.



A próxima imagem ilustra, de forma mais fácil, como os componentes estão conectados.



Perceba que reproduzimos a primeira experiência, sem, entretanto, precisar ficar enrolando fios. Utilizando um jumper (de cor vermelha), conectamos o pin 12 a um orifício da mesma fileira vertical onde está conectado o maior terminal do led. Na imagem, este terminal está representado pelo terminal com uma pequena dobra. Lembrem-se que todos os furos de uma mesma fileira são ligados eletricamente entre si. Isso significa que o led está sendo alimentado pelo terminal positivo. Na fileira onde está o terminal negativo, conectamos um dos terminais do resistor. O outro terminal, deste mesmo resistor, está conectado em uma fileira horizontal. Nesta mesma fileira, existe um outro jumper (de cor preta) conectado ao pin GND do Arduino, completando, assim, nosso circuito.

sexta-feira, 10 de dezembro de 2010

Trailer do Documentário “Arduino”

Trailer de um documentário sobre Arduino:




"O Laboral Centro de Arte da Espanha encomendou o documentário sobre o Arduino, previsto para ser lançado neste verão. Os cineastas anunciaram que o filme está quase pronto e lançaram um trailer há alguns dias, que chegou ao BoingBoing e em outros agregadores..."

Fonte: http://www.arduinors.net

Documentando os protótipos dos seus projetos

Frizing é uma ótima ferramenta, não só para quem deseja aprender a desenvolver para o Arduino, como também para documentar os protótipos dos projetos. Além disso, a partir do website, é possível compartilhar e discutir projetos, funcionando, mais ou menos, como uma comunidade de desenvolvedores.

Abaixo, um vídeo ilustrando as principais características da ferramenta.





Frizing é open-source e pode ser baixado no seguinte endereço: http://fritzing.org/download

quarta-feira, 8 de dezembro de 2010

Introdução ao Desenvolvimento na plataforma Arduino

Arduino é uma pequena placa com um microcontrolador e uma entrada USB para conectar a um computador, além de possui vários sockets de forma que a placa pode ser conectada a um grande número de dispositivos externos, como, por exemplo, motores, sensores de luz, temperatura, microfones, etc. Eles podem ser alimentados através de uma conexão USB com o computador ou por meio de uma bateria de 9V. Podem ser controlados a partir do computador ou programados através do computador e, em seguida, desconectados deles, operando de forma independente.

Arduino é uma plataforma de hardware livre, significando que qualquer pessoa ou empresa pode projetar e criar seus próprios clones do Arduino e vendê-los.

O nome “Arduino” é reservado aos fabricantes originais. Contudo, desenvolvedores de clones do Arduino frequentemente deixam as letras “duino” ao fim do nome dos seus produtos, como, por exemplo, Freeduino e DFRduino.

Programar o Arduino é fácil e a IDE de desenvolvimento está disponível para as plataformas Windows, Mac e Linux, sem nenhum custo.

Para começar a desenvolver para o Arduino, é necessário, primeiro, ir ao site oficial (www.arduino.cc) e fazer o download da IDE de desenvolvimento. Além disso, é necessário adquirir um Arduino. Recomendo a leitura deste post e deste para saber como adquirir seus equipamentos.

Na verdade, há diferentes projetos de placas Arduino. Cada uma podendo ser usada em projetos diferentes. Contudo, todos podem ser programadas com o mesmo ambiente de desenvolvimento do Arduino e, em geral, programas que funcionam em uma placa irão funcionar nas outras.

Neste artigo, pretendo demonstrar minha experiência inicial com a placa Arduino Uno. Adquiri este kit para iniciante através da Multilógica. O kit custou R$ 218,00, fora o custo do sedex. Apesar do site oferecer um carrinho de compras, aparentemente não está funcionando. Assim, para comprar qualquer produtos deles, deve ser encaminhado um e-mail para info@multilogica-shop.com informando os itens de interesse mais o seu CEP. Eles calculam o frete e respondem com o preço final. A resposta da empresa foi muito rápida e, em três dias, recebi o meu kit.

O Kit é composto dos seguintes itens:

  • 1 Arduino Uno

  • 1 Cabo USB - Para conectar o Arduino ao seu computador

  • 1 Protoboard - Para testar seus primeiros circuítos conectando os outros componentes do kit sem soldas

  • 1 Sensor de temperatura (termistor ntc 1k)

  • 1 Sensor de luminosidade (LDR 5mm)

  • 1 potenciômetro 10kΩ

  • 1 chave momentânea (botão)

  • 5 LEDs amarelos

  • 5 LEDs verdes

  • 5 LEDs vermelhos

  • 15 resistores 330Ω

  • 2 sensores/atuadores piezoelétricos

  • 10 jumpers (para conexões) 15cm

  • 10 jumpers (para conexões) 10cm

  • 10 jumpers (para conexões) 5cm


A placa pode ser alimentada com qualquer voltagem entre 7 e 12 volts. Assim, uma pequena bateria de 9V será suficiente para pequenas aplicações. Entretanto, enquanto você estiver desenvolvendo a sua aplicação e testando na placa, é conveniente deixar a placa sendo alimentada através de uma conexão USB com o seu computador (Conforme ilustrado na figura abaixo).



Há duas filas de conectores nas extremidades da placa Arduino UNO. A fila no topo do diagrama é composta basicamente de pins digitais (on/off), embora qualquer pin marcado com “PWM” pode ser usada com saída analógica. A fila na parte de baixo é composta de conectores de energia na parte esquerda e entradas analógicas na parte da direita.

O mais interessante é que esses conectores são organizados de forma que placas “shields” possam ser plugadas à placa principal. Além disso, outros shields podem ser plugados no shield conectado à placa principal, estendendo, assim, a funcionalidade do seu Arduino.

É possível comprar shields para as mais variadas funções:

  • Conectar a redes ethernet

  • Telas LCD e touch screens

  • Xbee (comunicação sem fio utilizando o protocolo Zigbee)

  • Som

  • Controle de Motor


Instalando o software de Desenvolvimento

Conforme dito anteriormente, o software está disponível no site oficial (www.arduino.cc). Como nos meus testes estou utilizando Linux, baixei a versão específica no seguinte endereço: http://files.arduino.cc/downloads/arduino-0021.tgz (versão 32-bits).

Em seguida, basta extrair o conteúdo do arquivo em qualquer diretório do sistema. Será criado uma pasta chamada “arduino-0021”.



Entre nessa pasta e execute um arquivo chamado “arduino”.


O ambiente de trabalho está ilustrado na imagem abaixo:


Configurando o ambiente

Conecte o Arduino ao computador, através da porta USB e espere alguns segundos, para que o sistema reconheça o novo dispositivo. Para você ter certeza que a placa foi reconhecida, abra um terminal e, no prompt, execute o seguinte comando:

$ dmesg

Procure nas últimas linhas, uma linha mais ou menos parecida com essa:


[56999.967291] usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0


Essa mensagem indica que o kernel reconheceu um novo dispositivo conectado através da porta /dev/ttyUSB0. O sistema nem sempre reconhece como ttyUSB0, mas, em geral, é /dev/tty<alguma_coisa>

Em seguida, devemos configurar o ambiente de desenvolvimento para utilizar a porta serial que o sistema reconheceu. Esta configuração em feita em “Tools” → “Serial Port”.

Além disso, temos que configurar a placa que estamos utilizando. Clique em “Tools” → “Board” e escolha a opção “Arduino Uno”.


Hello World !!!!

Nosso primeiro projeto será o equivalente Hello World para dispositivos embarcado. Neste caso, como não temos um terminal para imprimir a famosa mensagem, vamos pedir para o nosso programa piscar (blink) um LED.

A placa do Arduino vem com um LED embutido, conectado ao pin digital 13. Esta conexão ao LED faz com que o pin seja sempre de saída (output), mas como o LED usa pouca quantidade de corrente, ainda é possível conectar outras coisas ao pin.

Com a IDE do Arduino aberta e com as configurações de Serial Port e Board acertadas, conforme explicado anteriormente, vamos escrever o nosso programa, ou, sketch, como os programas para a plataforma são chamados dentro da comunidade Arduino.

Escreva o código abaixo:


int ledPin = 13;

void setup() {

// initialize the digital pin as an output.

// Pin 13 has an LED connected on most Arduino boards:

pinMode(ledPin, OUTPUT);

}

void loop() {

digitalWrite(ledPin, HIGH); // set the LED on

delay(200); // wait for a second

digitalWrite(ledPin, LOW); // set the LED off

delay(200); // wait for a second

}


Ainda não tinha comentando, mas a programação é feita basicamente em C. Caso você não tenha familiaridade com essa linguagem de programação, recomendo procurar as várias apostilas e tutoriais disponíveis na internet.

Perceba que no nosso código temos duas funções, retornando void: setup() e loop(). A função setup() é executada apenas uma vez, durante a inicialização do sketch (termo muito utilizado, pela comunidade, em substituição ao nome 'programa'). É utilizada, como o próprio nome sugere, para realizar configurações. Nesse nosso caso, estamos definindo qual o modo de operação do pin que utilizaremos para conectar o LED. Como falei no começo dessa seção, utilizaremos o pin 13, que já possui um LED embutido, conectado a ele. Assim, definimos que o pin será de saída (output). Fizemos essa configuração através da chamada à função pinMode():


pinMode(ledPin, OUTPUT);


A função pinMode() recebe dois parâmetros. O primeiro corresponde ao pin que estamos trabalhando, no caso o 13. O segundo parâmetro corresponde à forma de trabalho do pin, neste caso, utilizamos a constante OUTPUT para especificar que o pin será de saída.

A função loop() é função principal do seu sketch. É nesta função que colocamos o código responsável por fazer o LED piscar.

O código é bastante simples. Inicialmente, fazemos o LED acender, chamando a função digitalWrite(ledPin, HIGH). Perceba que passamos como parâmetro o pin e a constante HIGH, indicando que queremos acender. Em seguida, utilizamos a função delay(200) para fazer com o processador pare por 200milisegundos. Depois, através da função digitalWrite(), apagamos o LED e, por último, fazemos com que o processador pare, novamente, por 200 milisegundos.

A função loop, como o próprio nome indica, é executada em loop infinito, enquanto a placa estiver sendo alimentada.

Depois te terminado o código, temos que fazer o upload para a placa. Com a placa conectada através da interface USB, clique no botão Upload da IDE, conforme indicado na figura abaixo.

Se tudo ocorrer bem, haverá uma pequena pausa e então, os dois LEDs vermelhos começarão a piscar, indicando que o sketch está sendo transferido para a placa. Esta operação deve demorar em torno de 5 a 10 segundos.

Quando a transferência estiver terminada, a placa será automaticamente reiniciada e, se tudo tiver ocorrido bem, o LED conectado no pin 13 irá piscar intermitentemente. A imagem abaixo ilustra a posição do LED.