Segunda-feira, 13 de Outubro de 2008

Mylamp - tutorial

 

 

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.

 

esquema esquema montagem pcb relé

pcb relé

 

ficheiros

download mylamp
na desktop

luz.bat
iconluz.ico
serialin.pde

download mylamp
no processing

ficheiros de processing
ficheiros de arduino

tags: ,
publicado por nop às 00:16
link do post | comentar | ver comentários (12) | favorito
|
Quinta-feira, 10 de Abril de 2008

Arduino - acelerómetro - adxl330

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.


 

tags:
publicado por nop às 17:28
link do post | comentar | ver comentários (2) | favorito
|
Sábado, 5 de Abril de 2008

Arduino - input analógico - fotodíodo

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);
 }
}

tags:
publicado por nop às 00:55
link do post | comentar | favorito
|

Arduino - sonar Maxbotix LV-EZ1

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);
 }
}



tags:
publicado por nop às 00:05
link do post | comentar | favorito
|
Sexta-feira, 4 de Abril de 2008

Arduino - input analógico - potenciómetro

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);
 }
}

 

tags:
publicado por nop às 23:50
link do post | comentar | favorito
|

Arduino - interruptor de pressão (switch)

A primeira versão do circuito implementa uma resistência  "pull-down" em paralelo por forma a evitar que o valor lógico flutue quando o interruptor não está a ser pressionado.

pressionado - valor  lógico 1
não pressionado- valor lógico 0





A segunda versão do circuito implementa uma resistência  "pull-up" em paralelo por forma a evitar que o valor lógico flutue quando o interruptor não está a ser pressionado.

pressionado - valor  lógico 0
não pressionado- valor lógico 1









int valor;

void setup()
{
  pinMode(12, INPUT);
  Serial.begin(9600);
}

void loop()
{
  valor = digitalRead(12);
  Serial.println(valor,DEC);
}

 

tags:
publicado por nop às 23:39
link do post | comentar | favorito
|

pesquisar

 

tags

arduino

c/c++

codebits

deca

director

flash

iniciação

maa

materiais

mobile

oficina

opencv

relé

tui

ua

todas as tags

recentes

Mylamp - tutorial

Arduino - acelerómetro - ...

Arduino - input analógico...

Arduino - sonar Maxbotix...

Arduino - input analógico...

Arduino - interruptor de ...

arquivos

Novembro 2012

Abril 2009

Outubro 2008

Setembro 2008

Abril 2008

Fevereiro 2008

links