Analog sound and ultrasonic distance sensor

From Medien Wiki
Revision as of 19:46, 30 January 2023 by Flux999 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

07.12.22

Analog sound and ultrasonic distance sensor

https://wiki.keyestudio.com/KS0035_Microphone_Sound_Sensor_with_Potentiometer

Analog sound sensor includes a microphone sensor to detect ambient sounds and loudness of them. In some sources usage is recommended with an audio analyzer module(https://www.dfrobot.com/product-514.html) to differentiate different frequencies.


https://www.sparkfun.com/products/15569

Ultrasound distance sensor consists of a trigger and receiver parts, one is releasing ultrasonic waves and the other is receiving the reflected waves to calculate the distance from the duration of the bouncing time. The detection range is 2-40cm.


connecting to Arduino

Analogue sound is connected to the analog pin, while trigger and receiver pins of the ultrasound sensor are connected to two different digital pins.

To see the differences in the values, I put some track on the bluetooth speaker and moved it in front of the distance sensor.

Sd jbl.jpg Sel loud.png

#define echoPin 2 // attach pin D2 Arduino to pin Echo of HC-SR04
#define trigPin 3 //attach pin D3 Arduino to pin Trig of HC-SR04

int buzzer = 7;

// defines variables
long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement

void setup() {
  // put your setup code here, to run once:

  pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
  pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
  Serial.begin(9600);
}

void loop() {
  int val;

  val=analogRead(2);

  Serial.print("Loudness:");
  Serial.println(val,DEC);
  delay(100);

  // Clears the trigPin condition
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin HIGH (ACTIVE) for 10 microseconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
  
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");


creating the loop

I have added a piezzo buzzer (+ 1K resistor) to the circuit to make the process of loudness detection more cyclical. I have followed this tutorial connecting it > https://surtrtech.com/2018/01/29/how-to-use-a-buzzer-piezo-speaker-with-arduino/

Sd buzzer.jpg


added the code a condition about the distance. When the distance is smaller than 10cm, buzzer starts to buzz with the mapped values also from the sound and distance sensor.

 if(distance<10) {
    long buzz = map(val, 0, 40, 1000, 5000);
    long del = map(distance, 2, 40, 100, 800);
    tone(buzzer, buzz); 
// tone() is the main function to use with a buzzer, it takes 2 or 3 parameters (buzzer pin, sound frequency, duration)
      delay(del);
  }
  else {
    tone(buzzer, 0);
  }