Benjamin OhMiriam Choi
Published

A Comparative Study of Smart Citizen Kit Data in Residential

Using Smart Citizen Kits, we collected and analyzed real-time environmental data from a residential neighborhood near airport and runway.

IntermediateWork in progress55
A Comparative Study of Smart Citizen Kit Data in Residential

Things used in this project

Hardware components

Smart Citizen Kit 2.3
Fab Lab Barcelona Smart Citizen Kit 2.3
×1

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

Smart Citizen Kit Case – Top Shell

This top cover is designed with precisely aligned ventilation and sensor exposure holes to ensure accurate environmental readings from the Smart Citizen Kit. The openings allow air, light, and sound to reach the sensors unobstructed, preventing measurement distortion while maintaining protection from larger debris. Additional cable pass-through holes are included for secure wiring and data connection without compromising the enclosure’s integrity.

Sketchfab still processing.

Smart Citizen Kit Case – Bottom Shell

The bottom base features integrated hinge mounts that align with the top cover for easy assembly and access to the internal components. These hinges provide a stable pivot point, allowing the case to open for maintenance or calibration without detaching completely. The design ensures durability during outdoor deployment and facilitates convenient reattachment of the Smart Citizen Kit module.

Sketchfab still processing.

Code

Noise Data Analysis Script (runway_vs_residential_noise.py)

Python
This Python script processes and compares noise data collected from two monitoring sites — a runway-adjacent area (Nicole Drive) and a residential area (Changi Village). It classifies each measurement as flight or non-flight, calculates the average decibel levels for both conditions, and visualizes the results with a bar chart. The output clearly illustrates the contrast between continuous high noise exposure near the runway and intermittent disturbances in residential zones.
import pandas as pd
import matplotlib.pyplot as plt

# Load datasets
dataset1 = pd.read_csv("runway_noise.csv")
dataset2 = pd.read_csv("residential_noise.csv")

# Add a column: is it flight time or not?
dataset1["is_flight"] = dataset1["flight_status"].apply(lambda x: "flight" if x != "none" else "non-flight")
dataset2["is_flight"] = dataset2["flight_status"].apply(lambda x: "flight" if x != "none" else "non-flight")

# Compute averages
avg1 = dataset1.groupby("is_flight")["decibel"].mean()
avg2 = dataset2.groupby("is_flight")["decibel"].mean()

# Combine into one dataframe for plotting
compare_df = pd.DataFrame({
    "Runway Area": avg1,
    "Residential Area": avg2
})

# Plot
compare_df.plot(kind="bar", figsize=(8,6))
plt.title("Average Decibel Levels: Flight vs Non-Flight")
plt.ylabel("Average Decibel (dB)")
plt.xticks(rotation=0)
plt.legend(title="Location")
plt.tight_layout()
plt.show()

Credits

Benjamin Oh
1 project • 0 followers
Miriam Choi
2 projects • 12 followers
Designer, Teacher, Fab Academy global evaluator, Lego Enthusiast

Comments