Elevator congestion is a daily occurance in NUS' Residential Colleges (RCs). With only three elevators to service over 540 pax, students often spend upwards of 2 minutes waiting for their elevator to arrive. To reduce this, residents are advised to practice good elevator etiquette by not pressing consecutive floors, and instead climbing up/down one floor to their destination. However, this etiquette is not always followed, to the annoyance of many residents.
What it does
Our project seeks to address poor elevator etiquette by using social pressure and minor daily annoyances to motivate residents not to press consecutive floors in the elevator.
The elevator's travel patterns are tracked using a microcontroller-controlled camera. Images of the elevator's display panel (@ Level 1 Lobby) are streamed through an artificial intelligence software (optical character recognition - OCR) to detect which floors the elevator stops at. Offending floors (those who frequently press consecutive floors) are identified, and the following actions are taken:
- The floor numbers are "named and shamed" via a telegram bot (that can be added into the RC's chat groups), and
- "Annoyance devices" are installed on each floor beside the lift. On offending floors, the device will play annoying tones and flash warning lights whenever a resident passes by, hence physically reminding them to practice proper elevator ettiquette.
How we built it
The system is built around the Espressif 32 (ESP-32/ESP-Cam), a series of low-cost microcontrollers which are programmed using Arduino and Platformio IDE.
- An ESP-CAM (camera-enabled ESP32) is mounted at the Level 1 lift lobby. It streams a video of the lift's LCD display (showing the current floor) over WiFi to a computer/server.
- Via Python, images are pulled from the stream and cleaned in preparation for OCR. Subsequently, pyTesserect's OCR is used to identify the current floor from the image.
- Python is also used to automatically identify the offending floors, control the telegram bot, and activate the "annoyance devices".
Challenges we ran into
- ESP32 static IP issues due to Android hotspot gateway IP allocation
- Integration between image streaming, OCR recognition, microcontroller functions and telegram bot
- Issues with machine learning models due to font of digits on elevator display being unrecognizable by the classifier
- Breadboard issues with transmitting power, resolved by changing breadboards
Accomplishments that we're proud of
- Creating a simple algorithm to track consecutive floors where elevator stops
- Successfully debugging multiple hardware issues
- Developing a telegram bot to receive data from ESP microcontroller and pump out information regarding the offending floor
- Adopting pytesseract's OCR Machine Learning and various image processing techniques to successfully track elevator floors from its digital display
- Integrating OCR image processing, ESP microcontroller programming and HTTP networking into a single project within 24h
- All in all, venturing out of our comfort zones! As Year 1s, we've all learn alot and had plenty of fun working on this project :)
What we learned (on top of the above)
- Integrating not just hardware and software, but also individuals (working together as a team!)
- Debugging can be as annoying as our product - if you fail to be socially responsible...
- It's important to click "Save & Continue" in Devpost
- Developing a culture of respect and consent in elevators in NUS Residential Colleges to complement our product