Sobre mauro pinheiro

Professor adjunto do Departamento de Desenho Industrial da Universidade Federal do Espírito Santo (UFES), coordenador do Laboratório de Psicologia da Computação (LabPC). Minhas pesquisas acadêmicas tratam dos seguintes assuntos: design de interação, usabilidade, interação homem-computador, ubiquidade computacional, computação pervasiva, design da experiência, design da informação, questões sociais do uso de sistemas computacionais.

Interaction Cubes

Projeto bem interessante desenvolvido para o Museu da Vida, da Fundação Oswaldo Cruz (FIOCRUZ), no Rio de Janeiro.

A partir de elementos ordinários como cubos de acrílico (usados normalmente como porta-retratos), uma webcam, um monitor e um programa de leitura de QR-Code, foi possível montar uma “tabela periódica interativa”.

O que mais me encantou nesse projeto foi justamente a possibilidade de interação “física” com a tabela. Uma solução semelhante poderia ter sido desenvolvida em Flash, por exemplo, gerando uma interface para manipulação direta no computador, ou via web, sem qualquer aparato além dos conhecidos mouse/teclado. Mas o charme do projeto é justamente essa possibilidade de interagir com a tabela, manipular os blocos, os elementos são tangíveis. Ao mesmo tempo, há uma interface computacional para acesso ao acervo de vídeos, mas de maneira simples, transparente. A computação esta lá, mas sem aquela interface do tipo ‘desktop’.

Com a interação física, as posições dos elementos da tabela ficam mais evidentes. O corpo inteiro se move para pegar um bloco mais ao alto e a direita. Na tela do computador, só os dedos se movem, arrastando o mouse. A interface física fornece mais informação ao corpo.

Parabéns a equipe responsável pelo projeto: Mariana Duprat, Diego Queres, Fábio Castro Gouveia, Lucas Brazil Sousa, Paula Barja, Priscila Freire, Rita Alcantara, Sílvio Bento, Ana Maria Palma, Catarina Chagas, Diego Vaz Bevilaqua, Marina Ramalho, Carolina Senra, Diego Vaz Bevilaqua, Renan Alves.

Em tempo: o projeto concorre ao prêmio Interaction Awards, vale conferir e dar uma força.

Teste do shield Ethernet do Arduino

Testando o shield Ethernet pro Arduino. O próprio Arduino funciona como um servidor, A página web que eu acesso no vídeo pelo iPad e pelo telefone é construída pelo próprio Arduino, e através dessa interface é possível controlar outros componentes conectados ao Arduino (no exemplo, um LED). É possível acessar o Arduino via Web por qualquer dispositivo que esteja na mesma rede.

Pra que outros dispositivos, fora de rede wi-fi caseira, possam acessá-lo seria necessário conseguir um endereço IP fixo pro Arduino.

UPDATE:
Em resposta a mensagem da Lucilene (abaixo, nos comentários), resolvi colocar o código que usamos na programação desse teste com o shield Ethernet. Tentei colocar direto aqui, mas ele ignorou o comando ‘code’ e ao invés de exibir os comandos HTML, interpretou os comandos de fato e ficou confuso.

Segue o link para o código:
http://ubicomp.feiramoderna.net/wp-content/uploads/2012/09/teste_ethernet.txt

LilyPad Arduino

LilyPad Arduino é um projeto da pesquisadora Leah Buechley, diretora do grupo de pesquisa High-Low Tech do MIT Media Lab.

Trata-se de uma versão do Arduino adaptada para projetos de roupas e tecidos interativos. Os componentes (LEDs, botões, sensores, atuadores, fontes de alimentação etc.) são feitos de tal forma que podem ser costurados em tecidos, utilizando para isso linhas especiais, que conduzem energia elétrica.

LilyPad Arduino, plataforma ideal para projetos de vestimentas interativas, com componentes eletrônicos

No vídeo abaixo a própria Leah Buechley apresenta um projetinho bem simples, mas interessante, utilizando o LilyPad. Turn signal biking jacket (detalhes do projeto)

Fritzing

Uma ferramenta interessante pra quem quer desenvolver projetos em Arduino é o Fritzing. Serve pra documentar a montagem dos componentes. A interface simula uma protoboard, na qual os componentes podem ser colocados, manipulados facilmente, como se fora uma protoboard “real”. A partir dessa montagem, o programa gera também os esquemas, o que facilita muito a documentação do projeto (especialmente pra quem não é familiarizado com essa forma de “escrever”). É muito intuitivo e fácil de usar.

O projeto originalmente foi desenvolvido por pesquisadores do Interaction Design Lab da University of Applied Sciences Potsdam, Alemanha. Ele é opensource, contando com participação de entusiastas.

Esse vídeo dá uma visão geral do funcionamento do programa:

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 + Xbee

Recentemente adquiri um kit XBee, para fazer a comunicação sem fio entre o Arduino e o computador, ou entre dois Arduinos. Desde então, não havia sequer tirado o kit da embalagem.

Hoje finalmente consegui arrumar um tempinho pra investigar esse negócio. Depois de ler o tutorial XBee para iniciantes no site da Sparkfun, e de ler esse artigo no O’Reilly, consegui botar o sistema pra funcionar.

