Difference between revisions of "S14: Asset Management and Location System"
Proj user7 (talk | contribs) (→Hardware Design) |
Proj user7 (talk | contribs) (→Hardware Design) |
||
Line 277: | Line 277: | ||
<!--Discuss your hardware design here. Show detailed schematics, and the interface here.--> | <!--Discuss your hardware design here. Show detailed schematics, and the interface here.--> | ||
The following diagram captures how all the modules of the application device were interfaced: | The following diagram captures how all the modules of the application device were interfaced: | ||
− | [[File:cmpe244_s14_am_hardware_schematic.png|center|frame|700px|Hardware Schematic]] | + | [[File:cmpe244_s14_am_hardware_schematic.png|center|700px|frame|700px|Hardware Schematic]] |
The diagram below shows the breadboard prototype of the final product: | The diagram below shows the breadboard prototype of the final product: | ||
− | [[File:cmpe244_s14_am_breadboard_prototype.png|center|frame|700px|Breadboard Prototype]] | + | [[File:cmpe244_s14_am_breadboard_prototype.png|center|700px|frame|700px|Breadboard Prototype]] |
As mentioned earlier, the tile device was simply a Bluetooth module connected to a coin cell battery. | As mentioned earlier, the tile device was simply a Bluetooth module connected to a coin cell battery. |
Revision as of 17:39, 22 May 2014
Contents
S14: Asset Management and Location System
Abstract
The ultimate vision of this project was to develop an asset management and location system to compete with The Tile App. There were two major components to the Tile solution: the tile and the application. The tile was small low-power embedded system that could be attached to an object. The application was primarily a user interface that provides visual feedback to guide a user to a specified tag.
For this project, the tile is simply a Bluetooth module power by a coin cell battery. The application, on the other hand, consists of:
- SJ One development board
- LCD
- Bluetooth module
- GPS module
The system used the Bluetooth RSSI value to determine proximity of the application device to the tile device. SJ One board communicated proximity to the user via a histogram that was displayed on the LCD. If the tile device was within the expected proximity, the GPS coordinates of the tile device were written to a file on the SC card. A webpage was developed which would read this file and plot the tile location of know tiles on Google Maps.
Complete feature set of Asset Management and Location System enabled the following:
- Locating/tracking a tile
- Adding/registering a new tile
- Removing a tile
- Listing all the registered tiles
- Updating the RTC
- Displaying the last known location of tiles on Google Maps
Objectives & Introduction
Objectives
- To track a tile location within 100 meters
- To add/register tiles to user
- To remove tiles from user tiles database
- To display a histogram of tile vicinity
- To display last known location on Google Maps
Team Members & Responsibilities
- Akash Ayare - Feature development
- Pardeep Badhan - Feature development
- Talha Ilyas - Packaging and feature unit testing
Schedule
Show a simple table or figures that show your scheduled as planned before you started working on the project. Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals. The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.
Week | Date | Planned | Actual |
---|---|---|---|
1 | 3/6 | Create Wiki page and add the schedule of the project. | Wiki page was created and preliminary scheduling was added. |
2 | 3/13 | Research on Bluetooth and Zigbee radio technologies. | Compared Bluetooth and Zigbee range and power consumption.
Although Zigbee has slightly better power consumption and better range, decision was made to use Bluetooth for the project to keep similarity with Tile project. |
3 | 3/20 | Order parts and research RSSI | Parts were not ordered mainly due to the number of options available; more research was still needed.
Instead, the team registered with GitLab. Project "lpc1758_freertos" was checked in as the base project. Furthermore, the team trained on Git workflow and branching methodology. |
4 | 3/27 | Interface Bluetooth Modules. | Ordered Class 1 Bluetooth version 2 modules. |
5 | 4/3 | Achieve basic Bluetooth communication. | Basic connectivity achieved.
Hercules Setup software was used to connect to the Bluetooth Serial port. |
6 | 4/10 | Fetch RSSI value from the Bluetooth module. | Discovered there are two ways to fetch the RSSI value. One mode worked better over the other, but it was slower. In a open room, with one of the modes, there wasn't significant change in RSSI value when proximity changed. The second mode provided better distance estimation, but it was slower to fetch RSSI value in this mode. |
7 | 4/17 | Experiment how this value changes with proximity. | Started interfacing with the Bluetooth module with SJ One Board instead of Hercules.
Also, added a task to receive Bluetooth data and display it on console. |
8 | 4/24 | Implement visual indicator (histogram) corresponding to RSSI values. | Interfaced LCD screen with SJ One Board.
Added tasks to control the user menu and monitor switches, and user menu infrastructure that:
|
9 | 5/1 | Packaging, battery installation, and testing. Expansion of feature-set | Enhanced features:
|
10 | 5/8 | Demo | The demo was postponed to 05/22
Enhanced features:
|
11 | 5/15 | Fixed bugs:
Enhanced features:
| |
12 | 5/22 | More feature development:
|
Parts List & Cost
Item | Part Name | Part Cost | Qty | Total Cost |
---|---|---|---|---|
1 | LPC1758 SJSU One Board | $80 | 1 | $80 |
2 | SparkFun BlueSMiRF Gold] | $64.95 | 2 | $209.90 |
3 | SparkFun Bluetooh Mate Gold | $64.95 | 1 | $274.85 |
4 | Serial Enabled 16x2 LCD | $24.95 | 1 | $299.80 |
5 | Venus GPS Logger with SMA Connector | $59.95 | 1 | $ |
6 | Antenna GPS Embedded SMA | $11.95 | 1 | $ |
7 | Mini Rocker Switch | $ | 1 | $ |
8 | Slider Switch | $ | 2 | $ |
9 | Tile Enclosure | $ | 2 | $ |
10 | Tracker Enclosure | $ | 1 | $ |
10 | 9V Battery | $ | 1 | $ |
11 | 9V Battery Enclosure | $ | 1 | $ |
12 | 24.5mm Coin Cell Battery | $2.95 | 2 | $ |
13 | 12mm Coin Cell Battery | $ | 1 | $ |
14 | Micro SD Card | $ | 1 | $ |
Design & Implementation
The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.
Hardware Design
The following diagram captures how all the modules of the application device were interfaced:
The diagram below shows the breadboard prototype of the final product:
As mentioned earlier, the tile device was simply a Bluetooth module connected to a coin cell battery.
Hardware Interface
SJSU One UART3 is interfaced with the Bluetooth module at 115200 bps with RX and TX queue depth of 1000 elements, respectively using the supplied UART3 driver. The following table depicts the connections:
SJSU One | Peripheral | ||
---|---|---|---|
Power | 3.3V | VCC | Bluetooth |
Ground | GND | GND | |
N/A | CTS-I | RTS | |
UART3 | TX | RX - O | |
RX | TX - O | ||
Power | 3.3V | VCC | LCD |
Ground | GND | GND | |
UART2 | TX | RX |
Software Design
Asset Management and Location System consists of three tasks:
- Switch Task - Monitors the switches via which the user navigates the user menu
- GPS Task - Fetches the current location from the GPS module
- Asset Management Task - Controls the user menu navigation and Bluetooth module.
The interface between these tasks is described in the figure below:
The Asset Management task manages the user menu based on events received from the Switch task. The user menu can be navigated in the following manner:
Implementation
LCD
As mentioned earlier, the LCD class represented the LCD module. The main objective of this class was to determine what was displayed and format the data that was displayed. Furthermore, it was capable of operating in two modes:
- Real Mode: In this mode, all the data was printed to the LCD.
- Emulation Mode: In this mode, all the data was printed to UART1. The feature allowed multiple members of the team to work on the project even though the team owned single LCD module.
LCD module was represented by singleton design pattern:
Bluetooth
As the name implies, Bluetooth class enabled communication with the Bluetooth module. It provided the following functionality:
- Enter Command Mode: The Bluetooth module used for this project was capable of operating in two modes - 1) data mode and 2) command mode. In the data mode, the Bluetooth module worked as a data pipe and simply converted Bluetooth signals to UART and vice verse. In the command mode, however, the received data (either via Bluetooth or UART) instrumented the Bluetooth module to an operation such as change configuration ("set" commands, return current configuration ("get" commands), etc. The Bluetooth module doesn't have any physical indication of whether the module is in data mode or command mode. To address this issue, this feature issued a "get" command to retrieve the current firmware version of the module. If the expected firmware version was read, it was known that the module was in command mode. If not, an attempt was made to enter the command mode and read the firmware version number. This process repeated until either it eventually exceeded the number of expected tries or it command mode was entered.
- Enter Data Mode: This feature was not used for this project.
- Send Command: This was simply UART TX.
- Receive Data: This was simply UART RX.
The Bluetooth module was represented by singleton design pattern:
Tile Device
The information of each device was stored in the following class. The stored information consisted of MAC address, tile name (identifier selected by the user), Bluetooth name, RSSI value, and class of service identifier.
Asset Management
Bluetooth Inquiry
One of the most critical components of the project was Bluetooth inquiry. In hindsight, this functionality should have been implemented in Bluetooth software module. Doing so would change the interface, but the core functionality of the inquiry would remain the same. The Bluetooth inquiry can be best implemented with a state machine. The following diagram lists all the states and the transitions. To enable the user to cancel the inquiry at any time, the Bluetooth inquiry spanned multiple function calls. This required using local static variables to preserve the state. Of course, this means inquiry can't be launched from multiple threads. This is, however, the design that was chosen since Asset Management system has only one main thread.
User Menu
The update of user menu which was triggered by switch press or Bluetooth inquiry state change was made non-blocking operation. This allowed the user the ultimate control of the system behavior. For example, it allowed the user to cancel a Bluetooth inquiry and navigate to the previous menu while Bluetooth inquiry was under way. In order to support this, however, each menu had to preserve it's state across multiple function calls.
- Main Menu: This menu just displays all the options that were available to the user.
- Add Tile Menu: This menu initiated a Bluetooth Inquiry to gather list of devices in the vicinity. The much of the logic for the Bluetooth In
Testing & Technical Challenges
Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.
Include sub-sections that list out a problem and solution, such as:
My Issue #1
Discuss the issue and resolution.
Conclusion
Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?
Project Video
Upload a video of your project and post the link here.
Project Source Code
Send me your zipped source code and I will upload this to SourceForge and link it for you.
References
Acknowledgement
Any acknowledgement that you may wish to provide can be included here.
References Used
List any references used in project.
Appendix
You can list the references you used.