All men dream: but not equally. Those who dream by night in the dusty recesses of their minds wake in the day to find that it was vanity: but the dreamers of the day are dangerous men, for they may act their dream with open eyes, to make it possible. This I did. - T.E. Lawrence
One of the great stories of ancient greek myth - one that might actually predate Homer's Iliad - is the tale of Jason and the Argonauts. Robbed of his birthright of the crown of Iolcus in Thessaly by the usurper Pelias, Jason sought the means to exercise his rightful claim to the throne. Accordingly, he summoned the greatest heroes of Greece to join him in a quest to retrieve the Golden Fleece. The fleece was said to be from a golden ram and was alleged to possess magical powers. Guarded by terrible monsters, the Golden Fleece was reputed to be in the kingdom of Colchis, on the southeastern coast of the Black Sea at the end of the world (as the ancient Greeks saw it.)
Jason made his preparations and convinced even Hercules to join his quest. Under the guardianship of Hera, the only thing that Jason and his crew lacked was a ship worthy of taking them to distant Colchis and helping them survive the hazards of the journey. To this end, Jason commissioned Argus, the greatest shipwright of the age, to design and build a vessel for the task. Under the guidance of Athena, Argus completed the undertaking and commissioned the ship as the Argo, from which the collective identity of the heroic crew was derived.
We grow great by dreams. All big men are dreamers. - Woodrow Wilson
Technologists and inventors abound who pursue waking dreams of their own, seeking to bring about the Next Big Thing thru their efforts to develop new offerings for the IoT. We have explored basic rules for defining such devices in previous editorials. But once past that definition stage, inventors need to concern themselves with a way of evaluating, testing and proving their concept. Stated differently, they need their Argo with which to make the journey to realize their goal.
There are a great many hardware platforms available today that seem ideal for IoT developers. The platforms vary greatly in functionality, sophistication and cost, but there are already some that stand out as favored choices. In this editorial, we'll look at a selection of these offerings.
The Margrave of Ivrea
The Arduino family of microcontroller boards has as namesake a Piedmontese nobleman and eventual King of Italy from the country's dark and tumultuous medieval period, some 500 years after the formal demise of the Roman Imperium. Created originally by a collection of graduate students at a now defunct technical institute in northwestern Italy, Arduino was developed in 2005 first and foremost with the intent of providing both ease of use and the broadest possible appeal.
The fundamental premise followed by these graduate students, filled with love for their craft and good will for potential users, was to make programmable hardware as easy accessible and usable as the Internet. They wanted to make microcontrollers accessible not just to hobbyists and engineering students, but to people with limited or even zero technical knowledge.
Their success has been so great that even artists and children are adopting Arduino. The extent to which Arduino's creators believe in making hardware technology accessible and non-intimidating to the general public can be seen in the term they use to identify programs, which they refer to as 'sketches.'
Their efforts are meeting with great success. As an example, a friend of mine deeply involved with Arduino support recently found himself receiving emails requesting help from 8 and 9 year old girls who are playing with different Arduino boards sporting LED arrays, trying to implement patterns that they can show at an upcoming birthday party. Some might consider that to be silly; I, however, find it wonderful (and adorable.)
While we're on the topic - for those of you with kids, I'll bet $50 and a box of Entenmann's donuts that you might find something on this website that they would find enticing:
When I was a wee little rascal, we had chemistry sets, erector sets and legos. Nowadays, youngsters have the sorts of things that Adafruit has developed - and I think it's great.
Arduino's hardware and software are both open source. Aficionados can even order component kits to build their own boards. Furthermore, Arduino strongly encourages people to use their boards in product designs, as the organization has no commercial ambitions.
Between efforts to minimize the level of technical expertise needed to effectively engage with its offerings and the open architecture status of both hardware and software, the 3rd party and aficionado community exploded. There are many daughtercards available (referred to as 'shields') that have been developed by 3rd parties which support popular protocols, interfaces and functions - Ethernet, WiFi, USB and others.
There are, of course, other MCU platforms which offer small boards with pre-written utilities that attempt to make it easy for users to get started. Arduino, however, went much further than all of them. The development environment includes Windows, OSX and Linux support, extensive C++ libraries, a very user-friendly IDE and a simplified programming language (based on C/C++.)
Most of the boards are based on 8b Atmel MCUs from the ATMEGA family with a Flash boot loader and a USB port for programming from a conventional PC. The Arduino Due is the first 32b board and employs the ARM Cortex M3. With as little as $25-$30, a novice can get started with Arduino and have over two dozen boards from which to choose.
The original designs were targeted at sensor and actuator applications for tasks such as industrial data gathering, motor control, smart homes/offices/facilities, thermostats, simple robotics, motion detectors and such. 32b applications are growing, though. For example, motion control for applications such as advanced robotics requires 32b operations (single bit precision with 24b floating point operations.)
The ease of use, variety and low cost of Arduino offerings are precipitating some unintended consequences in the greater High Tech universe. For instance, engineering professionals in manufacturing roles are using Arduino boards for industrial testing. Without having deep expertise in C programming, these engineers are finding that they can use Arduino for cheap and fast test setups, to the great consternation of test equipment companies that are accustomed to selling their exquisitely crafted systems for $10k and more.
Not everything is coming up roses in the Arduino world, however. The developers have witnessed a growing volume of concerns regarding security for IoT applications and are trying to develop solutions. There are efforts underway to provide encryption for all traffic between communicating devices in order to block Google, Amazon, Facebook and anyone else who peddles Big Data for a living from seeing the telemetry. Unfortunately, current efforts are focused on the AES 256b standard, which is no longer sufficient (as discussed in previous editorials.)
There are other issues with which the Arduino developer community is contending as well. For example, cloud connectivity has proven to be a sore spot for various IoT applications, and it's proving to be a tricky problem to solve.
Nonetheless, Arduino is without question the leading hardware platform on the market and offers a cornucopia of capabilities and resources to IoT inventors. The Arduino folks have already discerned this and have positioned themselves to help IoT developers, as can be seen here:
And for those of you with more general needs, the following looks like the perfect way to start getting into Arduino:
Despite its popularity, Arduino is not the only platform offering out there. Let's take a look at some others.
In 2006, a small team of Cambridge computer professors became deeply concerned about the evident decline of interest in electrical engineering and computer science among university students. They were also alarmed by the general change in background of new EE and CS students compared to the previous two decades. Whereas students in the 1990's who chose technical tracks in college were often electrical hobbyists as teenagers, the professors were encountering students whose interest in technology extended only to high level programming such as HTML and rarely included any interest in or basic understanding of the underlying hardware.
The professors determined to fix that and teamed up with a couple of industry veterans to form Raspberry Pi. The organization is a charity that is dedicated to making hardware and software technology approachable, fun and interesting to children. To that end, the foundation has developed several small boards with a supporting software distribution, along with documentation, tutorials and learning events.
It is very evident that the foundation wants to find any and all means possible to engage with kids and wants to make sure that children view Raspberry Pi as a way to have fun. I actually find their website heartwarming.
The hardware designs, though, are definetily not kid's stuff. The centerpiece is a Broadcom BCM2835 multimedia processor developed for mobile applications. It contains a 700MHz ARM1176JZF-S core which includes JVM support along with floating point, security and DSP extensions. There is also a VideoCore IV GPU and 26 general purpose I/O.
There are three motherboards - the A, B and B+. They are all stunningly small - roughly 3.4x2.2 inches. All three support an SD card up to 32MB. The boards differ primarily in supported ports and system memory - a single USB and 256MB for the A board and 2 USB plus a 10/100Mb Ethernet port along with 512MB memory for the B board. The B+ board includes an additional two USB ports.
There are composite and HDMI outputs for video, as well as an I2S audio port. Two very small camera cards/modules are available for video and image capture. All the motherboards can support H.264 1080p30 HD encode and decode.
Operating system support is restricted to a variety of flavors of Linux. Programs can be compiled from source code in C, C++, Java or Python. Just use the USB ports to plug in a mouse & keyboard and connect one of the video ports to a TV set and you're good to go.
Boards range in price from $25 to $35. Combined with its impressive functionality and extensive support, what's not to like?
Well....it turns out that despite its many good qualities, the Raspberry Pi offering is not terribly well suited for most IoT applications. The motherboards require a 5V supply and are power hogs during normal operation. There is also no Wi-Fi available - a potentially crippling defect. The Android OS is also not supported.
To be fair, the foundation's purpose is to provide an enjoyable educational tool for children. Support for IoT development never has been and likely never will be in their plans for the future. Nevertheless, the Raspberry Pi platforms might serve to help develop code for an access point or controller that manages a collection of sensors and is in turned controlled by a user's personal processor/smartphone.
Update, 10/31 - One of our readers has found Wi-Fi support for Raspberry Pi! Details are available on adafruit, at this link:
This reader has also discovered something that I overlooked (my apologies, everyone): the Raspberry Pi foundation was working on Android support in 2012, though current status is undetermined:
There are other hardware platforms, to be sure, that may be useful for IoT product development - the NVidia Jetson, Intel's Galileo and perhaps one or two others. We will examine them in detail in a future post.
Next week, however, we'll be taking a break from the current series on the IoT. The earnings reporting season is upon us for Q3 2014. We will therefore be taking a journey next week back to the slopes of Mount Parnassus, so that we may once again consult with the Pythia.