Inspiration: This project was inspired by my 94-year-old great-grandma, who still enjoys going outside and staying active with her cane. She values her independence, and our family always wants her to keep that freedom while knowing she is safe when she’s out alone. We created the Smart Safety Cane to give families peace of mind. If the cane ever falls, possibly indicating that the user has fallen, it automatically alerts loved ones and sends the GPS location through a connected app. The goal is not to replace the cane she already trusts but to add simple technology that helps her stay safe while continuing to live life the way she always has.
How We Built It: Microcontroller: ESP32-S3 DevKitC-A Wakes from deep sleep when the TTP223 touch button is gripped. Fall sensing: ADXL335 analog accelerometer (tilt + impact). Audio alerts: DFPlayer Mini + 8 Ω speaker (tracks 0001/0002/0003.mp3 for pickup, warning, SOS). Location: Adafruit Ultimate GPS v3; we only used GPS TX → ESP32 RX2 (GPIO 18) to read coordinates. App: basic Thunkable app to show alerts and a GPS coordinate on SOS. Power: 9 V battery → buck converter (5 V) → ESP32/GPS/DFPlayer. Caps for stability: 100–220 µF at DFPlayer, ~100 µF at GPS, bulk cap on buck output. Slide switch in series on the positive line. 1 kΩ series resistor on ESP32 TX → DFPlayer RX. Key connections (we used these): Touch OUT → GPIO 10 ADXL335 X/Y/Z → GPIO 1/2/3 (ADC) GPS TX → GPIO 18 (RX2) DFPlayer TX/RX → GPIO 44/43 (ESP32 RX0/TX0), with 1 kΩ on ESP32→DF RX Speaker → DFPlayer SPK1/SPK2 ESP32 3.3 V → touch + ADXL335; 5 V → GPS + DFPlayer
What It Does (Logic We Implemented): Grip = wake: Touching the handle wakes the ESP32. Fall detection: We use an impact gate (spike in acceleration) and an orientation gate (tilted/lying) together. 20-second window: If the cane falls, it plays a warning sound and gives 20 s to pick it up. SOS: If it’s not upright in 20 s, we send an SOS message with the GPS coordinate to the app and play the SOS sound. Auto-rest: If there’s no activity after a short period, it returns to deep sleep.
What We Learned: How to read analog acceleration (ADXL335) and use it for tilt + impact without a gyro. How to do deep sleep + external wake on the ESP32-S3 with a touch sensor. Practical power tips: local capacitors near GPS/DFPlayer matter, and a buck converter is a must from 9 V. How to keep the GPS simple by wiring only GPS TX → ESP32 RX. Building a quick Thunkable app to display alerts and location.
Challenges We Faced: App hurdles: We struggled with the app at first; Thunkable helped us get a basic alert/coordinate view working. Power stability: DFPlayer audio caused dips; the 100–220 µF cap at DFPlayer fixed resets. Back-feed surprise: Plugging in USB powered the 5 V rail and lit the buck’s LED; we adjusted usage and wiring to avoid issues. GPS indoors: Getting a fix indoors was slow; testing near a window worked better. Pin mapping confusion: Avoiding USB-related pins and confirming GPIO 17/18 (UART2) and GPIO 43/44 (UART0) saved time. False triggers: We tuned the impact threshold and tilt angles so normal walking didn’t trigger a fall.
Built With
- arduinoide
- ble
- chatgpt
- gemini
- thunkable

Log in or sign up for Devpost to join the conversation.