collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por jm_araujo
[Hoje às 00:36]


URGENTE - display de 7 segmentos com backpack por helderjsd
[Ontem às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Palavras Cruzadas por Njay
[19 de Setembro de 2017, 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]

Autor Tópico: Sensor de som com Arduino  (Lida 14712 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 643
    • Guibot
Sensor de som com Arduino
« em: 03 de Maio de 2009, 16:13 »
Finalmente tive tempo para continuar com esta investigação que se tem vindo a arrastar, mas que estou a obter bons resultados  :)
Trata-se de um sensor de volume sonoro, o circuito que usei é este: http://www.rev-ed.co.uk/docs/picaxe_sound.pdf

Estou a usar microfones que tinha aqui para casa de uns headsets partidos:

No seu interior podemos ver que se tratam de microfones do tipo electrec

O circuito

Detalhe do circuito. Estou a usar um condensador de 10uF para estabilizar o sinal de output. É o condensador verde que se encontra mais à direita.
Não me consigo imaginar a soldar estes componentes todos quatro vezes numa pcb, já que gostava de ter uma aplicação com pelo menos quatro microfones....  :)

E aqui um video com um sketch em processing para vizualizar os dados recebidos pelo arduino:

http://www.flickr.com/photos/guibot/3497408152/#secret8980785104-w500-h375

E o respectivo código:

Código: [Seleccione]
/* ****************************************************

Arduino Code

 **************************************************** */

int analogValue;
int val;

void setup()
 {
 // start serial port at 9600 bps:
 Serial.begin(9600);

}

void loop()
 {
 // read analog input
 analogValue = analogRead(0);

// send values to processing
 Serial.println(analogValue, DEC);

// pause for 10 milliseconds:
 delay(10);

}

Código: [Seleccione]
/* ****************************************************

Processing Code

 **************************************************** */

// import the Processing serial library
 import processing.serial.*;

// declare a font variable
 PFont font48;

int linefeed = 10; // Linefeed in ASCII
 Serial myPort; // The serial port

// value recieved from the serialport / arduino
 int sensorValue;

// mapped value
float sensorValueMap;

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Setup

void setup() {
 myPort = new Serial(this, Serial.list()[0], 9600);

// read bytes into a buffer until you get a linefeed (ASCII 10):
 myPort.bufferUntil(linefeed);

size (800, 600);
 background (0);
 //smooth();

// you need to have this font in your machine, if not go to
 // Tools - Creat Font - and create your own font
 font48 = loadFont("alask_48.vlw");

textFont(font48);

}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Serial Event

void serialEvent(Serial myPort) {
 // read the serial buffer:
 String myString = myPort.readStringUntil(linefeed);

// if you got any bytes other than the linefeed:
 if (myString != null) {

myString = trim(myString);
 //println(myString);
 // split the string at the commas
 // and convert the sections into integers:
 int sensors[] = int(split(myString, ','));

// print out the values you got:
 for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) {
 //print("Sensor " + sensorNum + ": " + sensors[sensorNum] + "\n");

// sensor
 sensorValue = sensors[0];
 //sensorValueSmooth = sensors[1];

}
 }
 }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Draw

void draw() {

// set the black backgrounf
 background(0);

// run the displayText() function
 displayText();

// map the recieved values
 sensorValueMap = map(sensorValue, 0, 1024, 0, 800);

// draw a rectangle based on the variable sensorValueMap
 rect (0, 100, width, sensorValueMap);
 }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Display Text

void displayText() {

text("Sensor Value", 20, 80);
 text(sensorValue, 450, 80);

}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Save image

void keyPressed(){
 if(key=='s')
 saveFrame("sound-######.png");
 }
« Última modificação: 03 de Maio de 2009, 20:40 por guibot »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.234
    • Tiago Rodrigues
Re:Sensor de som com Arduino
« Responder #1 em: 03 de Maio de 2009, 16:25 »
Muito bom artigo a dar continuidade ao do amgcgoncalves da semana passada.
http://lusorobotica.com/index.php/topic,809.0.html

Continua o bom trabalho ;)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re:Sensor de som com Arduino
« Responder #2 em: 03 de Maio de 2009, 16:26 »
Isso está a andar bem :)

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.060
  • El RoboSapiens
Re:Sensor de som com Arduino
« Responder #3 em: 04 de Maio de 2009, 01:02 »
temos guitarrista :D (por acaso gostava de dar uso a minha viola :P )

mas deixando o off-topic: excelente post! :)

tinhas-me pedido isto quando postei o "Detetor de ruido" mas nunca mais me lembrei de pesquisar :P

Gostava de fazer uma coisa assim (tenho um micro desses por cá) e se possivel variar a intensidade de um led tambem conforme o som (fácil)

vou ver se arranjo um tempito pa por em pratica :D

Offline SPADAcorp

  • Mini Robot
  • *
  • Mensagens: 1
Re: Sensor de som com Arduino
« Responder #4 em: 05 de Fevereiro de 2010, 21:16 »
boas.
Sou novato nestas andanças.
Sou um artista plástico, estou a dar os primeiros passos com o arduino.

Tentei reproduzir o sensor de som aqui postado e não consegui por a funcionar.
Notei que no esquema que representa o circuito anexo em pdf  tem um condensador 1n0 mas no esquema da breadboard tem uma resistencia de 1k no lugar do condensador.
Alguem me sabe explicar?
já montei os dois esquemas e não consigo receber valores acima de 0.

O objectivo da experiencia que  vou tentar fazer é estudar ambientes de salas e depois meter uns leds (ou quem sabe mais tarde algo mais) a reagir segundo o som ambiente.

Se alguem puder dar umas dicas. agradeço