Friday, July 25, 2014

Weeks 3-7 Update

It's been a while, hasn't it? So here is where we are:

Last post, I stated that we were planning on using a Python-based program to communicate with a microcontroller  that would control a set of LEDs and a touch screen device. In theory, this idea would work. However, communicating through a microcontroller using Python to talk to a touch screen proved way too difficult and definitely not worth the effort, so we bailed on the idea.

What we wanted was simple integration, so we looked at other methods of implementation. What we really wanted was an all-in-one sort of method so we could limit the number of devices to the smallest number possible for simplicity's sake. We considered other languages like Arduino which would make communication with the microcontroller simple. However, keeping and controlling a fairly large database with Arduino is not a simple, and the touch screen was not as user-friendly as we would have liked. So what all-in-one device could we work with?

We decided to work with Android using a Java platform, and here is why:
1) An Android device has a touch screen
2) The Android device runs the code
3) The Android device would only need to control LEDs (as far as outside devices go)

We purchased a Google Nexus 7 tablet to use. We believe that creating an Android app for our project will prove to be the most effective.

So here comes the painful part. As you may have noticed, we have not committed any code onto git thus far, which is a shame. The reason is that we wrote up some code in Python, but given our decision to work with an Android app, the code is now irrelevant. We will still be using the general layout of the code when we start writing in Java, but Python and Java do not translate well between each other. Neither my partner nor I have any experience with Java, let alone the Android side of things. As a result, we have spent the last two weeks or so getting familiar with Java and Android. Android provides great tutorials on their website that walk through the steps to creating an app and playing with its features. Debugging is also incredibly easy too, which was a pleasant surprise. Connecting the Nexus to my computer with a USB cable allows me to run the code on my laptop and play with the app in real time on the tablet.

Physically speaking, we have nothing to show. Yet. However, I feel really good about where we are headed with the Android app and hope to have started developing the basic features of the app within the coming weeks. We are behind our original schedule, but that is not really my concern since the project has taken many unexpected turns.

What I like most about this project is that it is now starting to feel like a learning process and less like work. I look forward to the road ahead.

Tuesday, June 17, 2014

Weeks 1-3 Update

The team's goals for weeks 1-3 were to test data storage and data entry techniques. As far as these milestones go, the team has been relatively successful. Test code has been developed in Python that allows the user to fetch a drink from a text file and output the drink's list of ingredients.

Our second goal was to purchase hardware components during these first three weeks, but that has yet to happen. The research portion of this project is proving more difficult than expected. Our initial thoughts were to use an application called Kivy in order to communicate with a touch screen application. Kivy's website offers many walk-through tutorials about how to use the application, so getting familiar with the program was not difficult. However, the Kivy application appears on the users screen as if the screen were a touch screen itself. We do not want this because our plan is to use an external touch screen. As of right now, we know of no way to produce the Kivy application on an external touch screen.

We currently have two options from here. We can keep looking at other Python-compatible applications and try to work them in with an external touch screen via microcontroller. Our second option is to use another language like Arduino for our code. The latter would be a more immediate and effective fix, but Arduino's data storage techniques are far inferior to those of Python's.

Since we have not decided on the method of communication to a microcontroller/touch screen, we were not able to purchase products. If we had decided, purchase would also have been delayed due to the prices of the products. The hardware necessary for ILS is not cheap. The team needs to wait for sufficient funds before purchasing any components.