iOS
The goal of our app is to convey spatial interaction and localization in an easy to use intuitive UI/UX.
Replication of the iOS App
To build this application on your own, we recommend the following procedure
- Download xCode onto your local machine
- Clone our repository and navigate to the iOS folder.
- Open the iOS folder in xCode
- Build the application onto your iOS device and open it there. This makes it compatible to our accessory via BLE.
Wireframe
Our Wireframe consists of 3 UIs that give the User different experiences to visualize their OpenTag. Haptic and auditory feedback will be enabled for distances near the OpenTag to give helpful navigating cues to the user.
Home
Map
Using the Map Kit, this UI displays the OpenTag as a pin.
AR
Using the AR Kit, we utilize the camera to give the user a different perspective on spatial awareness and localization.
Current Demo
Our application is still a work-in-progress. We are left with adding the Camera AR Assistance!
Currently, we are using the NINearbyAccessorySample demo as a UI in order to test the establishment of the Nearby Interaction Protocol specified in the Apple Nearby Interaction Accessory Protocol Specification - Release 2
States:
- Connectedd to ‘Unknown’
- Requesting Configuration Data from Accessory
- Accessory session started.
- Session with ‘Unknown’ timed out.
As shown, a communication data link is established between the phone and the nrf52840 using Bluetooth. The UI changes based on the state of the protocol. In our case, the UI is stuck in a loop due a blocker in the firmware which is under development.
Serial Monitor
The serial monitor is used to monitor the serial bus of the nrf when logging in the app. Here we can see the corresponding loop that is present in the demo.
Debugger
Our debugger is attached to the UI and allows us to see the Accessory Configuration Data that is received from the Qorvo device. It then shows us the Phone’s Configuration Data that is written to the DWM3000. Throughout development, the debugger has helped us log errors and ensure data is properly read and written on both ends of the system.