collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]


Focos LED SMD por almamater
[16 de Dezembro de 2023, 14:12]


I Belive por dropes
[15 de Dezembro de 2023, 13:59]


Carga de corrente eletrónica ZPB30A1 60W por jm_araujo
[11 de Dezembro de 2023, 13:27]

Autor Tópico: Sensor de som com Arduino  (Lida 18523 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.372
    • 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