I hope it won't take to long until there will be pre-assembled ones, too. For an open source design, all you need is someone who invests some money to get the board assembled in China and then sells it in a web store.
Here is an example, to show how affordable assembling low quantities of boards in China has become. For one of our designs, buying all the parts online in the US or Switzerland, was about $150. If you buy about a dozen of them in China, they are about the same price point. But then, they are already assembled according to our design! Once you buy around one hundred, you save considerable money. In our case, the offer we got is about $100 per board (33% savings!).
The lower the transaction cost, the better. If you think soldering has minimal transaction cost, compare the price of a soldering station with a Raspberry Pi.
Sparkfun does a really good job of making their kits easy. If you look closely at them, the boards that require diodes and electrolytic capacitors have a picture printed on the pcb that make it really obvious what the polarity is. The gertboard pcb doesn't have any of these. If you solder a led backwards, you're SOL. So if you haven't seen a diode or led before, you probably shouldn't pick the gertboard as a first project.
You can buy the arduino as a kit, but most people who are just starting out with electronics will get one prebuilt so they don't accidentally stick their atmega chip in backwards.
http://www.element14.com/community/themes/images/raspberrypi...
See this larger picture:
http://www.raspberrypi.org/wp-content/uploads/2012/08/image0...
Or read the assembly manual where they teach how to solder surface mount components. There's a bunch of resistors & capacitors all over the board that happen to be surface mount.
http://www.element14.com/community/servlet/JiveServlet/downl...
If you are waiting for this to control things with your Raspberry PI, I think some choices already exist.
For example: http://www.societyofrobots.com/axon_select.shtml http://adafruit.com/products/849 http://www.parallax.com/Store/Microcontrollers/PropellerDeve... http://www.parallax.com/Store/Accessories/MotorServoControll... http://www.parallax.com/Store/Microcontrollers/PropellerDeve...
That's just a fraction of what is out there. And to repeat, I think the gertboard is cool. But if you are waiting on it to control things, you don't have to.
Also, you'd probably do more with the Pi as a programmer beyond turning pins on/off -- for example, you could hook up a camera and run opencv, then write a small app to control a water gun that shoots squirrels off your bird feeding post.
When you start doing more with arduino, you typically want network connectivity, and most of the wifi/ethernet shields for the arduino are the cost of the entire RPi computer. I think the RPi does fill a good niche in the hardware world.
As far as programming, simple is easy on Arduino. The limits are further away with a Raspberry Pi. Say you want to log some data for later analysis. Trivial on a Pi. Anything more than a few kilobytes and you are wiring an SD card to your Arduino.
I'm currently using Arduinos for well defined, simple functions, but for more complicated functions. I will use Raspberry Pis where the BeagleBone CPU is overkill, but Arduino will always win for low power use.
http://wickeddevice.com/index.php?main_page=product_info&...
Many of your other points are valid. For tons of projects a Pi would be overly complicated overkill, but I can think of many times when I'd want more video in/out capabilities, plus the ability to blink some lights, drive some motors, and accept non-usb sensory input.
I'd like to know what kind of stuff you can do with the GPIO pins directly on the Pi, via /sys/class/gpio. Are they just digital (0,1) or they can read voltage levels too? (electronics newbie here)
[1] www.pjrc.com/teensy/
Here's a tutorial on hooking the raspberry pi with one of those chips to give you analog input: http://learn.adafruit.com/reading-a-analog-in-and-controllin...
I'm in Greece, so dx is pretty much the only site that will ship cheap stuff to me, but if anyone has another recommendation for a good hub, I'm thankful.
What I'm looking for is a step-by-step field guide for "interacting with real world" for programmers with zero experience in electrical engineering.
Electrical engineering encompasses everything from very low level digital and signal processing electronics to designing power plants.
There were some promising videos on youtube but it all boiled down to: "Here's this simple circuit. <no explanation about the circuit> Now to the hard part: FOR loops. <30 minutes about for loops and basics of C syntax>".
I guess this would be a great topic for the pragprog-guys. If they'd commission such a book I'd buy a dozen copies ;)
Interesting you mention this, I've been getting into microcontroller programming for the past year or so and I've also found this to be the case.
I'm thinking of putting together some tutorials that focus more on the electronics side of things. Additionally the programming would be a bit less offensive to us (i.e. where possible tidied up into libraries instead of splat out into one big sketch file). Do you think there might be a lot of interest in something like this?
For arduino, getting set up in vim and working with ino (instead of the arduino IDE, which is extremely useful but fugly as hell) was the first big hurdle.
i think it's like OOP programmers trying to learn functional programming, you need to bridge with similar concepts so it's easier to grasp.
I can only tell from what I know from my peers (mostly CS educated guys). Many of them are interested into hooking up stuff to their computers but can't get their head around the most simple electronic circuits. (Pull up/down resistors are pretty much irritating for example).
So yeah, there's definitely some interest. I guess hardware hacking is something many programmers are interested in (Software only gets boring after 2 decades of programming) but can't find some easy intro.
It includes all the hardware to build a simple microcontroller kit, along with step by step assembly instructions. The best part is that the instructions also explain why you are doing what you are doing.
EDIT: bonus point if the book/tutorial can relate with concepts in software development, e.g. "this is equal to a compiler, and this is how you put breakpoints and run debugger"
The books are old, and so there have been a number of advances, but that's okay because people like you need a solid grounding in the basics (the simple circuit you mention) and the rest will be easy enough for you to work out.
But it'd be great to see a modern electronics course for programmers.
Make: Electronics http://www.amazon.com/Make-Electronics-Discovery-Charles-Pla...
Part of the book is breaking things to see how they work which is much cooler than thinking of things as a black box.
1. With programming you can download open source code that does whatever it is you want near enough instantaneously. Electronics projects come to a halt if you don't have the right parts on hand (which btw makes electronics a good hobby for just dipping in whatever free time you can steal).
2. There's a great deal more learning material available for free online for learning programming than there is for electronics.
3. With enough reading you can put together a web application or software 'in production'. Designing + printing PCBs and soldering on surface mount components with a reflow oven is obviously not a requirement for hobby electronics, but something I'd like to be able to do eventually. Getting the knowledge/skill/equipment together to do this will probably take at least a year (whereas you can go to any web host you like and have a website up and running in about 30 minutes).
4. If you mess something up while programming, you just kill the process and try again. If you make an error when putting together electronic components, you run the risk of letting the blowing them up and letting the magic smoke out. Aside from the safety issue, this is a real PITA if you're short on parts!
5. Debugging is relatively hard. While with programming you can output parts of the state of your program, analysing the state of a circuit requires working a multimetre and possibly an oscilloscope. This difficulty could be more due to my inexperience with electronics though.
EDIT: added...
6. Getting together the right equipment (soldering iron, breadboards, safety glasses, pliers etc) takes time if you're not sure what you're going to need up front. Sames goes for building up a stock of often used parts.