Published

# Car Alarm Tracker

Create a device that will send you a text when your car's alarm goes off.

IntermediateFull instructions provided3 hours2,749

## Things used in this project

### Hardware components

 Raspberry Pi 3 Model B For testing purposes only
×1
 Raspberry Pi Zero Wireless
×1
 USB 2.0 Mini Microphone for Raspberry Pi 3
×1
 Micro-USB to USB Cable (Generic)
×1
 Hologram Global IoT SIM Card
×1
 Hologram Nova
×1

## Code

### Hologram Texting

Python
This is the program to run. I saved it as \home\pi\test.py on my raspberry pi.
from Hologram.HologramCloud import HologramCloud
import audioop
import pyaudio
import time

credentials = {'devicekey':'12345678'}
hologram = HologramCloud(credentials, network='cellular',authentication_type='csrpsk')

# this is the threshold that determines whether or not sound is detected. The higher the number, the louder it is
# according to
THRESHOLD = 10000

p = pyaudio.PyAudio()

chunk = 22050

# 'rate' specifies the desired sampling rate in Hz (samples/seconds)
# 'channels' specify the desired number of channels
# 'input' specifies whether this is an input stream - defaults to False
# 'output' specifies whether this is an output stream - defaults to False
# 'frames_per_buffer' specifies the number of frames per buffer (samples)
# the 'frames_per_buffer' divided by the 'rate' will determine how long the period we're sampling will be
# For example: 22050/44100 = 0.5 seconds so each data chunk will be for 0.5 seconds
# stream will open
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=44100,
input=True,
frames_per_buffer=chunk)

# countAboveThreshold specifies the number of chunks that are above the threshold value
countAboveThreshold = 0

# countSinceLastThreshold specifies the number of chunks that have occurred since the last threshold
# if the countSinceLastThreshold is above a certain number, we reset the countAboveThreshold
countSinceLastThreshold = 0

# wait until the sound data breaks some level threshold
while True:
# data is the chunk of information from the current stream
# take the rms value of that and set it to be rms
rms = audioop.rms(data,2)
# if rms is greater than the threshold level
#print rms
if rms > THRESHOLD:
# increase the countAboveThreshold
countAboveThreshold += 1
# reset the countSinceLastThreshold
countSinceLastThreshold = 0
# if the countAboveThreshold is above 5 (that means that there have been 2.5 seconds of a loud noise)
if countAboveThreshold > 5:
# reset coundAboveThreshold
countAboveThreshold = 0
# reset the countSinceLastThreshold
countSinceLastThreshold = 0
# Send a text message alerting the user that their car is going off and they should look into it
delay(5)
hologram.sendSMS("+112345678","Your car's alarm is currently going off")
delay(5)
#break

# if the countAboveThreshold is above 0 that means that we have heard at least one loud noise
if countAboveThreshold > 0:
# increase the countSinceLastThreshold by 1
countSinceLastThreshold += 1
# if the countSinceLastThreshold is above 9 that means that there has been at least 5 seconds since the last loud noise
if countSinceLastThreshold > 9:
# reset the countAboveThreshold. This indicates that the loud noise wasn't long enough to be important
countAboveThreshold = 0
# reset the countSinceLastThreshold
countSinceLastThreshold = 0


## Credits

### Alex Merchen

20 projects • 32 followers
I'm an EE with a Masters in ECE. I like building things.