Public Transit is often considered a pain to use for many people. Services are infrequent, bus or train compartments are packed in rush hour and many people do not like being in crowds. We wanted to find a way to make public transit a little more convenient and more appealing, so that more people would use it to commute and to travel.

One issue that noticed was that on long bus or train journeys on public transit, it may not be easy to find seats, especially across a long underground train. We decided to build a series of seat sensors, intended to be installed on every available seat, which would be able to send data to a database which can provide live availability for seats across an entire bus or train. Riders of public transit could use our web app to find which seats are unoccupied, to find which compartments of a train are less crowded, and using data from already existing real-time bus trackers, get much more information to make their ride more smooth and pleasant.

Hence, we developed the web app Seatz to mitigate mild inconveniences caused by the lack of available seats on public transit services, and hope it can be scaled up and expanded to be implemented in real life.

What it does

We developed a seat sensor which can detect the presence of a passenger in any given seat in a bus, and can distinguish between a person and any inanimate objects. We collect and report data on the amount of available seats on a bus, in the form of an web app interface which shows users the total number of seats are available, how many priority seats are available for seniors and the physically handicapped, as well as exactly where the available or occupied seats are on the bus on a diagram.

How we built it

The system is split into three parts, consisting of the hardware part, the back-end parts, and the front-end software.

For our hardware, we developed a seat sensor using aluminum foil which works using a library that works with capacitance. A human body can store charge, and a metal surface can also store charge, but it is conductive and can be wired to an arduino. Using the Capsense library we installed, arduino can measure how much time the capacitor takes to charge, giving an estimate on the capacitance. Since there are different values for capacitance for the human body (which can discharge through clothing or non-metallic material) and other objects, we can distinguish between passengers and other objects that may be placed on seats. On the arduino is a WiFi module which can send data to the back-end database, sending a boolean associated with a seat ID to the database to be processed further.

On our back-end, we used a node.js server to receive websocket requests sent from the WiFi module, and then display which seats are occupied after reading those results.

On the webapp, each seat is mapped and functions are used to display or hide a red cross based on whether or not the seat is available. Users are directed to a specific web interface based on the type of device they use, which optimizes how the diagram is displayed.

Challenges we ran into

We ran into difficulties setting up and configuring the Wi-Fi module for the Arduino, and we also had difficulties in communicating information from the sensor to the web application through the server, to be able to get live information that would update automatically on the webapp.

Accomplishments that I'm proud of

We are proud that we were able to develop a cheap, lightweight, and thin seat cover that housed the sensor. The low cost of materials would allow us to mass produce these seat covers to service every seat on multiple buses. This attribute also gives us the flexibility to expand into other sectors of public transit. Since the seat cover is practically paper-thin, the installment of the product is non-invasive to both the structural integrity of the seats, as well as to the comfort of the passengers.

What we learned

We all learned a lot through developing the system. The WiFi module was one of our biggest challenges, but once we figured out how to configure it and send data, it allowed us to further develop our system. There were many components to our project, and our members worked on different components at different times, switching to what they did best and also supporting one another to figure out how each component works, so each of us learned a bit about the different parts, such as setting up hardware, programming the arduino and WiFi module, working a database, as well as developing the webapp using javascript and html.

What's next for Seatz

Our prototype for now works for only one seat, so there are lots of possibilities for development. Since the setup is low cost and easy to setup and scale up, we can install seat sensors on all the seats on a bus, and repeat that for all the buses on a route. We could expand to trams, trains, or ferries, and potentially make it available for the whole transit network. As mentioned earlier, we could incorporate more information on our webapp by displaying data from other existing services that track real-time locations of buses, anticipated travel time, and transfer recommendations.

Share this project: