Sunday, April 12, 2015

Selecting the Right Tool for the Job

Because of my Android programming background, fascination with the Android OS, and being an Android device aficionado, I have always been curious to know what kind of hardware powers a particular Android device. Lately, I have been really looking into how these devices have been created. Some of the questions I have been asking myself, and others in the hardware industry are:

  • What hardware components are necessary to power these devices?
  • Who manufactures these components?
  • How was the circuit board design created?
  • How would I prototype a device of my own?
  • Where would I purchase the required hardware components from?

I have been following the Android ecosystem for a while now, and considering my curiosity with hardware design, I have also been looking into the “Maker Movement”. The reason I have been looking into the “Maker Movement”, is due to the fact that there are many companies manufacturing open source hardware kits that are running the Android OS. Included in these kits are the entire board design -- the circuit board schematic, the PCB layout, the bill of materials (which is the list of components that are required for operating the device and where to buy them) – and many other useful design documents.

Depending on the open source license, this usually means that anyone is open to copying the design, or modifying it to their own custom specification. And being that Android itself is an open source OS, commanding over 80% of the smartphone market, what better operating system to pair with open source hardware!

Recently I have been working on creating a new Android device, based on an open source hardware kit. This design is using an ARM Cortex A9, which is a great processor for powering a rich operating system such as Android. For the most part, many of the other components required for my design are already included in the open source design, but for customizing the device to my needs, there are a few other components that I need to locate and work into the circuit design.

If any of you have ever been tasked with picking a software design tool, I am sure you know how confusing the process can be, especially when you don’t know what tool is the best for your engineering goals. Well the same goes for choosing a hardware design tool. Finding an appropriate design tool for modifying the circuit was not an easy task. There were quite a few options to choose from, but none seemed right for working with a sophisticated device running an OS like Android.

Luckily, I attended a hardware Meetup in San Francisco, and talked to one of the attendees about my design (he is a hardware engineering expert for a hardware startup incubator). I told him about my choice of processor, the operating system, and general specification of what I wanted the device to do, and he recommended I take a look at a tool by Altium, called Altium Designer. Turns out that many of the open source projects that are using an ARM Cortex A9 and running Android, were built using Altium, so choosing this program seemed like the logical choice for a device running Android.

Altium Logo

What I have found is that using the right tool for the job is essential and I am happy to say that I have found the right tool for creating a custom circuit design.

This leads me as to why I am writing this blog post. Having the right tool for the job is essential. I have found that for designing PCB's, Altium Designer is an amazing choice. For writing Android software applications, Android Studio is now the official IDE for Android development, and Google is now recommending that developers migrate over to Android Studio from Eclipse, so I recommend that you should be using Android Studio for developing your Android applications if you have not already done so.

I also wanted everyone to have access to the book code samples that work with Android Studio, in addition to already having code samples that work with the Android IDE (Eclipse with ADT). That way, you are able to go through the book code samples using the right tool for your job.

You can download the code samples here.