marvin:lab3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
marvin:lab3 [2008/09/19 11:49] – rieper | marvin:lab3 [2008/10/09 21:33] (current) – rieper | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | === Lab rapport 3=== | + | ===== Lab rapport 3===== |
+ | **Date:** September 19th 2008\\ | ||
+ | **Duration of activity:** 8-12\\ | ||
+ | **Participants: | ||
- | **Lesson 3**\\ | + | **Purpose** In this lesson we will use the NXT sound sensor to turn the LEGO 9797 car into a sound controlled |
- | + | ||
- | In this lesson we will use the NXT sound sensor to turn the LEGO 9797 car into a sound controlled | + | |
car. | car. | ||
- | **Test of the Sound Sensor**\\ | + | ====Test of the Sound Sensor==== |
The purpose of this test is to make a simple test of the microphone sensitivity to sound coming from different directions. The microphone is placed in the center of a closed room of 3x3m and a key bundle is used as our sound generator. It was found that clapping with our hands made greater variance to the sound level, while the noise from the key bundle proved to give quite constant sound levels. By the view of the microphone one would expect it to have more sensitivity to sounds coming from and the test proved that these expectations were true. In order to read the input of the microphone the code was modified to write the maximum value on the display whenever both the escape key and the right key on the NXT had been pressed. | The purpose of this test is to make a simple test of the microphone sensitivity to sound coming from different directions. The microphone is placed in the center of a closed room of 3x3m and a key bundle is used as our sound generator. It was found that clapping with our hands made greater variance to the sound level, while the noise from the key bundle proved to give quite constant sound levels. By the view of the microphone one would expect it to have more sensitivity to sounds coming from and the test proved that these expectations were true. In order to read the input of the microphone the code was modified to write the maximum value on the display whenever both the escape key and the right key on the NXT had been pressed. | ||
- | The modifications of the program is shown here: | ||
+ | The modifications of the program is shown here: | ||
<code java> | <code java> | ||
SoundSensor s = new SoundSensor(SensorPort.S1); | SoundSensor s = new SoundSensor(SensorPort.S1); | ||
Line 35: | Line 36: | ||
{{: | {{: | ||
- | The maximum readings were 93, and normal background noise were measured to 5-10. | + | The maximum readings were 93, and normal background noise were measured to 5-10.\\ |
+ | Looking at the readings, the microphone characteristics can be seen to resemble that of a cardoid characteristic (stronger at the front, weaker at the sides, end weakest behind). | ||
+ | |||
+ | ====Sound Recording==== | ||
+ | We ' | ||
+ | The sound was that of Bent speaking directly into the microphone, thus utilizing the entire span of the power spectrum.\\ | ||
+ | The recorded samples can be seen below (MatLab plot):\\ | ||
+ | {{: | ||
+ | Notice that the time resolution is poor due to the low sampling time. When playing back in Wave format it is impossible to recognize any spoken words. Yet the microphone is suitable for recognizing clapping sounds and the like, where you basically just want to measure the amplitude level. | ||
+ | |||
+ | |||
+ | ====Sound Controlled Car==== | ||
+ | Below is the source code we used for testing the sound control: | ||
+ | <code java> | ||
+ | public class SoundCtrCar | ||
+ | { | ||
+ | private static int soundThreshold = 80; | ||
+ | private static SoundSensor sound = new SoundSensor(SensorPort.S2); | ||
+ | |||
+ | private static | ||
+ | { | ||
+ | int soundLevel; | ||
+ | |||
+ | Thread.sleep(500); | ||
+ | do | ||
+ | { | ||
+ | soundLevel = sound.readValue(); | ||
+ | LCD.drawInt(soundLevel, | ||
+ | LCD.refresh(); | ||
+ | } | ||
+ | while ( soundLevel < soundThreshold && ! Button.ESCAPE.isPressed()); | ||
+ | } | ||
+ | |||
+ | public static void main(String [] args) throws Exception | ||
+ | { | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | | ||
+ | while (! Button.ESCAPE.isPressed()) | ||
+ | { | ||
+ | waitForLoudSound(); | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | Car.forward(100, | ||
+ | |||
+ | waitForLoudSound(); | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | Car.forward(100, | ||
+ | |||
+ | waitForLoudSound(); | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | Car.forward(0, | ||
+ | |||
+ | waitForLoudSound(); | ||
+ | LCD.drawString(" | ||
+ | LCD.refresh(); | ||
+ | Car.stop(); | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | The code was modified to break out of the innermost loops upon '' | ||
+ | We tested the program with a threshold of 50, but the car activated the next state by the noise of the motors.\\ | ||
+ | We measured the motors running at about 40-60 in noise level, and changed the threshold to 80 accordingly. | ||
- | {{:marvin:Lab3-micsamples.png}} | + | Click the image to see a movie of the sound controlled car in action:\\ |
+ | [[http:// | ||
- | [[http:// | + | ====Conclusion==== |
+ | The microphone was sensitive towards the direction of the sound, see the figure under "Test of the Sound Sensor" |
marvin/lab3.1221817756.txt.gz · Last modified: 2008/09/19 11:49 by rieper