quarta-feira, 7 de dezembro de 2011

Arduino wireless!

Arduino Mega com Wixel shield e módulos wireless.
Que tal fazer seu computador se comunicar com o Arduino sem precisar ligar cabos? Isso permite que você construa um robô com o Arduino e faça seu controle à distância! Ou ainda, que seu robô transmita dados de seus sensores ao computador, que pode processá-los e interferir na movimentação do robô!

Além do uso em robótica, existem várias aplicações para comunicação sem fio entre Arduino e computador, como sensoreamento remoto, sistemas embarcados e qualquer aplicação em que a conexão de cabos seja difícil ou não desejável.

No mercado existem diversos shields que permitem turbinar seu Arduino para que ele possa fazer comunicação sem fios. Alguns permitem comunicação via Bluetooth, outros possuem um rádio digital que transmitem os sinais da porta serial do Arduino (pinos RX e TX).

O shield que testei é o Wixel Shield, vendido pela Pololu:
http://www.pololu.com/catalog/product/2501

Trata-se de um shield que permite o acoplamento de um módulo wireless que se comunica com outro módulo gêmeo, ligado ao computador. Algumas coisas que eu achei muito bacanas nesse shield são:

  • Possui rádio de 2,4GHz com alcance de ~30 metros e velocidade de até 350kbps;
  • Possui um microcontrolador pode ser programado através de uma interface bastante amigável, disponível para download no site da Pololu;
  • Tem 15 pinos de entrada e saída, incluindo 6 entradas analógicas, que podem ser programados de forma independente da comunicação, o que permite expandir a capacidade do Arduino;
  • Permite a criação de uma rede com até 128 módulos de comunicação (por exemplo, 127 Arduinos e um computador);
  • Para fazer comunicação entre computador e Arduino, a configuração é muito simples: basta baixar para o módulo o programa indicado no site e configurar como você quer. A partir daí, a comunicação é feita como se fosse comunicação serial padrão;
  • Permite gravar programas no Arduino sem ligar o cabo USB à placa! Isso facilita muito a atualização do código.


O programa de testes que fiz é bem simples, e está disponível para download aqui.

Ele ativa a saída digital 12 com um sinal PWM cuja razão cíclica pode ser definida de duas formas: através da leitura do valor analógico do pino A2 (0 a 5V), ou através do valor digitado no Serial Monitor, enviado ao microcontrolador. No início, uma mensagem é enviada pela serial para solicitar o modo de funcionamento. A comunicação é feita a 57.600 bps.

Testei o programa no Arduino Mega 1280, com shield Wixel e módulos Wixel wireless. A comunicação funcionou muito bem! Caminhei com o Arduino pela casa e vi que ele era capaz de manter a comunicação em outro cômodo, mesmo separado por uma parede. No entanto, para distâncias maiores (dois cômodos ou mais), a comunicação começava a falhar. Nesse caso, o LED vermelho do módulo wireless se acende para indicar a falha.

Os módulos wireless foram configurados para comunicação em 57.600bps, pois esta é a velocidade de upload de código no Arduino Mega 1280. Dessa forma, isso me permite gravar programas no microcontrolador do Arduino usando a interface wireless (sem precisar ligar o cabo USB à placa). Se você tem outro modelo de Arduino pode ser necessário configurar o módulo wireless para outra velocidade. Exemplos:
Arduino Uno: 115.200 bps
Arduino Mega 2560: 115.200 bps
Arduino Mega 1280: 57.600 bps
Arduino Duemilanove com ATmega328: 57.600 bps
Arduino Diecimila ou Duemilanove com ATmega168: 19.200 bps

O vídeo abaixo ilustra o teste do sistema que montei:


Mais informacoes sobre o uso do Wixel Shield podem ser obtidas em: 

http://www.pololu.com/docs/0J47

E sobre o Wixel Programmable USB Wireless Module estão aqui:
http://www.pololu.com/catalog/product/1337 

Até a próxima!