Why Google Choosing Arduino Matters
blog.makezine.com
blog.makezine.com
Phil's a cool, intelligent guy, but this statement pegs my meter somewhere between "excessive optimism" and "ridiculous Apple fanboyism".
Apple, the infamous UX control freak, will give up the control (and revenue) associated with the MFi program in favor of allowing their users to customize their experience? What's next, Windows 8 will run an OpenBSD kernel?
Sorry, perhaps that last was excessively sarcastic, but let's be realistic here: one of Apple's fundamental properties is its fanatical control over every aspect of the way that users interface with the device, directly or indirectly. They will never give this up.
MS/NOK (funny how, at least in my mental model, they're one entity in the phone market now) and (especially) HP/Palm should be looking at this and thinking about doing the same. RIM probably doesn't care because their userbase doesn't.
That said, I'd love Apple to open up their accessory platform. I maintain an Apple accessory software stack that I'd love to throw on Github (frankly, I'm tired of maintaining it), but I am unable to do so due to our development agreement & the closed nature of their accessory program.
Growing up in the shadow of our failure to colonize space, it was easy to imagine that history had basically stalled and there wasn't much left to hope for except an uneventful decline. Added to that, all our interesting problems were too big for an individual to hope to solve.
Instead, the ability for individuals to meaningfully innovate has jumped to levels that haven't been seen since the industrial revolution, or the renaissance. I always envied the 19th Century inventors who created bleeding edge tech without requiring teams of a thousand engineers. I don't think I need to be envious anymore. The coming decades will be just as important.
A powerful technology is realized. At first, it's really expensive, and used only for industrial purposes or where it can serve many at once. The cost comes down to where wealthy individuals, professionals who benefit most, and sufficiently motivated hobbyists can get them, and there's huge growth. The cost comes down further, and soon everyone has them. At this point, the market becomes disjoint: you get products aimed for the wealthy (Apple; BMW, Ferrari), products aimed at the hobbyist (various DIY outfits; Jeep), products aimed at professionals who most benefit (RIM, Lenovo, Dell; some Ford/GM/Toyota products), and everyone else (LG, Nokia; Kia, other Ford/GM/Toyota products).
I think that middle stage is the most exciting; unfortunately, we're just leaving it. It's still a very exciting time to be a developer, but I would barely hesitate to trade it all to work at Xerox PARC or Bell Labs in their heyday.
On the upside, certain areas of biology are poised to move into that second stage any time now, in no small part because of the power commodity computing provides.
I have yet to meet a dead person that's excited to be dead.
I got goaded into teaching a class on Robotics at Google, it was well attended and the first thing we did was build FreeDuino's from Solarbotics. When coming up with a curriculum I chose the Arduino because it's development environment ran on MacOS and Linux (every engineer at Google had either a MacOS or Linux laptop, no Windows) and its use of C++ lite type models was a good match for the codebase they worked in on a day to day basis.
I designed (but sadly never got into production) a 'super sheild' which, if you installed the connectors in the Freeduino 'upside down' (relative to the instructions) you could plug it onto the robot shield thing which had 6 AA size batteries, a couple of motor controller chips, mounts for the GM8 (Solarbotics again) wheels with wheel encoders. And a bunch of bits for sensor logic.
That being said I certainly can't take credit for Google picking the platform as some of the folks were already familar with it but still its nice to see that this effort has lived on as it were.
Background: http://brettbeauregard.com/blog/2009/07/arduino-offset-heade...
Here's the explanation of how the bad spacing happened from Massimo Banzi: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1212632541 (scroll down 10-15 posts)
"We had 5 minutes before the deadline to go into production, the PCB guy was on the phone saying 'send it now or it goes to next week' and we didn't have a name yet... they I said let's call it Arduino like a bar we used to go...there wasn't much time to think."
I work at LeafLabs, we are responsible for a 72MHz, open/libre licensed, ARM microcontroller platform called Maple.
The header spacing issue on Arduino was really a gaff! We actually provide a 1/10" compatible secondary header as a rough-fix on Maple. We get tons of use out of this!
Maple line boards are based on the 32-bit ARM Cortex M3 processor core. These low power procs don't have MMUs, so unlike ARM9, there is no hard linux (there is uClinux though).
Maple originally forked the Arduino IDE, and ported most of the Arduino libraries over to ARM. Our build environment also works from the command line via make, arm-gcc, etc. Check everything codewise out at github.com/leaflabs
mBed is another great Cortex M3 platform, here are some differences between mBed and Maple: - mBed is a bit faster at 96MHz, and uses a processor from NXP, leaflabs uses a 72MHz processor from ST (stm32 series) that can actually be overclocked to 120MHz (not recommended ;)
- the LeafLabs build environment runs on your local machine, everything is MIT/LGPL licensed, and can be used with an Arduino-like IDE. The hardware is all creative commons licensed. mBed has a great development IDE, but it is a webapp and compilation happens remotely. I dont know how much of toolchain/libs/hardware on mBed is libre or even open source.
- Maple comes in 3 form factors, Arduino compatible, bread-board sized (maple-mini), and a beefier version (Maple Native).
- mBed has a secondary microcontroller onboard to handle programming, meaning user programs have 100% control of the main MCU (no bootloader or anything else running in the background). Maple has an onboard bootloader and a USB->serial driver running in the background.
(note, mBed has a 60MHz arm 7 board available now too)
As compared to Atmel's 8-bit MCUs, what are the downsides to the STM32 for most applications, if any? Obviously there's the packaging ...
Thanks!
EDIT: sorry I was under the impression the hardware spec was open source, I guess I'm wrong.
http://romfont.com/2011/05/12/google%E2%80%99s-open-accessor...
It's looking good so far. Now all I need is a device that supports accessory mode ...
I've tested a revision 1 SparkFun USB Host shield and UNO/Duo with pin define fixes and a Nexus One with Android 2.3.4 and the DemoKit app.
It "works" but seems a bit flakey needing multiple resets to move from detecting to data transfer. I'm suspecting possible power related reset issues.
Unfortunately my usual laptop is in the shop so I haven't documented this as I'd normally like.
Will take a look at what you've patched but first need to get some sleep. :)
Edit: Actually, it seems much more reliable when the Arduino is connected only to a 9V battery and not USB as well.
Can you test my patch and get back to me whether it works for you? That way I can update my post.
Have also put up some photos of input/output example of Arduino Uno + Usb Host Shield + Nexus One here along with some code: http://rancidbacon.com/p/android-arduino-accessory/