O Museu Municipal de Penafiel conta uma instalação interactiva que recria o ambiente das lampreias, um peixe característico nos rios da região. A animação de um grupo de lampreias num meio aquático é projectado sobre uma estrutura circular com 3m de diâmetro desenhada pelo designer Francisco Providência. Os visitantes podem tocar e interagir com as lampreias com as suas mãos ou outros objectos.
O sistema por nós criado é constituído por um computador, um projector e uma webcam instalada sobre a estrutura a cerca de 4m de altura. As imagens da câmara são analisadas em tempo real por uma aplicação desenvolvida em C++. Com a ajuda da biblioteca OpenCV a aplicação detecta as coordenadas das mãos dos utilizadores e comunica-as via sockets para uma segunda aplicação que é responsável pela animação. Esta última foi escrita em Flash, as3, e contém algumas classes que possibilitam a comunicação via sockets.
download Código fonte da aplicação detecta.exe (c++, OpenCV).
download Código fonte do projecto em Flash (ActionScript 3).
Um ícone na desktop controla (liga e desliga) o candeeiro de secretária. Este pequeno tutorial exemplifica como uma aplicação multimédia pode controlar aparelhos ligados a uma tomada, como por exemplo, um electrodoméstico, um candeeiro, uma aparelhagem de som ...
O microcontrolador arduino serve de interface entre o computador e o circuito de 220v via um releé. Qualquer aplicação que aceda à porta série virtual passará a poder controlar a tomada.
Para simplificar criámos um ficheiro BAT com a seguinte linha de comando:
echo k>com6
que, quando executado, envia o carácter k para a porta série virtual nº 6, que no meu computador corresponde à porta instalada pelo driver FTDI do arduino. Por sua vez, o arduino comuta o estado do pin de output nº8 que se encontra ligado ao relé por via de uma resitência e de um transistor. Por fim, criámos um atalho para o ficheiro bat na desktop e desenhámos um ícone para esse atalho.
download mylamp | download mylamp |
Conjunto de ferramentas e componentes que constituem uma oficina básica para o desenvolvimento de projectos de Arte Digital, Design de Interacção com aplicação dos recursos e prática da Physical Computing.
E os componentes mais usados. Na sua maioria, podemos encontrá-los numa loja de electrónica tal como a Dimofel em Lisboa, a Aquário, a Díodo ou a supertécnica no Porto, ou a TV Lar em Aveiro.
A disciplina de MAA integra o plano de estudos do Mestrado em Comunicação Multimédia do Departamento de Comunicação e Arte da Universidade de Aveiro. A selecção de projectos finais aqui seleccionados são o resultado de investigação teórica em torno do tema Tangible User Interfaces, e a sua aplicação prática na área dos jogos, arte e design interacção.
A maioria dos projectos que surgiram desta oficina foram desenvolvidos em Flash, Processing, Arduino, biblioteca Jmyron (CAM) e também recorrendo à biblioteca Touchlib.
Este paradigma de interacção assenta no envolvimento do corpo enquanto interface.
Os Tangible Users Interfaces (TUI) têm como princípio eliminar a ideia de representação gráfica fazendo, precisamente, coincidir o espaço temporal do utilizador com o da máquina. Este paradigma de interacção evoluiu a partir do trabalho pioneiro de George W. Fitzmaurice que formalizou pela primeira vez o conceito de Graspable User Interfaces. Trata-se pois de um paradigma de interacção que torna possível à pessoa, através das mãos ou de outros elementos físicos, manipular de uma forma virtualmente imediata (no espaço e no tempo) os objectos ou conteúdos da acção. Para levar a cabo esta nova relação pessoa-computador torna-se imprescindível que a máquina “compreenda” o humano num processo que transforma e destitui o estatuto de ambos (a máquina adquire, neste processo, características de sujeito, e o humano as de objecto). Por esta razão, o paradigma de interacção protagonizado pelos TUI recupera a Physical Computing enquanto expressão do sensoriamento/actuação consubstanciada no corpo do utilizador. A implementação deste paradigma de interacção sugere a recuperação do modelo de arquitectura de sistema Ubiquous Computing, o qual consiste na distribuição modular do processamento em diferentes CPUs dedicados pela várias funcionalidades do sistema – sensoriamento, actuação, visualização, etc.
Excerto do documento que tem por base esta linha de investigação (no DeCA) .
Mário Vairinhos e Nuno Dias.
link: http://videos.sapo.pt/kpmTcS97THz7DoCk6sCz
Projecto desenvolvido por Mário Vairinhos (programação) em parceria com Nuno Dias (design) em Outubro de 2007 no evento CODEBITS 2007 organizado pelo SAPO e que mereceu o prémio Hack.
Faz agora quase um ano o fim-de-semana passado na gare do oriente a comer chocolates e pizzas na companhia de 400 nerds.
O projecto foi desenvolvido em C/C++ recorrendo à biblioteca open source de visão por computador OPENCV.
Publica-se o código-fonte do projecto. Todo o projecto foi escrito à pressa, ao estilo quick & dirty, numa espécie de correria para o terminar antes do prazo limite.
usaacabeca.c
O acelerómetro adxl330 é um sensor de aceleração sensível ao movimento nos 3 eixos (x,y,z) montado numa pequena placa com espaçamento DIP. Possui 6 pinos; VDD a 3 Volts, GND, X,Y e Z, sendo que o pino ST fica desconectado. Pode ser comprado por cerca de 35$ na loja online sparkfun onde se encontra também disponível para download o datasheet com informação técnica detalhada.
A sua ligação ao Arduino Deciemila ou ao Arduino BT é extremamente fácil, atendendo a que ambas as placas dispõem de uma saída de 3V3. O sensor envia a informação do movimento através das saídas analógicas X,Y e Z.
.
O programa que nós testámos envia repetidamente os valores da aceleração nos 3 eixos para a porta de comunicações podendo ser lido a partir de qualquer aplicação de terminal parametrizado com uma velocidade de transferência de 9600 bauds.
O acelerómetro pode ser usado para registar a aceleração do movimento mantendo a placa sempre orientada na vertical ou, alternativamente, para registar a orientação da placa, mantendo-a fixa numa posição e orientando-a livremente (tilt).
No primeiro caso, integrando a velocidade podemos interpolar a posição através do método de integração de Euler:
ACEL=FORÇA/MASSA
VEL=VEL+ACEL
POS=POS+VEL
Se pretendermos usar o sensor para conhecermos a orientação da placa nos 3 eixos (segundo caso) basta-nos ler directamente os valores X,Y e Z.
Quando os dados são lidos directamente a partir da instrução analogRead e com a placa em repouso, verificámos que os valores oscilam bastante. O código que apresentamos resolve esse problema implementando um filtro digital que suaviza os dados. O método usado é simples; guardam-se as últimas 7 amostras e calcula-se a média.
Se o objectivo for implementar um sistema de interacção com o PC, ligando a placa arduino ao Processing, Flash, Max MSP ou outro SDK, temos de ter em linha de conta que a aplicação terá de calibrar os dados. No nosso caso, com a placa em repouso, os valores obtidos nos 3 eixos situavam-se próximos do valor 340. Uma rotação de +-90º ao longo de cada um dos eixos provocava uma oscilação proporcional de +-60 unidades, o que resulta uma resolução ligeiramente inferior a 2º por unidade.
O fotodíodo quando polarizado de forma inversa faz variar a resistência e pode ser aproveitado para medir a luminosidade. Para tal, basta ligá-lo em paralelo com uma resistência (geralmente na ordem dos 10k a 20k) e obtemos um divisor de voltagem que facilmente é lido pelo comando AnalogicRead.
O fotodíodo pode ser substituído por um LDR subindo o valor da resistência para cerca de 100k.
O LDR, ao contrário do fotodído, é não-polarizado mas em contrapartida não é sensível a frequências superiores a 100hz.
O seguinte circuito funciona como sensor de luminosidade cuja a variação é lida e reenviada repetidamente pela porta de comunicações.
void setup()
{
Serial.begin(9600);
}
int valor;
void loop()
{
while(true) {
valor = analogRead(3);
Serial.println(valor,DEC);
}
}
O sonar Maxbotix LV-EZ1 é especialmente atractivo pela seu baixo preço, boa performance, dimensão reduzida e 3 tipos de output; serial, analógico e por impulsos (PWM). Pode detectar pessoas até 3 metros e objectos mais reflexivos em termos acústicos até 6 metros.
Está disponível online na loja sparkfun assim como a partir da loja do próprio fabricante Maxbotix. O datasheet contém informação técnica detalhada e possui uma FAQ muito bem documentada.
O modo mais rápido de o ligar ao arduino é por via da saída analógica do sonar. O circuito torna-se muito semelhante ao circuito do potenciómetro.
Cada amostra é lida pelo comando AnalogRead, podendo variar entre o valor 0 e 1023.
O programa reenvia a amostra através da porta série, podendo -se ler a distância no Terminal em tempo real.
.
void setup()
{
Serial.begin(9600);
}
int valor;
void loop()
{
while(true) {
valor = analogRead(3);
Serial.println(valor,DEC);
}
}
O circuito para ligar um potenciómetro ao arduino. O programa lê o valor e reenvia-o pela porta de comunicações.
void setup()
{
Serial.begin(9600);
}
int valor;
void loop()
{
while(true) {
valor = analogRead(3);
Serial.println(valor,DEC);
}
}