Wednesday, March 26, 2014

Geofences Implemented

Good news, just got the Geofences API working in the application!

The Geofence API allows me to create a circular region around a LatLong point, with any radius size I want. The purpose of these objects to note when the user enters and exits the geofence, sending notifications when they do based on what type of movement it is. This will allow me to note when the user enters a region where they have a directional change, and changes their instruction  to the next one when they leave the fence.  Since the users location is not as exact as one would like, the best way to help them stay on their route is to use a combination of the previous code and these Geofence objecs.

The application now creates regions with a radius of 12.5 meters around each turning/directional point in the route, allowing the transition of instructions to be more fluid/exact. Initial tests proved to show good data/results, but more testing will need to be done to help make it more exact.

Wednesday, March 12, 2014

Better, Stronger, More Expensive Mold-Making

I made an attempt at a very basic silicone cast of a cane handle, which came out a little more, eh.. "masculine shaped" than we were expecting, probably because the casting material was cheap and the method was homebrew.  It seemed that cutting corners wasn't worth it, so I purchased a proper silicone mold-making kit and found a better guide, so before next week I will hopefully have a well made negative mold, along with a new cast (hopefully fully cured).



Arduino Micro, Text to Speech, and Bluetooth

This week I started off looking into getting things to work with the Arduino Micro. I was not able to get the commands sent between the Micro and the phone. This is most likely because of a Bluetooth issue. We are thinking of switching to a Nano as it may be simpler. I also changed the Bluetooth system around so that it now still displays the map even if the phone is not able to connect to the Bluetooth device. The text to speech was also changed so that it will now only give voice directions if the Bluetooth device is not connected.

Tuesday, March 11, 2014

Mapping

So I've gotten mapping and determining the users location working a bit better than it was last week. The problem with it not presenting the route correctly has been figured out, and it looks like now I just need to implement the Geofencing (to determine turns), and the button listener for the volume button over break, as well as refine the turn system...

Onward and upwards, I suppose.

Tuesday, March 4, 2014

Waterproofing Prototype

I've been researching homemade silicone molding because it's cheap, available, and doesn't require any exotic tools. So far, I've make a negative mold of the cane handle, and I will be casting a prototype model this week. I've also embedded a vibration motor in silicone to test the resonance of the material, and so far it seems like a decent solution to waterproofing.




Voice Input and finding addresses based on voice.

This week I implemented the voice to text feature, that then tied into a search for a related address/location. The result of that is then pushed into the routing library and then is designated as the users destination.



It has integrated VERY easily, and I'm quite happy with how well it is working in the grand scheme of things. I've noticed we need to create a 'smart' choice option, so that it will choose the closest address of that name, so that it doesn't guide the user to Nebraska from Iowa.

 Now for more testing! 

Voice Guidance: Text to Speech

 After a few bumps, I was able to get the text to speech working. I kept running into the error of not being bound to the TTS engine but after fiddling around with the initialization I was able to get it to work. I tested it with a sample string and it worked so I am confident that it will work with directional strings as well. Assuming all goes well, this will complete the voice guidance so this will allow me to delve into other areas such as trying to get things to get things to work with the Arduino Micro or ways to reduce phone battery consumption while the app is running.

Wednesday, February 26, 2014

Bug fixes

Week 6 was meant to be a week for fixing bugs. The only bug that I could find in the Bluetooth portion was that the app would crash if the Bluetooth module was not in range when the app launched. Next week I will begin working on text to speech implementation.

Tuesday, February 25, 2014

Android map update

So good news, theoretically I have fixed the accuracy issue that the application was plagued with before. The bad news is that I can't test it, as the routing call isn't working for some reason. I believe it's an issue with my phone rather than with the code, since that portion of the code is the same as it was before me fixing the general code-base. I will hijack Maarij's phone to test it relatively soon.

More modifications to be done include: Cleaning up the code, creating new functions (to help clean code), and working on new features.
I've found a decent battery charging chip for 1-2 LiIon battery packs, allowing our device to utilize the Micro as well as being rechargeable.

Tuesday, February 18, 2014

