Abstract
Indoor Positioning is an open-source Internet of Things (IoT) project. This project is an initiative to make indoor positioning by using Raspberry Pi, .NET Core and Windows 10 IoT Core for the project lesson (SWE599) in my master program at Bogaziçi University. Estimating the location of a Bluetooth capable device in an indoor environment has many practical purposes. Either for a smart warehouse with autonomous robots carrying the goods around, or for a classic multi-storey office with employees moving from one place to another, or for a vacation compound where crowded groups of tourists can go to swimming pools, restaurants, and other activity locations with a wearable computer (e.g. It is built using C#, Raspberry Pi. Key capabilities include: IndoorPositioning.Beacon.Core: It is a .NET Standard 1.4 library project to constitute a standard for the devices; IndoorPositioning.Beacon.Bluetooth: It is a .NET Standard 2 library project to implement the standard that is; IndoorPositioning.Raspberry.Scanner: It is a .NET Core 2.1 console application project using the. The complete source code is publicly available on GitHub under the MIT License, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.
1. Introduction
Estimating the location of a Bluetooth capable device in an indoor environment has many practical purposes. Either for a smart warehouse with autonomous robots carrying the goods around, or for a classic multi-storey office with employees moving from one place to another, or for a vacation compound where crowded groups of tourists can go to swimming pools, restaurants, and other activity locations with a wearable computer (e.g. a smart bracelet, or a necklace), instantaneous information about where these people are at a certain time period, and where they are moving to, will definitely help organizational planning. Tracking employees on how much time they spend outside their workspace would be an important performance metric especially in production lines. In the case of tracking tourists, the hotels can adjust their security, and other services according to the movement of their guests. For the smart warehouse, location estimation has to be so precise that a robot should never place things in wrong shelves, nor it should look for items that do not exist at the current location of the robot.
Indoor positioning can be performed using a set of stationary Bluetooth access points.
Location estimation inside a building is harder than doing it with GPS. One of the major approaches in indoor positioning is to use a fingerprinting database, trained with multiple signal level measurements at specific locations, covering the entire area, with respect to each available access point. The other major approach is to use triangulation, which is based on coordinated location estimation using at least three access points, and signal arrival times. The arrival time can be calculated at the stationary access points, or the mobile device itself. This method can be roughly considered as an indoor alternative to the GPS solution.
2. Objective
This project is an initiative to make indoor positioning by using Raspberry Pi, .NET Core and Windows 10 IoT Core for the project lesson (SWE599) in my master program at Bogaziçi University.
This project demonstrates how C#, Raspberry Pi can be applied to a real-world Internet of Things (IoT) problem.
3. Key Features / Modules
- IndoorPositioning.Beacon.Core: It is a .NET Standard 1.4 library project to constitute a standard for the devices
- IndoorPositioning.Beacon.Bluetooth: It is a .NET Standard 2 library project to implement the standard that is
- IndoorPositioning.Raspberry.Scanner: It is a .NET Core 2.1 console application project using the
- IndoorPositioning.Consumer.Api: It is a .NET Core 2.1 WebAPI project for the access points (Raspberry PIs)
- IndoorPositioning.Web: It is a .NET Core 2.1 MVC project for users to see the positions of the agents and
- The application running on Raspberry PIs (IndoorPositioning.Raspberry.Scanner)
- The application that Raspberry PIs connect and transmit the RSSI values they collect (IndoorPositioning.Server)
- The user interface to manage all of the functions of the system (IndoorPositioning.UI)
4. Technology Stack
5. System Requirements
General requirements for this technology stack — check the README for exact versions.
- .NET SDK / Visual Studio
- Git (to clone the repository)
6. Installation & Setup
git clone https://github.com/taneresme/indoorPositioning.git
cd indoorPositioningFull setup instructions are in the project README.
7. Future Enhancements
Suggested extensions you can add to make this your own project.
- Add a mobile dashboard using Blynk or Firebase
- Store readings in a cloud database for history charts
- Add alerts via SMS / Telegram when thresholds are crossed
8. Viva / Review Questions
Common questions examiners ask for projects in this domain.
- Which microcontroller / board and sensors are used and why?
- How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
- Where is the sensor data stored and visualised?
- How is power consumption managed?
- How would you secure the device and its communication?
9. Source Code & License
This project is developed by taneresme and published on GitHub under the MIT License. Please follow the license terms and credit the original author when you use or modify this code.
Want to build this as your internship project?
Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.
Apply for Internet of Things (IoT) Internship