Internet of Things project for Microlocation, Geofencing and iBeacons
Java Swift Other
Clone or download
ipapapa Update
Latest commit 889cb80 Dec 8, 2017


Build Status

An end-to-end Internet of Things (IoT) software package for Micro-Location, Proximity Aware services and Geofencing using Apple's iBeacons, mobile app (Android and iOS) and a set of Cloud services. The project is a collaboration effort across multiple institutions advised by Dr. Ioannis Papapanagiotou -


  • Purdue University, West Lafayette IN, USA
  • NC State University, Raleigh NC, USA
  • University of New Mexico, Albuquerque NM, USA

Technical Summary

IoT-MicroLocation Flow

The Microlocation system utilizes Bluetooth Low Energy (BLE) technology of iBeacons to locate a user. Multiple beacons are placed in a room and based on trilateration algorithms the user's mobile device can be located. The iBeacon packets broadcasted have the essential data of each beacon such as UUID, Proximity, RSSI, Major and Minor numbers embedded into the payload of each packet. The iPhone receives this data and through HTTP POSTs the mobile device puts this data into a JSON object and sends it to a server whether it be local (Apache Tomcat) or in the cloud (Bluemix). The server is where the power house is where it processes the data coming through and based on RSSI values from multiple beacons coming in it will trilaterate the user's position and then run a particle filtering algorithm to make it more accurate. Once the user is located the server will reply back in the form of a JSON Response Object and the iPhone will do a iBeacon packet inspection to find the x and y coordinates that the server has calculated for the user's location. The iPhone plots this onto the map of the room and the user therefore will know where they are located. Now knowing the location of the user, the server simultaneously sends a signal to a MySQL database indicating that the user is nearby a device. The Raspberry Pi polls the MySQL Database for the things that it knows about constantly until something changes in the database. Once a change has been made (i.e. a user is near or far from a device) the device state changes and turns on or off.


The Wiki contains further information about additional components that can be added to the project.

Examples and Demos

Research Papers

A couple of research papers of how iBeacons can be used for MicroLocation or proximity utilizing the software of this repository:

A detailed survey about this area:

A few other related papers by the team:


alt text