Ben's Log: Bluetooth to Hardware

We now have the Arduino properly communicating with the Android phone via Bluetooth. This is an important step for hardware - it is now possible to pass each direction to the Arduino to be interpreted and translated into motor signals.

Maarij's Log: Communication working

The Bluetooth now works with communication between the Android app and the Arduino. The Android app sends a character over Bluetooth indicating which direction to head and the Arduino reads this via the Bluetooth module. Based on what is read, the Arduino will tell the user which direction to go. Currently only directional commands are sent via Bluetooth but in the future we may implement more sophisticated commands for better guidance.

Ken's Log: Fixed the maps

So I've been working on relational directions for the user. This meant applying the routing API to determine the users next move, as getting the users bearing. Using a very VERY loose implementation of relational bearings, the application now knows which way to point the user in the case of 'Head X', with X being North, South, East, West.

Other than that, we have it interacting with the arduino, which actually reads in the data. So we've got that going for us.

Tuesday, February 11, 2014

Hardware Update

I have four coin-style vibration motors running simultaneously through the Arduino Micro, toggled on and off via TIP31 transistors. The motors are (temporarily) powered by the Arduino's digital pins, but will soon have a separate power source to avoid damaging the microcontroller. The motors are attached to the fingertips of a glove for the time being, but will eventually be more permanently mounted on a soon to be decided surface.



(sorry for the late post)

Routing update

Today I implemented routing to an extent using an open-source library, linked here. So far so good, however I need to work on incorporating it smoothly. After this, I need to implement the speech recognition/search API to allow the user to route between their current location and their destination.

Other then that, nothing to report on this front.

Sunday, February 9, 2014

Android to Arduino Sending Data

Android to Arduino is now successfully sending data. The screenshot below shows that the data is being sent successfully and that it is also broken down by characters. This is because we plan on controlling the direction by using numbers 1 through 4 to decide which direction it will be vibrating. We may decide to change this later when we add more features.



Tuesday, February 4, 2014

Arduino Hardware Update

 I have tested both the vibrating motor and the solenoids we have with the Arduino.  As of now, I think we should go with the motors because they don't heat up nearly as much as the solenoid. The only problem with them is that they're operation can be impeded with very little touch. Perhaps low powered solenoids would be an option, assuming their default position is retracted.




Monday, February 3, 2014

Android Bluetooth API

I have found a couple resources for performing Bluetooth operations with Android. The API can be found on the Android site and there were some examples there as well. As of now, I have set up a way to send messages but the Bluetooth does not completely work. I believe I will have it done sometime early this week though.

Updating and centering on the user on the map

I've started to work on routing/input for the user; however at the time of this post it was in no shape to post about. So this post is just an update on the user's location being centered on the map, and how it accurately follows the user's position when walking. You can see a screenshot of the application below, and how it is centered on my current location (upon writing this).


A possible alteration to this would be to reduce the amount of location request calls done in a minute to help save battery life, however that will most likely be implemented later on in development. 

Tuesday, January 28, 2014

Communication is communicating

Arduino Bluetooth to a putty terminal on my laptop was successfully set up. Right now it is set up so an on board LED can be turned on or off otherwise the Bluetooth module echoes back what it received.






Monday, January 27, 2014

It's below zero, but at least I have the maps up and working.

This week I worked on getting the android map application up and running; which will be used purely for testing and development(as those without sight won't need a map layout, and we want to save energy with our application).

It was somewhat of a hassle to get the Google Maps API up and running, as I needed to correctly set up the Google Play Services API, which requires an authorization key, as well as downloading/installing extra libraries.

The IDE I am using to develop this portion of the project is the Eclipse Android Development Suite, which is a modified version of Eclipse that Google has released. It includes a android SDK manager, as well as a virtual device emulator. It's pretty convenient overall.

My next step in this process will be to be able to input an address and have a route from the users current position to the target location be created.

Tuesday, January 14, 2014

Our Milestones, Calendar, and Task Assignments.

Here's the link to our schedule in Google Docs!

Our Calendar

Hope you all enjoy, and have a warm evening!