Smarter, Data Driven, Cities

Download Final Report

UrbanSense is...

...an urban sensing platform that aims to take advantage of the reach and regularity of public transportation to collect data about a city. Using a off-the-shelf microcontrollers for computation, Bluetooth Low Energy for communication, and machine learning for analysis, we created a modular system that can seamlessly integrate arbitrary sensor functions through hardware peripherals.


Local governments are more and more starting to rely on data to drive their investment decisions in infrastructure, public transit, and real estate. However, current offerings offer fragmented solutions, often involving expensive infrastructure costs

Sensors + Functions

Pothole Detection

An IR depth sensor + accelerometer detect potholes and irregularities in roads

Passenger Volume

A door-mounted IR sensor measures passenger departure and dispersion at each bus stop

Air Quality

Rooftop particle sensors measure air pollution and the existance of toxic chemicals.

Noise Pollution

A rooftop sound detector captures the noise levels in different parts of the city.

Technical Specifications

2.4 GHz Wifi


Flask (v0.12)
Open Source Python Web Server
Lightweight low dependancies
PostgreSQL Server
Python-supported ORM
Community Support
Open Source write optimized time series database
Supports aggregation queries such as mean and std dev
Student Discount Cloud Hosting
PostgresQL + Flask support


Raspberry Pi 3
1.2GHz 64-bit ARMv8 processor BCM43143 WiFi chip
Built-In BLE Support
3-Axis Accelerometer
3-Axis with Selectable Measurement Range Ultra Low Power
SPI Digital Interface
High Resolution: 1 mg/LSB $14.95
Sound Detector
Analog Amplitude Output
Binary Sound Indication
Digital Pinout
GPS + RTC Breakout
-165 dBm sensitivity, 10 Hz updates, 66 channel
Built-In Coin-cell RTC
Built-in datalogging
Optical Dust Sensor
11mA current consumption
Detects toxic/non-toxic particles
Output density 0.5V/0.1mg/m3 $11.95
Long-Range IR Sensor
Output: .8V at 15cm to 0.4V at 150cm
Supply Voltage 4.5 and 5.5VDC


Competitive Analysis

Urbiotica’s 24x7 Noise Monitoring Network offers a solution to autonomously and continuously monitor a cities noise pollution levels. However, unlike our system that uses buses to increase the coverage area, Urbiotica's system is constrained by where sensors are initially placed.

Jaguar's Pothole Detection System offers car owners a built-in early detection system to alert drivers about incoming potholes, broken pipes, and other irregularities. Although Jaguar's system is more technically advanced, it does not offer the same crowdsourced metrics and information about a city's road conditions.

AutoScan, a $1000 vehicle mounted pothole detection device developed by BU students, allows cities to collect valuable information about the quality of it's roads. Although more technically sound than our prototype, UrbanSense has many more city monitoring functions for a fraction of the cost.


Functional Requirements

Type Agnostic Data Collection
The main data collection system should be able to recieve data from a variety of sources irregardless of the datatype or sensor purpose.
Pothole Detection
This subsystem must be able to detect potholes using IR and Accelerometer data and apply noise and FFT filtering to determine the geolocation of potholes.
Air Quality
This subcomponent uses the particle sensor to monitor air quality levels and apply noise and FFT filtering to determine relative levels of air pollution.
Noise Level Monitoring
Uses the sound detector sensor to monitor relative noise levels throughout a city.

Non-Functional Requirements

Eliminate the cost of expensive infrastructure spending by piggy backing off of the existing public transportation system.
Since the devices will be deployed on busses with little human intervention, they should be about to efficiently use power and save battery life.
Create modular hardware and software components to allow addition of any extra sensors or functions that may be needed
Since the devices will be deployed on busses with little human intervention, the system must be able to report sensor readings with minimal data loss.


Every piece of sensor data originates at a sensor and is sent over to the Atmega via the specific protocol for that sensor, ADC for IR and sound, and SPI for the accelerometer. From there, the Atmega sends the data to the Rpi via I2C. The reciever on the Pi caches a local copy in Redis as well as offloading another copy to the server. The server then saves it to our time series InfluxDB. The celery jobs then see new data is available and start to stream process it, saving it in Postgres after completion. Lastly, the map and metrics server queries Postgres to finally display the data in a meaningful way.

Use Cases

Road Repair

- by utilizing the pothole detection feature on the platform, city officials can see the road conditions through their city. The heatmap highlights places where road conditions need to be improved.

Air Pollution Detection

- by utilizing the air particle detector on the platform, city officials can see air pollution levels throughout a city in order to enforce stricter emission regulations. (not implemented)

Noise Pollution Detection

- by utilizing the sound detector on the platform, city officials can see noise levels throughout a city in order to enforce stricter sound restrictions. For example, banning car horns after 9 pm.

Team Members

Aatish Nayak

Riya Savla

Ridhi Surana

Chris Wei