EMMA

A smart walking stick designed to assist visually impaired users with navigation and safety. The project focused on integrating sensors, programming, and user-centered design to enhance mobility.


Project type: Group

Tools used

C#

Python

CSS

Beaglebone Black

Smart Wellbeing System

With the press of a button, the device would display a joke on the OLED to entertain the user. The jokes would be chosen from my jokes bank, so no same joke will be displayed twice.​

Upon the press of the second button, a friendly tune will be played to entertain the user. 

smart wellbeing

Smart Sedentary Alarm

When the keylock is turned, a timer will start. When it rings, the buzzer will beep to indicate that they should take a break. They can turn the keylock again to restart the timer.​

The device is installed on the walking stick to warn users when they should stop to take a break

Sedentary

Smart distance tracker

​The distance tracker is designed to be able to sense oncoming dangers via the use of a proximity sensor. ​​

As something gets closer to the distance tracker, it will display the danger and proximity in its respective color and number of bars lit up. The buzzer will also begin buzzing to indicate danger if the hazard gets too close.

Distance tracker

Smart Pillbox System

The Smart Pill Box is intended to tell the user when they would have to take their medication.​​​​The REED sensor is intended to detect when the lid of the pill box is opened, so it can indicate that the user’s medication has been taken.

An 8x8 display is also used to indicate the duration left until the next set of medication needed to be taken.​​​

Smart Pillbox system

The Backbone

Beyond the front-end design, EMMA relies on clear, structured logic. The following snippets show how I handled data collation, competitor analysis, and translation of data.

Our Objectives

- Enhance Safety​​
Detect potential hazards and provide real-time alerts to prevent accidents. 

- Promote Healthy Activity​​​​
Encourage walking and other physical activities by making moving around less arduous ​and safer for them.​​ 

- Look Out For Them
Allow​ for caretakers and others to check in on their well-being from a simple website.

- Support Independent Living
Empower elderly individuals to be more mobile and independent and live without the need for ​constant supervision.

User Persona

Handling the input and displaying the output

For the PCB board to function properly, it has to understand the data of the input and translate it into an output that the elderly is able to understand. Let's take the distance tracker as an example.

BarGraph2Display(G_Spi1, G_NumberOfBar)
DigitalValue = ADC.read("P9_37")
if DigitalValue != 0:
    AnalogVoltage = (DigitalValue * 1.8) * (2200 / 1200)
    DistanceCM = 29.988 * pow(AnalogVoltage, -1.173)
    print("Distance(cm): %f" % DistanceCM)
    try:
        sio.emit('BBBW2Event', {'data': DistanceCM})
        print("Data sent!")
    except:
        print('Unable to transmit data.')
    pass
    if DistanceCM < 40:
        G_NumberOfBar = 10
    elif DistanceCM < 50:
        G_NumberOfBar = 8
    elif DistanceCM < 60:
        G_NumberOfBar = 6
    elif DistanceCM < 70:
        G_NumberOfBar = 4
    elif DistanceCM < 80:
        G_NumberOfBar = 2
    else:
        G_NumberOfBar = 0

Competitor Analysis

​For our product to be successful, we got to have an edge over our competitors in the market. We decided to make EMMA a low cost but multi-functional walking stick, so that our consumers will be able to afford a good quality aid device.

Through this short exercise, I learnt elements of product design, cost optimization, and strategic decision-making and making informed decisions so as to have an edge over our competitors. This is incredibly important as we always want our product to be the best in the market.

Competitor Analysis

Collate all data together

To allow caregivers to have a full view of all the sensors working together, I had to find a way to display all data from all the sensors at the same time, so caregivers are able to see if the elderly is in any type of distress.

@sio.event
def connect():
    print('Connection established.')
@sio.event
def disconnect():
    print('Disconnected from server.')

while True:
    try:
        sio.connect('http://192.168.72.132:5000')
        break
    except:
        print("Try to connect to the server.")
        pass

By connecting all sensors to a common IP address, all sensors can be displayed together.

Final Thoughts

Lessons Learned and Insights Gained: Challenges, Skills, and Growth from This Project

Lessons learnt

Skills demonstrated