Pages

Monday, July 2, 2012

Arduino - A Purist's Take

As the name suggest, this post is about Arduino - defined by Wikipedia as 'an popular open-source single-board microcontroller, designed to make the process of using electronics in multidisciplinary projects more accessible'. I couldn't agree more. However in this post, I am going to give a purist's take on Arduino - Why Arduino is harmful for students. I am not a critic neither I am taking a jibe at Arduino. I am just an electronic freak who has used microcontrollers all his life and and felt that Arduino is taking people away from the essence of electronics.

To begin the debate, lets describe Arduino. According to its website Arduino.cc, Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. Yes that's exactly what it should be used for. But nowadays, people have substitute the use of other controllers for Arduino. 


Courtesy: www.arduino.cc
Let's take an example of Arduino Uno. It contains ATmega328 as a controller. But how many people know ATmega328 ? How many people have actually read the datasheet of ATmega328 ? Arduino is great for fast prototyping - you have all the libraries and code available but people tend to shy away from understanding what is going underneath. How system works, why it works, etc are some questions which usually no one cares about.

My views may be biased because I had learnt it the hard way. I was given the datasheet of 350 pages and was asked to understand it. I went through the whole document, understood which registers does what work, coclk frequency, timing diagrams, everything. And it took me some time to understand it fully, but it felt like a revelation, like an enlightenment to me. Now, with the understanding of the hardware, I am ready to unleash the full power of the hardware. I also learnt about programming - how to make a Makefile, GCC compiler, bootloader which goes into the controller and other stuff which a person needs to know for programming the chip. Armed with this knowledge, I made my custom board which I am proud of.



Now whenever I think about a project, I utilize this knowledge of mine to put a creative streak to my project. The tweaks and tricks which can be done after having knowledge of hardware is far more enriching and exciting. Nowadays students, buy Arduino, browse projects on the web and replicate them. It may be a good way to start with, but this does not ensure learning. I have personally seen people who claim to be 'awesome' because they made something cool with Arduino but upon quizzing them like 'why this wire is connected with this pin' they end up being answer-less.

Also, people also don't use other controllers because they are being provided with a easier option to use Arduino. For example, Texas Instrument's MSP430 is a power packed, low cost controller or Mirochip's PIC controller, etc are some good controllers available in market but few people are exposed to them. People should be aware of the options they possess.

So, my point is that understand the hardware, understand the software and then utilize it to make something good. Without knowing the real essence, one could not appreciate the beauty of the controllers - the very controllers with are at the heart of Arduinos.

But on a closing note, I would frankly say that Arduino is amazing and it has exposed non-engineers to the use of controllers in everyday life. The open hardware ecosystem made by Arduino is also very interesting.

I know this is a controversial topic and the world loves Arduino but I had to write what I felt. (Note: These are my views and are not associated with any group, company or other individuals) I also use Arduino and love it !

4 comments:

  1. I know what you are talking about...... Arduino is great, but cannot replace the AVR. Just to be diplomatic - ' Arduino can be the thing of interest but AVR should be the area to focus upon.'

    ReplyDelete
  2. Agree partly. Arduino wins due to its 'speed'. Most people dont bother to learn TI MSP430 specs/reading datasheets due to the learning curve involved. Since its not their priority. Right said, that we'd expect electronics guys are expected to know their AVR/uC stuff.

    Expecting everyone to learn uCs etc. beforehand like expecting a GIMP/Photoshop user to learn image processing(Matlab etc) .

    ReplyDelete
  3. I agree, but recently a friend of mine, from computer science deptt. asked me whether he should use arduino or AVR as he "just wanted to play with a microcontroller". I asked him to go for arduino as he neednot go into hardware details. What would you have said?

    ReplyDelete
  4. I totally agree that for non-techies, like designers and interaction guys, Arduino is really helpful. My point here is that guys studying in discipline like electronics engg don't take pains to read datasheet and understand the working of the system. They just use the Arduino. I want to encourage them to understand the working and then build something !
    @Akshat - Arduino !

    ReplyDelete