Arduino + Xbee (2)

A mesma idéia do vídeo anterior: dois Arduinos se comunicando pelos módulos Xbee. Dessa vez, quando apertamos o botão em um Arduino, o outro apagava o LED e acionava o buzzer, fazendo uns barulhos muito loucos.


Vídeo feito pelo Marquito — valeu Marquito!

Isso não aparece no vídeo, mas a intenção na verdade era testar o alcance do sinal do Xbee em um espaço mais aberto, sem muitas interferências. Percebi que o sinal não tem um alcance tão longo quanto eu imaginava (conseguimos uns 5 metros, sem paredes?). Movendo um dos Arduinos pela sala de modo a aumentar a distância entre os dois módulos XBee, muitas vezes o sinal se perdia, e mesmo voltando a aproximar os módulos XBee, a comunicação entre eles só era reestabelecida quando apertava o botão de ‘reset’ no Arduino.

Por outro lado, a despeito do alcance ser menor do que eu imaginava, considerando que o módulo é minúsculo e opera sem qualquer antena, até que ele fez um bom trabalho.

Arduino for dummies #01

Na última aula falei de alguns princípios básicos de programação, para então apresentar o ambiente de desenvolvimento do Arduino.

Levei meu kit, comprado na SparkFun e fizemos algumas demonstrações. O Marquito também levou o kit Arduino dele, e rapidamente fez um programinha que permitia controlar o movimento de um motor servo usando um potenciômetro, e simultaneamente desenhar um gráfico na tela do computador, usando Processing. O Processing é uma linguagem de programação especialmente desenvolvida pra trabalhar com imagens, gráficos, animações etc. O ambiente de programação do Arduino, por sua vez, tem muita semelhança com o Processing, e ambos conversam facilmente.

Neste domingo eu estava tentando reproduzir uma função que o Marquito havia usado na aula, que faz o mapeamento de valores entre dois componentes do circuito. Usei um sensor de pressão, que tem valores máximos na faixa de 900, e fiz com que ele alterasse simultaneamente a velocidade do giro de um motor e a intensidade do brilho de um LED. Tanto o motor quanto o LED trabalham com valor máximo de 255. A função MAP faz exatamente a correspondência entre os valores mínimo e máximo desses componentes.

A primeira versão do programa que eu fiz não usava essa função MAP. Quando o valor de pressão ia acima de 255, eu dizia pra ele considerar o valor como sendo 255. Assim evitava problemas com o motor ou com o LED. Mas dessa forma, fazendo pouca pressão eu já atingia o limite de 255, uma vez que a escala do sensor de pressão ia de 0 a um valor próximo a 900. Na versão recente, usando a função MAP, consegui um resultado melhor.

Fiz um vídeo com o resultado:

Controlando o computador com o leitor RFID

Na aula de hoje, apresentei alguns projetos feitos com a tecnologia de transmissão de dados RFID (Radio-Frequency IDentification)

Durante a aula, tentei mostrar algumas aplicações simples que desenvolvi com meu leitor Touchatag, mas a rede estava muito instável, e meu computador ficou tímido na hora H. Nessa confusão, a turma se dispersou e acho que poucos viram a coisa funcionando de fato.

De qualquer forma, há algum tempo fiz um vídeo mostrando os primeiros testes que desenvolvi, logo que adquiri o kit touchatag. Quem não pôde estar na aula vai pelo menos ter uma idéia do que dá pra fazer sem muita complicação, usando o touchatag e AppleScript (linguagem de programação bem simples, nativa dos computadores Apple, que permite controlar alguns dos seus programas).

.

No vídeo eu uso o touchatag pra controlar o iTunes e o Adium (um Instant Messenger pra Mac). Na aula eu ainda mostrei como usar o touchatag pra fazer com que a webcam do Mac tirasse uma foto (usando o programa PhotoBooth, nativo do macbook). Outra etiqueta RFID foi programada pra realizar uma ligação via Skype para o telefone da minha esposa.

Essa plataforma é bem limitada. Pra usar o leitor no meu macbook foi preciso instalar um programa, responsável pela comunicação do leitor com a base de dados hospedada no site do touchatag. No site é que eu associo cada etiqueta RFID a uma função qualquer – e as funções disponíveis no site são bem limitadas. Uma maneira de minimizar essa limitação é criar programas próprios, e fazer com que as etiquetas simplesmente chamem esses programas. O site touchatag tem uma aplicação que serve pra abrir um site na internet. A base de dados associa uma etiqueta a um endereço na Internet. Mas é possível usar essa mesma aplicação para rodar um programa no computador – basta, ao invés de fornecer o endereço de um site, fornecer a localização do arquivo no computador. A inteligência nesse caso está no programa rodando localmente, no meu próprio computador, e não na aplicação disparada pelo site touchatag.

Essa gambiarra, obviamente, é super limitada. Mas é possível hackear o leitor e programar além das funções oferecidas pelo site, e o que é melhor, sem depender da Internet pra isso. Durante a aula, o Marquito conseguiu descobrir uma biblioteca pronta, que possibilitava a comunicação direta com o leitor touchatag, usando a linguagem de programação Processing. Ele chegou a fazer um programa pra ler os cartões RFID que ele tinha por ali, que não eram as etiquetas que vinham no pacote do touchatag. Cada cartão colocado sobre o leitor fazia com que um nome diferente aparecesse na tela do computador. Funcionou, sem qualquer mediação feita pelo site, tudo rodando localmente.

Esse brinquedinho é bem limitado, mas a idéia era apresentar o conceito, e partir pra elaboração de propostas, projetos que usem essa tecnologia. Existem diversos modelos de leitores, existem ‘shields’ RFID que podem ser usados junto com Arduino. Independente da solução técnica, me interessa mais discutir propostas de uso dessa tecnologia.

Pra quem tem mente criativa, o céu é o limite.