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.


2 comentários:

  1. Muito bom Marvin, parabéns! Gostei do artigo, bem didático. Eu tenho vontade de mexer com arduino, meu problema é querer fazer muita coisa de uma vez! ;-)

    Indica esse artigo como notícia no BR-Linux e em outros canais, o pessoal vai gostar e vai dar maior divulgação pro blog de vocês.

    E aproveitando, parabéns pelo mestrado!

    ResponderExcluir
  2. Muito bom Marvin[2], fiquei até com vontade de programar p arduino, hehehe...

    Bem interessante, me aguarde!!
    =P

    ResponderExcluir