I just discovered something previously totally out of my reach. Single-board microcontroller programming/hardware building. In fact, originally I wanted to study electronics, but along the way ended up in software development.
Arduino is an open source hardware/software platform with a huge following. Their most popular microcontroller board is the Arduino Uno. Other platforms do exist, but arduino is the biggest one. Really, there are thousands of resources to be found on the interwebs about this little critter.
Basically it does this: you plug it in your computer, you write a program for it, upload it to the board and the board will take it from there. It will (when powered) execute your program automnomously. Of course, you’ll need to add some hardware to it in order to do something useful, like LEDs, motors, sensors, …
Open source hardware?
This means that you can look at the hardware design and build something similar based on it. There are many other boards based on the Arduino implementation.
What is so cool about the Arduino platform?
It’s open source, easy to start with, extremely cheap, versatile, has numerous of interfaces (you can connect anything electronic to it), expandable with shields, fast, easy to prototype, ….
One thing one cannot do (yet) is streaming video and the likes, however an arm-based version is in the works.
As a software developer, I think I may have a different point of view on this stuff than others do.
I already wanted to order one, but still waiting for the new ones that should be coming out soon.
I’ve looked at other platforms, but I chose this platform mainly because of the very big following (I think it’s the most poplular platform available today), and it’s relatively cheap. The only drawdown in my opion is the less powerfull platform. For example it will not do video streaming, doesn’t play high quality music. Actually it can play high quality music, or stream internet radio, but only using a mp3 shield. Because of this huge following, you can find many examples how to interface with other hardware.
This being said, I firmly belief that the current version packs plenty power for the most electronics projects. Plus, the new Arduino Due is around the corner (besides the cheaper less complex Leonardo) that is believed to have much more punch (ARM processor 32bit Cortex-M3 ARM running at 96MHz) than it’s predecessors.
There are numerous electronic devices that can be connected to this board. Some directly, others via so-called shields. A shield is a specific function board that can easily be plugged on top of the main board. Some examples: wireless connections (wifi/bluetooth/RF/xBee/irDa…), (touch)screens, FM radio’s, ethernet, relays, … you can find an extensive list of shields here: http://shieldlist.org/
Note: multiple shields can be used together, if their connected pins are different.
Besides these shields, lots of simple devices can be connected almost directly to the main board : LED’s (using a resistor), a shipload of sensors, motors, …
Programming happens in C++. Don’t let that scare you, it’s easier than you think. Plus there are a lot of libraries available that do the hard stuff for you. You write the program on your computer (Windows, Linux or OS/X) using the Arduino IDE, and when done transfer it via a standard usb cable to the board.
I will do some (hopefully a lot) small projects, beginning with some proof of concept projects, going to more useful projects, to finally end up in some bigger projects. (I plan to do my home automation project with this platform, eventually, but more on that later)
Imagine for a moment what awesome things one could create:
-funky led cubes
-controls stuff from the web
and whatever else your creative mind can come up with.
Some useful links.
Arduino.cc : the official home of arduino hardware and software
Freeduino : A lot of links to projects and examples
The wikipedia page
The biggest list of shields
I hope this gives a first impression of the platform.