C code for microphone in msp430?

Hey you guys, so I am working on a basic home security system and basically constructing a home security system which will communicate with an app with 4 sensors, sound (amplified microphone), movement(motion sensor), door movement (accelerometer) and temperature (internally attached in the msp430). Can you help me in incorporating the sound detection with the microphone using adc? I used acc for the accelerometer but I don't know if the code is the same for the sound detector. Can anyone send me a sample code as to how to make the microphone detect the sound and convert it to digital signal in order to trigger for sounds in a close range?

--------------------------------------- Posted through

formatting link

Reply to
speedofsound1
Loading thread data ...

You have to decide the characteristic(s) of the sound in which you are interested.

I.e., it is unlikely that the presence of *any* sound should result in an alarm indication -- there's always some background "noise", etc. Are you looking for *loudness* to be indicative of a problem? Or, very high pitch (like glass shattering)? Or, short, percussive (something breaking -- vs. a truck driving by)? etc.

Unlike an accelerometer where you can assume "any motion above some low threshold" constitutes an "anomalous condition", you *expect* sound in your environment (unless you are locating the microphone INSIDE a large (essentially soundproof) *safe*!

Reply to
Don Y

Yes! the microphone will be situated inside a 3D printed plastic case (not soundproof though) I know about the background noise which was one of my main concerns, but let's say I want noises like incoming footsteps, door knocking, or door unbudge. I was thinking about this earlier too and I think it would be more convenient to make a program that records when someone breaks into the door and sends that recording to a third-party application, which would save me all the trouble about the background noise. Unfortunately, I got a microphone sensor without the specs and only a circuitry schematic, which will make it difficult to program my ADC registers.

--------------------------------------- Posted through

formatting link

Reply to
speedofsound1

A mic is usually a sound energy to voltage transducer. I'll assume it is for my reply. The ADC will sample the mic voltage at a rate that can accurately reconstruct the sound environment based on your requirements (constant 8K SPS or higher I would imagine). You can use DSP to filter, enhance, compress, extract interesting features, etc.

Ambient sound is usually complex and noisy. Finding the signal in the soundscape is challenging. Sending the recording upstream is simpler.

JJS

Reply to
John Speth

The only thing you need to be concerned about with the ADC is the level of the mic and the sample rate which depends on the frequencies you wish to record. The mic will likely need an amplifier to give a large enough signal for the ADC to sample with enough resolution. Overrange is also a problem. This will only be dealt with by experimenting with your sound source.

I am not clear on how a third party app would do any better job than your own code unless you can find a "security system" app. Is there such a thing?

--

Rick
Reply to
rickman

Detecting footsteps is probably unrealistic. Door knocking is possible, but the sound of knuckles on wood (or whatever) is very different from, e.g., the sound of a brass knocker.

Apart from sonar transducers, microphones per se aren't much used in professional systems - their only routine use is to detect glass breaking, which is a sharp transient that is relatively easy to pick out.

George

Reply to
George Neuner

You're still ignoring the complex nature of "sound" and how amazingly discriminating abilities of our (animal) auditory systems!

I had a pull-chain in each of the bathrooms, here. The thinking being that you could pull on the chain (attached to a switch) to call for assistance ("Help! I've fallen and I can't get up!")

This proved ineffective: you need many of them to cover the case where a person has fallen onto the floor and *can't* get up (or crawl to the nearest chain -- e.g., falling in the *tub* vs. falling by the washbasin, etc.).

Instead, I've opted for a ceiling-mounted speaker with a coaxial microphone (just because it's easier to mount in that configuration).

As it's a bathroom, there is always "significant" background noise: running water in the sink or shower, toilet flushes, exhaust fan, etc. So, you can't just set an arbitrary "level" and use that as a trigger event ("loud noise means distress"?).

Instead, I just use a crude level detection scheme in an attempt to gauge the *current* background noise (sound) level. Any increases of "significant duration" (i.e., longer than a f*rt get the software's attention.

Yet, I still don't use this to unconditionally "call an ambulance" (etc.). Instead, the "occupant" is queried (remember the "speaker"??) as to whether or not they are *calling* for assistance. I don't have to recognize speech (what if the occupant is a visiting guest whose voice I've never encountered before?). All I have to do is prompt: "Are you in distress? Grunt once for YES, twice for NO" (or similar). If there *seems* to be cause for alarm, I can automatically shut of the water (silencing the sink, shower and toilet, in a matter of moments) and repeat the query.

[Eventually, I'll be able to shut off power to the exhaust fan, as well, to remove that source of noise]

But, in this case, the sound that I am trying to detect is COOPERATING WITH ME. You, OTOH, are trying to detect something that inherently does NOT want to be heard! I.e., you have to take extra measures to draw the potential signal from the noise.

Reply to
Don Y

Hi George,

[I survived the trip... just barely! :< ]

Unless you can use some signaling event as a trigger to pass the

*raw* signal (streamed) to something with enough intelligence to be able to understand if that's the sound of a branch scraping against a door, a pet walking near the pickup *or* a burglar rummaging through the drawers.
Reply to
Don Y

Update:

I worked on a code which should be lighting the LED at a specific noise, I decided to not get picky on this one and use a simple ADC application on the mic, due to my time constraints. Unfortunately, the littly blinky that is supposed to happen is not happening at all... the light stays lit all the time... can someone check this please and tell me what could be wrong?

#include

unsigned int adcvalue = 0;

void configureADC(void);

int main(void) { WDTCTL = WDTPW + WDTHOLD; //Stop the Watch dog

P1DIR |= 0x41; //Enabled P1.0 and P1.6 P1OUT = 0x41;

BCSCTL1 = CALBC1_1MHZ; //Set range BCSCTL2 &= CALBC1_1MHZ; //SMCLK = DCO = 1MHz

P1SEL |= BIT3;

configureADC(); __enable_interrupt();

while(1) { __delay_cycles(20000); ADC10CTL0 |= ENC + ADC10SC; //Sampling and conversion start

adcvalue = ADC10MEM; //Read from the ADC

if(adcvalue > 512) P1OUT = 0x40; else P1OUT = 0x01;

}

return 0; }

void configureADC(void) { ADC10CTL1 = INCH_3 + ADC10DIV_3; ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE; ADC10AE0 |= BIT3; }

--------------------------------------- Posted through

formatting link

Reply to
speedofsound1

It looks like you are enabling conversion complete interrupt but you don't have an interrupt handler. That's a guaranteed lockup. You've got more homework to do.

Reply to
John Speth

....

Oh your coursework peoject is not complete and late

--
Paul Carpenter          | paul@pcserviceselectronics.co.uk 
    PC Services 
  Raspberry Pi Add-ons 
 Timing Diagram Font 
 For those web sites you hate
Reply to
Paul

What's *wrong* is your failure to understand the nature of "audio" signals -- and how a microphone responds to them (which, in turn, relates to how you *monitor* the microphone's output to identify that in which you are interested.

Would you look at the *color* of a balloon if trying to determine it's inflated pressure?

Would you *count* soil particles if you were interested in quantifying its moisture content?

Don't start writing code until you know what -- and HOW -- you are trying to do! (would you purchase thousands of dollars of lumber to build a house before you knew how to do so? What lumber would be required? Whether lumber was a suitable building material for the location of interest?)

Reply to
Don Y

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.