Sunday, April 12, 2015

Using the Appropriate Tool for the Job

Considering my fascination with Android as an operating system, I have always been interested in learning about the underlying hardware that powers an Android device. A few things I have always wondered:

  • What are the components that power a given device?
  • Who makes these components?
  • Who would I source the components from?
  • How is the circuit board designed?
  • How would I prototype my own device design?
  • How would I manufacture my own device?

Well, if you follow the Android ecosystem and fancy shiny new devices like me, or if you have ever heard of the "Maker Movement", you are probably aware that there are many new hardware projects in the making that are leveraging the Android OS. Some of these hardware projects are following in the footsteps of the Android Open Source Project (AOSP) by open sourcing their designs. In my opinion, Android sure does make a great fit to pair with an open source hardware design.

I bring these things to you attention because recently I have been working on an exciting Android project of my own -- building a custom Android hardware device -- by leveraging existing open source hardware designs.

What would seem like an obvious choice for a processor today was not entirely apparent early on, but I have settled on an ARM Cortex A9 as the brain of this device. With the OS and processor selected for the device, I am currently tasked with choosing the components that will provide additional functionality, in addition to bringing all of those components together by designing the "central nervous system" of the device.

For those of you not in the know, the “central nervous system” means creating the circuit schematic design and component layout for the printed circuit board. After reviewing many PCB design tools, I decided on a tool by Altium. Turns out that many of the open source hardware designs powering Android (and Linux too) are using an ARM Cortex A9 processor. Better yet, many of these open source hardware projects that are using an ARM Cortex A9 and running Android were designed by engineers using Altium Designer. Considering this, Altium just seemed like the logical choice. It wasn't until I started using Altium Designer and learning the ins and outs of the program, and combining existing open source designs with my desired components, that building a hardware device running Android is actually quite an empowering process when you have the right tool for the job.

Altium Logo

This leads me to the reason why I am writing this blog post. Having the right tool for the job is essential. For designing printed circuit boards, I have found that Altium is the right tool for that job, so if you also are designing a circuit board, I suggest taking a look at Altium. For designing Android applications, since Google has released Android Studio as the official IDE for Android development, I recommend that anyone who is still using Eclipse with the ADT Bundle migrate over to using Android Studio as soon as possible. And as a bonus, I wanted all my readers to have access to the book code samples for use with Android Studio, in addition to the code samples that you already have for use with the Android IDE (Eclipse with the ADT Bundle). That way you can use the right tool for your job.

You can access the updated code samples for use with Android Studio here.