Developed as a module for the 'Smart Cradle' IoT Project at KAU in 2023
This Arduino-based system, using an ESP32 microcontroller(DOIT ESP32 Devkit V1
) and a sound sensor (SZH-EK033
), detects when a baby is crying and communicates the detection status to AWS IoT Core. The system employs advanced sound pattern analysis and frequency analysis to accurately identify a baby's cry.
This system was developed as part of the Smart Cradle project, specifically to implement the baby crying detection logic used in the project.
The system uses the AWS_IOT library from the arduino-esp32/AWS_IOT
directory in the ExploreEmbedded Hornbill examples for AWS IoT Core integration. This library facilitates communication between the ESP32 device and AWS IoT Core, allowing for the real-time transmission of baby crying alerts.
The readDecibelLevel()
function measures the sound level using the SOUND_SENSOR_PIN
. The sound threshold (SOUND_THRESHOLD
) determines if the sound level is high enough to be considered for further analysis.
The system analyzes audio signals to detect crying patterns. The detectSoundPattern()
function is key to identifying spikes in sound intensity, which are indicative of a baby's cry. This function uses the following parameters:
MIN_SPIKES
: Minimum number of spikes to consider a sound as a crying pattern.MAX_SPIKES
: Maximum spike count to differentiate between a baby's cry and continuous noise.SPIKE_THRESHOLD
: The threshold for detecting a spike in intensity.
The isBabyCrying()
function performs Fast Fourier Transform (FFT) to analyze the sound frequencies. It determines if these frequencies fall within the baby crying frequency range (defined by BABY_CRY_FREQ_MIN
and BABY_CRY_FREQ_MAX
) and exceed a set intensity threshold (INTENSITY_THRESHOLD
). Key constants in this function are:
BABY_CRY_FREQ_MIN
andBABY_CRY_FREQ_MAX
: Define the frequency range typical for a baby's cry.INTENSITY_THRESHOLD
: The minimum intensity level to consider a sound as a baby's cry.MATCH_THRESHOLD
: The number of frequency matches within the range to consider as a baby crying.
Set your WiFi credentials (ssid
and password
) as per your setup. Adjust the sound sensor sensitivity and thresholds as required for your environment.
The system operates continuously, analyzing ambient sounds. It uses the combination of sound pattern detection and FFT analysis to determine if a baby is crying. The results are printed on the Serial Monitor for observation.
- Calibrate the
SOUND_THRESHOLD
,SPIKE_THRESHOLD
,INTENSITY_THRESHOLD
, andMATCH_THRESHOLD
according to your specific environment and sensor placement. - The system's accuracy depends on the correct calibration and placement of the sound sensor.