Claro, o experimento é bem simples. Queria era ver se o kit estava funcionando – especialmente porque ele vem com alguns componentes soltos que eu precisei montar e soldar, o que não é muito a minha especialidade. Mas deu tudo certo.

A programação usada em ambos os Arduinos é a mesma.


#define RED 12 // Pino Digital 12, chamar de 'RED', controla o LED vermelho
#define BLUE 11 // Pino Digital 11, chamar de 'BLUE', controla o LED azul
#define BUTTON 7 // Pino Digital 7, chamar de 'BUTTON', controla o botão

int pressureReading; // variável ‘pressureReading’ vai guardar o valor do botão
int incomingByte; // variável ‘incomingByte’ vai carregar o valor S ou N, S=botao ligado, N=botao desligado

void setup ()
{
Serial.begin(9600);
// define a taxa de transferência de dados da porta serial.
// 9600 e’ o padrão default do Xbee

pinMode (RED, OUTPUT); // RED é um dispositivo de saída de dados
pinMode (BLUE, OUTPUT); // BLUE é um dispositivo de saída de dados
pinMode (BUTTON, INPUT); // BUTTON é um dispositivo de entrada de dados
}

void loop ()
{

pressureReading = digitalRead(BUTTON);
// Verifica se o botao esta ativado
// e armazena o resultado em
// ‘pressureReading’

// Se botao estiver ligado, envia sinal ‘S’ pela porta serial.
// Caso contrario, envia sinal ‘N’.
// O XBee envia e recebe dados pela porta serial.

if (pressureReading == HIGH) // HIGH significa que o botão está ativado.
{
Serial.println(‘S’);
digitalWrite(BLUE, HIGH); // acende o LED azul
}
else
{
Serial.println(‘N’);
digitalWrite(BLUE, LOW); // apaga o LED azul
}

// Verifica se chegaram dados pela porta serial.
// Se receber o sinal ‘S’ acende a LED, sinal ‘N’ apaga o LED.

if (Serial.available())
{
incomingByte = Serial.read();
if (incomingByte == ‘S’)
{
digitalWrite(RED, HIGH); // acende o LED vermelho
}
if (incomingByte == ‘N’ )
{
digitalWrite(RED, LOW); // apaga o LED vermelho
}
delay (10);
}
}

— UPDATE —

Novo teste dia 11/10:

Novo teste com XBee

Mike Kuniavsky fala sobre a internet das coisas

Mike Kuniavsky foi um dos fundadores da Adaptive Path, é autor do livro Smart Things, e atualmente é CEO da ThingM, uma empresa voltada a criar soluções de hardware e software pra facilitar a vida de pessoas como nós ― designers que querem criar interfaces com o mundo digital, sem quebrar a cabeça com hardware e software!

Na conferência GigaOM Mobilize, realizada em San Francisco, Kuniavsky falou sobre o cenário atual, propício à concretização da Internet das Coisas. O detalhe é que ele não entra na questão mais complicada, que é justamente o que virá a ser efetivamente a internet das coisas. Mas mostra como as peças necessárias a sua existência já estão por aí. Aliás, trabalho semelhante já havia sido feito no livro Everyware, do Adam Greenfield, que já comentei aqui antes.

Leia a matéria completa (com trechos da apresentação em vídeo) no site da GigaOM

Uma dica: Mike Kuniavsky é um dos palestrantes convidados para o
Interaction South America 2011.

Circuit bending

Há alguns dias comprei dois potenciômetros, e tive uma primeira experiência fracassada com eles conectados ao Arduino. Cheguei a pensar que havia queimado um deles – de fato, chegou a sair fumaça, mas ele continua funcionando. Descobri mais tarde que havia conectado de maneira completamente equivocada os fios no circuito.

Quando descobri como ligar os potenciômetros, comecei a testar os valores que geravam no Arduino, e de que maneiras poderia utilizá-los para controlar outros dispositivos de saída no circuito. Fiz testes com um motor e com LEDs. Mas me faltava algum dispositivo sonoro.

Ai vem o acaso do destino. Recentemente meu fone de ouvido foi inutilizado em um acidente com minha bicicleta e um singelo ônibus. Como o bicho já não me servia mais como fone de ouvido, resolvi fazer um circuit bending e ver que diabos aconteceria.

Gravei em vídeo o resultado da experiência.

Aparelhos eletrônicos antigos e quebrados, brinquedos, qualquer objeto que tenha componentes eletrônicos pode ser uma fonte de experimentação. Se a gente não testar, não tem como saber o que vai funcionar. E algumas surpresas interessantes podem ocorrer no caminho.

Getting Started with Arduino

Getting Started with Arduino é um livreto escrito pelo Massimo Banzi (um dos criadores do Arduino).

Tem vários exemplos bem fáceis pra começar a se familiarizar com o ambiente de programação (o livro não entra em detalhes sobre a montagem dos componentes eletrônicos, mas sempre mostra como montar o circuito).

Existe uma versão com conteúdo reduzido disponível para download em formato PDF.

Outras fontes de consulta:

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: