The fundamental concept is dead simple: the closer an obstacle gets to you, the higher the pitch of the buzzer. Move away, and the pitch drops. Your ears do the spatial processing so your eyes don't have to. I designed this as a hands-free proximity navigation assistant for visually impaired individuals, but getting from a breadboard circuit to something that actually feels intuitive in real life turned out to be an intense lesson in physics and human perception.
The hardware revolves around an Espressif ESP32 microcontroller paired with an HC-SR04 ultrasonic sensor. The sensor fires an ultrasonic trigger burst and clocks the return echo: distance = (echo_time * 0.034) / 2 in centimeters. Straightforward enough on paper. The tricky part was the acoustic mapping. My first firmware draft used linear mapping between distance and PWM buzzer frequency. In testing, it sounded completely unnatural. A 10 cm change when you're 20 cm away felt completely different from a 10 cm change at 100 cm, making distance estimation impossible. That's because human auditory perception of pitch is logarithmic, not linear. The moment I recalculated the buzzer PWM duty cycle and frequency along a logarithmic curve, the acoustic feedback clicked. Equal physical distance increments suddenly translated into equal perceived pitch intervals, giving the user a subconscious sense of depth.
The second headache was acoustic jitter. Ultrasound bounces off door frames, clothing, and angled surfaces, creating multipath reflections and spurious distance spikes. Without signal filtering, the buzzer stuttered frantically like a broken Geiger counter. I wrote a sliding-window rolling average filter in C++ that buffers consecutive echo readings, discards statistical outliers, and smooths the frequency output without introducing perceptual lag.
The rest of the system rounds out with a 16×2 character LCD wired via an I2C backpack for real-time visual telemetry, a local HTTP dashboard served directly by the ESP32's web server over WiFi, and a Blynk IoT mobile interface that allows users or caretakers to remotely mute alarms, adjust proximity alert thresholds, and toggle night mode.
The most humbling part wasn't the C++ logic—it was the raw physical wiring. The ESP32 has dozens of multiplexed GPIO pins with overlapping ADC, DAC, and strapping constraints, while the HC-SR04 operates at 5V logic and the ESP32 runs at 3.3V. I wired the circuit wrong twice, fried an ultrasonic transducer, and spent hours tracing pinout datasheets before getting a rock-solid breadboard prototype.
I built this during July 2025 at the IIIT Delhi Electronics Design Carnival (EDC), hosted by the ECE Department among B.Tech students and seasoned engineers. Two intensive weeks of circuit design, PCB layout, IoT integration, 3D printing, and rapid prototyping. My Certificate of Completion was signed by Prof. A V Subramanyam, Head of Department of ECE, alongside program industry partners Keysight Technologies, LPKF, and Bergen Associates.