Skip to content

GTA-UFRJ/sensingbus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SensingBus

Urban Sensing Through Bus-Based Mobility

This project is a bus-based sensing system for Smart Cities. In a broader view, sensor nodes, embbeded onto buses, gather data about the city. Such data is delivered to users using access points mounted into the bus stops of the city. Data is presented to users using a cloud service. The whole schema is shown below:

System layers

The schema is abstracted in three layers: sensing, flushing, and publishing. These layers are mapped into the architecture of the current project.

Architecture

This project has three main layers, as shown:

System layers

The Sensing layer is responsible for gathering raw data from the city. It is composed by wireless sensor nodes embbeded onto urban buses of public transportation.

The Flushing layer receives raw data directly from the Sensing layer and sends it to the Publishing layer, through the Internet. It is composed by access points, mounted on bus stops.

The Publishing layer receives data from all the nodes in the Flushing layer and serves data to the users, using an API and a web interface. This layer is composed by a server running on a distributed cloud.

Each layer is a component of this project, as explained in detail throughout the next sections.

Sensing layer

The Sensing layer is a mobile wireless sensor network that gathers data from the city, using buses as mobility platform. Every node in this network is capable of gathering data, storing it and send it to the Flushing layer.

There should be one node per bus.

The Sensing Node

Every sensing node is cabable of gathering data, storing and transmitting it to a Flushing node. The Sensing Node follows an architecture presented here and ilustrated here:

System layers

The devices used to implement each module are on teh following table:

Module Device Manufacturer
Controller Arduino UNO R3 Arduino
GNSS Receiver GS-96U7 Guangzhou Xintu
SD Card Interface GS-96U7 Guangzhou Xintu
Wireless Interface ESP8266 Espressif

The sensor bank has the following sensors:

Sensor Device Manufacturer
Humidity DHT11 DFRobot
Temperature DHT11 DFRobot
Light Intensity GL5528 GBK Robotics
Rain Intensity YL-38 100y

The Controller and Wireless Interface are programmable devices. In the folder "sensing" of the current project, the codes used in each of them can be found.

The Flushing layer

The Flushing node

The Flushing layer allows a descentralized pre-processing of data from Sensing layer. The Flushing layer receives the data from Sensing layer and analize the data to identify defective data, then deletes it. After that, this layer is responsible to send this data to Publishing layer. Beside that, this layer tries to ensure autheticity and acumulation of data.

The Flushing node

Every flushing node is responsible of receives data from sensing nodes, delete defective data, do a acumulation data and sends to Publishing node.

The devices used to implement this node are on the following table:

Module Device Manufacturer
Controller Raspberry Pi model B Raspberry Pi Foundation
Wireless Interface Wi-Pi element14

The Flushing Nodes runs a code responsible to execute the flushing layer's functions. This nodes use bus station to receive. In the folder "flushing" of the current project, all codes used in this layer can be found.

The Publishing layer

The Publishing layer receives the data from Flushing layer and publishes the data to the users. Users can obtain data in two ways:

  • Receiving data through an API;
  • Visualizing data on a map generated by a web service.

The Publishing layer is implemented as a single Publishing node, explained in the following session.

The Publishing node

The Publishing Node is a web service powered by Django. The visualizing platform is implemented with Bootstrap and with Google Maps API. The Publishing Node runs on a cloud platform, described here.

The Publishing API

The publishing API offers the retrieval of measurements using filters. A user requests measurements with the HTTP GET method. The GET parameters are the filters applied to the data being queried. The possible filters are:

  • bus_id: Selects measurements from the bus identified by bus_id;
  • start_time: Selects measurements older than start_time;
  • end_time: Selects measurements newer than end_time;
  • sensor_name: Selects measurements from specified sensor;
  • min_lat: Selects measurements with latitudes bigger than min_lat;
  • max_lat: Selects measurements with latitudes smaller than max_lat;
  • min_lng: Selects measurements with longitudes bigger than min_lng;
  • max_lng: Selects measurements with longitudes smaller than max_lng;

An example url is www.your-website.com/data?bus_id=123&sensor_name=temperature

User's Manual

To use the visualization tool, the user just needs access the url: https://sensingbus.gta.ufrj.br/visualize/. The user can select a filter and see this measures at the map.

Instalation Manual

To install the system, follow the instructions on the README.md located at every layer directory.

About

Urban sensing with bus-based mobility

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published