collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[Ontem às 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

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

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

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • 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.378
    • 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.753
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.064
  • 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