Joe Knows is a beacon-driven app and sensor system which enables visually impaired individuals to navigate public transit safely and effectively.
This is a beacon and iOS app system for users of the Metro West Regional Transit Authority (MWRTA) who are visually impaired. The system guides users to various stations which are closest to them, first using audio direction feedback, then upon getting closer to the desired destination, vibration feedback based on proximity. The app is screen reader accessible and high contrast to make it easy to use for users who are visually impaired.
The MWRTA currently lacks a tool to empower its community members who are blind or visually impaired. The RIDE, the MWRTA's door-to-door paratransit service, offers a solution to people who can’t drive but is still inconvenient for those who wish to travel independently. This system is named Joe Knows, after Joe Weisse, a visually impaired commuter who often travels into Boston. It was created to enable Joe and others like him to accurately and safely navigate to various public transit stops without the aid of others.
- Determine a user's current location and visualize it on a map
- Display closest transit stops to a user
- Navigate to given location to within a foot of actual transit stop destination (as opposed to the typical 30 foot radius from GPS navigation)
- Navigate to the user's home to within a foot of intended destination
- iOS 8.0+
- XCode 10.2.1+
- Clone this repository to your local machine using
https://github.com/maiam6242/Joe-Knows.git
- Open the project in XCode and install the MapKit framework (if it not already installed)
Since Joe Knows is an app for iOS, this process must be done on a Mac computer
This system is built to be used with Adafruit Feather 32u4 Bluefruit LE beacons, although with a very small amount of modification can be adapted to be used with any BLE emitting devices. Any devices must be added to the fillMap method of the Beacon Set class (shown below) with a location name, unique identifier and longitude and latitude coordinates.
static func fillMap(){
BeaconSet.beacon["Adafruit Bluefruit LE 3A6A"] = beaconData(n: "Kansas Street and Route 27 Bus Stop", a: "3A6A", c: -71.356469, f: 42.292805)
BeaconSet.beacon["Adafruit Bluefruit LE 3A92"] = beaconData(n: "Natick Center Commuter Rail", a: "3A92", c: -71.347075, f: 42.285806)
BeaconSet.beacon["Adafruit Bluefruit LE 321C"] = beaconData(n: "Natick Common Bus Stop", a: "321C", c: -71.347132, f: 42.284214)
BeaconSet.beacon["Adafruit Bluefruit LE 84BA"] = beaconData(n: "Moran Park/Downtown Bus Stop", a: "84BA", c: -71.347826, f: 42.285716)
BeaconSet.beacon["Adafruit Bluefruit LE 0703"] = beaconData(n: "Coolidge Gardens Bus Stop", a: "0703", c: -71.347077, f: 42.280864)
BeaconSet.beacon["Adafruit Bluefruit LE 9851"] = beaconData(n: "Senior Center Bus Stop", a: "9851", c: -71.337094, f: 42.287485)
BeaconSet.beacon["Adafruit Bluefruit LE 6E45"] = beaconData(n: "Joe's House", a: "6E45", c: -71.353893, f: 42.282489)
}
Once these values are changed or values are added, the software will change to provide directions to the specified new beacon locations.
It is also important to note that we powered the beacons with 500 mAh Li-Polymer Batteries. These batteries are durable and can operate within a temperature range of -20 degrees Celcius to 60 degrees Celcius. Each battery can also power a beacon for a few years.
Said beacons and batteries can be placed in these enclosures. These enclosures serve to provide a friendly and fairly weatherproof exterior. They are 3D printed from black PLA filament. For extra protection, we also placed the beacons and batteries in small plastic bags inside of these enclosures.
We would love to hear feedback on this project! Feel free to email us or submit an issue. If you are interested in contributing to this project or chatting about it in general, please don't hesitate to email us here!
Maia Materman @maiam6242
Annie Tor @ator1
Corey Cochran-Lepiz @coreyacl
Thanks to Caitrin Lynch and Ela Ben-Ur for their support throughout this process. Also, thank you to Paul Ruvolo for helping us navigate Swift. Most importantly, thank you to Joe and Fran Weisse for co-designing this system with us and giving us feedback throughout this project.