The Problem

There is currently no way to automatically track the physical movements of someone who may not cooperate.

  • Monitoring movement within a building or compound still requires a human escort.
  • Unless you want to physically lock an ankle bracelet to somebody's body...
  • One of our hackers has frequently dealt with this problem in the military and at NASA.
  • Other applications for confirmed movement tracking include transitional mental health facilities and elder care.

The Solution

  1. The Myo armband performs gesture recognition based on electrical signals in the arm, so it is capable of confirming that it is attached to a human body.
  2. Bluetooth networks are an emerging technology for tracking location indoors, where their rapid signal attenuation is useful for computing distance.
  3. Combining the two, we have established a tracking system that can track an individual and alert security if they wander or attempt to remove their tracking device.
  4. Our tracking network is composed of a Dragonboard and Raspberry Pis which divide the building into sectors using bluetooth.

Challenges we encountered:

  1. Extracting Myo “ARM OFF” signal without SDK: This was unexpectedly the hardest part of our project. The Myo SDK is designed to communicate using the Myo Dongle. We needed to communicate directly with the Dragonboard's and Pis' bluetooth because we didn't have enough Dongles. Jonathan turned the hacking up to 11, reverse engineered the Myo’s undocumented communication protocol, and directly encoded and decoded binary transmissions to the device.

  2. Usher integration: We used the Usher API to provide two-factor authentication for our security monitoring interface.

  3. Computing distance from signal strength: Approximate distance from a known point can be computed using Bluetooth signal strength. We experimented with this and developed a handoff algorithm for confirming that a device is located between two points. Unfortunately, we can't measure signal strength and the ARM-OFF signal at the same time without Myo Dongles for each Pi, so we chose to use the ARM-OFF signal instead in the demo network.

  4. Logic for determining the tracker’s status based on varying inputs: We used Python to develop data structures and algorithms for determining the device's position and status in the network.

  5. Networking many bluetooth devices: Once a Dragonboard/Pi is activated, it needs to run forever, so we built in robust error handling and run our client as a service automatically on startup. We learned a lot about networking connecting all of the devices.

  6. Dragonboard: We almost gave up on getting the dragonboard to work, but then realized our HDMI port was damaged and then SSHed into the dragonboard. A dragonboard is now integrated as one of our nodes,

  7. Establishing a Flask webserver: This was our first time using Flask, and it’s awesome.

Share this project: