"The ability to write code for embedded systems using interpreted languages is a major development. These cheap processors are only as useful as the software that runs them"
^ While true in a sense, I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place. This type of sentence stinks of programmer elitism.
Otherwise, I'd agree that perhaps the biggest obstacle to using these embedded systems is circuit building education. Running linux or some bit of code on these systems is cool, but only to a point. I've always found this type of work to be most interesting when you can make the system interact with the world.
Ahh I totally see how that could be taken that way.
Don't get me wrong, the Raspberry Pi, Parallella, etc. are all incredibly feats of engineering (I couldn't even dream of building the processors or chips behind them). What I meant was the processors are only as useful to hackers as the software that they create for them. Hopefully that sounds a bit less elitist!
>I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place.
Yeah, nobody is ever going to be able to make a SoC in their garage. But I think the OP is trying to illustrate the fact that engineering efforts like RPi/Arduino are becoming easier now due to the internet and open source tools. That, combined with the market forces driving down the cost of the ICs, is making it possible to engineer a platform as complicated as a fully functional computer by a group other than a large, well-funded corporation.
The barrier to entry, while still high, is lower now than it's ever been.
The biggest hurdle for most of the hardware I've been working on over the last few years, is the touchscreen.
It's very hard to get good quality (IPS panel, capacitive) 7-10" touchscreens in low quantities for reasonable prices (I know of 1 company who sells them for under $200, but they constantly run out of stock).
I've found it's cheaper to buy cheap android tablets for ~$100 and use them as thin clients, but then you have to deal with all of the restrictions google puts in place (mainly the lack of a kiosk mode).
You can create your own ROM to get past the restrictions, but 2 months later the tablet you were using is at end of life, and you're back at square one.
Someone could make a killing creating low cost android backed thin clients to use as interfaces for this "hardware revolution".
The direction many hardware startups have gone is to write networking code instead--if your customer demographic are people that are likely to have smartphones--, to have the interface on the phone instead of on the hardware device itself.
Screens and cameras are two of the worst offenders for hobbyist/small-scale dev efforts. They're obviously everywhere, and obviously could be affordable, but either you can't find documentation for them without an NDA or they're way too expensive. Clearly somebody benefits from this secrecy.
I think the future of this hardware revolution will be python on a microcontroller.It could solve the complexity this article describes while keeping prices realistic for a product:
Micropython[1] is being in development right now,Currently working on a $6 mcu, with a potential for running on a $3/84mhz/3mm*3mm/49-pin mcu with varied peripherals (or maybe even something cheaper).
And as or complexity, this video shows an easy wifi interface[2].
And since it has a C-FFI, developing a first generation of a product in python and optimizing to c in next generations according to market and technical need is a good possibility.
I very much disagree, in the general case. The complexity of embedded systems design can't be significantly reduced by using python and I often do not think while developing that I higher level language would help, in fact I often think that C maps very well to the problem. It was designed as a system programming language and is good as one.
The complexity of embedded code does not lie in the code itself but in the hardware and you have sacraficed a few orders of magnitude in speed for very little or no gain. The code itself is usually fairly simple but you would not be able to tell anything from looking at it, you need to refer to datasheets.
Not only this but by using an more expensive ECU to begin with you really limit the scalability of your design and add to recurring costs.
I use a more powerful microcontroller at work and we still constantly have to drop down to assembly, albeit in limited controlled ways.
That said, there will be areas where this is a viable option, but not many. You have to analyze your problem and decide if is viable; for an embedded webserver it is, for a DCDC converter where speed is of a concern it is not. For a smoke alarm where cost is primarily a factor and your margins are tiny it is not.
While low-cost SoC computers are great, as are tutorials about wiring up sensors and motors to your Arduino board, I think this article misses the point about the "hardware reovlution". At one point, he says:
> have the correct tools (most of which are not free)
One of the reasons the free software movement is so exciting is because it put professional quality software development tools into the hands of ... well, everyone, and let them unleash their creativity. This is why Stallman started with emacs, gcc, gdb, and the unix tools. A whole generation of programmers grew up using tools that a generation earlier would have been prohibitively expensive or inaccessible. The frameworks, tools and libraries the OP is so excited about are the continued product of that movement. They are free (as in beer) and, more importantly, free as in speech.
However, this hasn't happened to hardware development tools yet, except for a few exceptions. It might be starting. (I have my pessimistic days and my optimistic ones.) There are two classes of tools: software design tools (and firmware for hardware tools) and hardware tools themselves. Of course, we can't expect hardware tools to be free as in beer, but we can aspire to make them free as in speech. Kicad (a free PCB design tool) is light years behind the industry standard Altium. Free versions of tools for high-speed design, signal integrity analysis, etc. are basically unheard of. The on exception might be Spice, the circuit simulator. There are free designs for primitive hardware tools (e.g., power supplies, precision DMMs, oscilloscopes, logic analyzers), but they are nowhere near entry-level professional offerings, and many, even tho they call themselves "open", don't make design files available.
Forget about RF-level stuff like RF signal generators and signal analyzers. I've never seen a high speed memory bus designed with open tools, for example, and I don't see how you'd ever debug it.
This is where I think the action is. A suit of open tools (software and hardware) that benefited from community improvement would truely be transformative. It would create an enormous amount of social value. I can see why it hasn't been done yet. Building open versions of these tools would require a huge amount of work, and they are incredibly valuable, so whoever does it would have to forgo a huge amount of value.
I'm finishing up something else in the short term, but I've been thinking about this a lot. I'd love to work on this problem, but it isn't at all clear to me how to fund it.
I've never used Altium, but my opinion of most EE CAD software is pretty low. Unintuitive, proprietary, a pain in the ass to configure, and capping it all, usually ugly. (I primarily use Cadence, however, so there might be something great out there I don't know about.) I think now's a time for a radical re-imagining of EE CAD software. I just don't know how you would do it. :D
In response to cushychicken, The CE software isn't much better. Half the time, I can't figure out why companies pay for the licenses. The other half, I marvel at just how much the software does for you.
But the tools aside, without a low cost foundry and with a low barrier to entry for new developers (i.e. not requiring a lengthy approval process), the open source tools are just a first step. It would be amazing to one day have the resources for a hobbyist to build an ASIC. Once we've reached the limits Moore's law, that may be the only way to keep the IC industry interesting.
This fellow[0] designed a DDR2 interface, but I don't think he ever reported back whether or not it worked. Apparently he did it by hand in Eagle!
To address your point about tools, I think you're right about the value aspect -- good tools cost money. But then again, does the average hobbyist need those kinds of tools? How much demand is there for, say, a 100 MHz open 'scope that costs a bit more than a Rigol? Ham enthusiasts would probably rather trade around old HP/Tek equipment.
I do agree in principle that there should be something like the Global Village Construction Set, for electronics. But it would be a monumental undertaking.
I'm a software engineer and I'm clawing my way through to founding a startup one day. The only thing is that I can't see myself doing is starting software company no matter what I do. I think that deep inside I just think that software is abundant and people still appreciate something that is physical, which is why I'm seriously considering "breaking bad" into home automation.
As someone who recently jumped into using hardware to make industrial design prototypes, I can say the biggest hurdle I've faced is the programming aspect of it. Currently there doesn't seem to be a quick way of making a GUI that controls hardware. I would love to do this through HTML, but without knowing Python, I'm basically SOL. Adafruit and Sparkfun tutorials can only take you so far, but when you need to make an interface for your hardware, the options are much more limited for the non-programmer.
I've been working on some tools which I'll open-source in a few months, to make it easier for developing the hardware component. I hadn't thought about the interface as being an area that needed help.
You say you could do this through HTML, would using Angular Modules work for you? I'm just thinking of how I can add some pretty easy features to do basic interactions with angular.
But these tools, although largely available to the masses now, are still highly sophisticated pieces of hardware that are meant to be used by experienced[1] programmers.
[1] Okay the RPi can be used a starting point even for kids. But the Parallela I don't think so.
The tessel looks pretty cool but $99 is a lot for a development board.
For $35 you can get a Raspberry Pi with much more power, network access out of the box, and the ability to run node. I don't see how the tessel can compete with that.
[+] [-] noobiemcfoob|12 years ago|reply
^ While true in a sense, I think its incredibly important not to downplay the difficulty of engineering this hardware in the first place. This type of sentence stinks of programmer elitism.
Otherwise, I'd agree that perhaps the biggest obstacle to using these embedded systems is circuit building education. Running linux or some bit of code on these systems is cool, but only to a point. I've always found this type of work to be most interesting when you can make the system interact with the world.
[+] [-] stevenleeg|12 years ago|reply
Don't get me wrong, the Raspberry Pi, Parallella, etc. are all incredibly feats of engineering (I couldn't even dream of building the processors or chips behind them). What I meant was the processors are only as useful to hackers as the software that they create for them. Hopefully that sounds a bit less elitist!
[+] [-] cushychicken|12 years ago|reply
Yeah, nobody is ever going to be able to make a SoC in their garage. But I think the OP is trying to illustrate the fact that engineering efforts like RPi/Arduino are becoming easier now due to the internet and open source tools. That, combined with the market forces driving down the cost of the ICs, is making it possible to engineer a platform as complicated as a fully functional computer by a group other than a large, well-funded corporation.
The barrier to entry, while still high, is lower now than it's ever been.
[+] [-] learc83|12 years ago|reply
It's very hard to get good quality (IPS panel, capacitive) 7-10" touchscreens in low quantities for reasonable prices (I know of 1 company who sells them for under $200, but they constantly run out of stock).
I've found it's cheaper to buy cheap android tablets for ~$100 and use them as thin clients, but then you have to deal with all of the restrictions google puts in place (mainly the lack of a kiosk mode).
You can create your own ROM to get past the restrictions, but 2 months later the tablet you were using is at end of life, and you're back at square one.
Someone could make a killing creating low cost android backed thin clients to use as interfaces for this "hardware revolution".
[+] [-] iamwil|12 years ago|reply
[+] [-] mng2|12 years ago|reply
[+] [-] hershel|12 years ago|reply
Micropython[1] is being in development right now,Currently working on a $6 mcu, with a potential for running on a $3/84mhz/3mm*3mm/49-pin mcu with varied peripherals (or maybe even something cheaper).
And as or complexity, this video shows an easy wifi interface[2].
And since it has a C-FFI, developing a first generation of a product in python and optimizing to c in next generations according to market and technical need is a good possibility.
[1]https://github.com/micropython/micropython
[2]https://www.kickstarter.com/projects/214379695/micro-python-...
[+] [-] anon24892|12 years ago|reply
The complexity of embedded code does not lie in the code itself but in the hardware and you have sacraficed a few orders of magnitude in speed for very little or no gain. The code itself is usually fairly simple but you would not be able to tell anything from looking at it, you need to refer to datasheets.
Not only this but by using an more expensive ECU to begin with you really limit the scalability of your design and add to recurring costs.
I use a more powerful microcontroller at work and we still constantly have to drop down to assembly, albeit in limited controlled ways.
That said, there will be areas where this is a viable option, but not many. You have to analyze your problem and decide if is viable; for an embedded webserver it is, for a DCDC converter where speed is of a concern it is not. For a smoke alarm where cost is primarily a factor and your margins are tiny it is not.
[+] [-] cottonseed|12 years ago|reply
> have the correct tools (most of which are not free)
One of the reasons the free software movement is so exciting is because it put professional quality software development tools into the hands of ... well, everyone, and let them unleash their creativity. This is why Stallman started with emacs, gcc, gdb, and the unix tools. A whole generation of programmers grew up using tools that a generation earlier would have been prohibitively expensive or inaccessible. The frameworks, tools and libraries the OP is so excited about are the continued product of that movement. They are free (as in beer) and, more importantly, free as in speech.
However, this hasn't happened to hardware development tools yet, except for a few exceptions. It might be starting. (I have my pessimistic days and my optimistic ones.) There are two classes of tools: software design tools (and firmware for hardware tools) and hardware tools themselves. Of course, we can't expect hardware tools to be free as in beer, but we can aspire to make them free as in speech. Kicad (a free PCB design tool) is light years behind the industry standard Altium. Free versions of tools for high-speed design, signal integrity analysis, etc. are basically unheard of. The on exception might be Spice, the circuit simulator. There are free designs for primitive hardware tools (e.g., power supplies, precision DMMs, oscilloscopes, logic analyzers), but they are nowhere near entry-level professional offerings, and many, even tho they call themselves "open", don't make design files available.
http://www.phenoptix.com/blogs/news/12550621-testing-the-ten...
Forget about RF-level stuff like RF signal generators and signal analyzers. I've never seen a high speed memory bus designed with open tools, for example, and I don't see how you'd ever debug it.
This is where I think the action is. A suit of open tools (software and hardware) that benefited from community improvement would truely be transformative. It would create an enormous amount of social value. I can see why it hasn't been done yet. Building open versions of these tools would require a huge amount of work, and they are incredibly valuable, so whoever does it would have to forgo a huge amount of value.
I'm finishing up something else in the short term, but I've been thinking about this a lot. I'd love to work on this problem, but it isn't at all clear to me how to fund it.
[+] [-] cushychicken|12 years ago|reply
[+] [-] noobiemcfoob|12 years ago|reply
But the tools aside, without a low cost foundry and with a low barrier to entry for new developers (i.e. not requiring a lengthy approval process), the open source tools are just a first step. It would be amazing to one day have the resources for a hobbyist to build an ASIC. Once we've reached the limits Moore's law, that may be the only way to keep the IC industry interesting.
[+] [-] mng2|12 years ago|reply
To address your point about tools, I think you're right about the value aspect -- good tools cost money. But then again, does the average hobbyist need those kinds of tools? How much demand is there for, say, a 100 MHz open 'scope that costs a bit more than a Rigol? Ham enthusiasts would probably rather trade around old HP/Tek equipment.
I do agree in principle that there should be something like the Global Village Construction Set, for electronics. But it would be a monumental undertaking.
[0]: http://danstrother.com/2011/01/16/spartan-6-bga-test-board/
[+] [-] neverminder|12 years ago|reply
[+] [-] aklouie|12 years ago|reply
[+] [-] pedalpete|12 years ago|reply
You say you could do this through HTML, would using Angular Modules work for you? I'm just thinking of how I can add some pretty easy features to do basic interactions with angular.
[+] [-] atmosx|12 years ago|reply
[1] Okay the RPi can be used a starting point even for kids. But the Parallela I don't think so.
[+] [-] Qworg|12 years ago|reply
While prototyping is faster, development into something saleable goes much deeper (and into C).
[+] [-] bkurtz13|12 years ago|reply
https://tessel.io/
[+] [-] stevenleeg|12 years ago|reply
For $35 you can get a Raspberry Pi with much more power, network access out of the box, and the ability to run node. I don't see how the tessel can compete with that.