Ask Slashdot: Best Electronics Prototyping Platform? 228
crankyspice writes "Having recently picked up the Erector set I've wanted since I was a kid, I quickly found myself wanting to plunge deeper into makerspace by adding more sophisticated electronics to moving devices (rovers, maybe eventually flying bots). My first instinct was Arduino (maybe because of brand recognition?), but that got me thinking — what's the 'best' platform out there (most flexible)? Arduino with its myriad options (Nano, Mega, Uno, Mini)? PICAXE? BASIC Stamp? Raspberry Pi? (The latter seems like it would easily be the most flexible, but at greater cost in terms of weight and complexity.) I'm a hobbyist programmer, having learned C and C++ in college and recently re-learning Java (took and passed the Oracle Certified Professional exam, FWIW)..."
Re:Those are not electronics prototyping (Score:2, Interesting)
Re:Arduino, AVR, RPi, Beaglebone (Score:4, Interesting)
I just got an Arduino for Christmas, and I'm having a blast learning electronics. (I'm programmer by profession, so the coding part is only mildly challenging/interesting.)
The thing I've been enjoying about the Arduino is the community. When I hook an LED up, why do I need a resister? How do I compute -which- value resister I need? What do I need to run a 1A brush motor? So far I've very often found these questions have already been answered (with ideas, suggestions, hardware, etc).
IOIO? (Score:5, Interesting)
what about microcontroller + FPGA ? (Score:3, Interesting)
Re:Arduino, AVR, RPi, Beaglebone (Score:5, Interesting)
PICs are ok, but the C for it is extremely limited and it can be a bit frustrating at times. AVR is limited too, but it felt a bit less odd at times. Both come with a large variety of options so the stuff I hated about PIC may not apply to others. The better compilers for PICs are proprietary and as I recall GCC for PIC just isn't that great as the PIC model is too unusual, and there are so many variants of PIC instruction set. AVR feels a bit more like a normal CPU and the differenet models don't change the instruction set too much.
Both are Harvard architectures meaning you may have a lot of room for programs (ie, 16K or more), but very little memory for RAM (256 bytes). Which means that if you only have a 4K program you don't get to use all that unused space to have more runtime memory. That tiny amount of RAM however is shared with system registers!! The more peripherals your chip has the more RAM that ends up reserved. So what you read on a data sheet may not be what you actually have to work with.
I am not an Arduino fan. However it's probably good for beginners as it's easier to get started with. You can program it using USB and they can get power over USB as well, which is really handy to avoid extra purchases of power supplies and system programming hardware. Other systems beside Arduino have USB too but boards intended for professionals may not have these quick-start options. These boards are probably going to give you more than you need as well to avoid the frustration of having something too small, after all a hobbyist isn't going to be quibbling about how many pennies they can save per chip in bulk and the hobbyist is going to be building multiple designs with the same chip. It can also can be used without soldering and has a variety of stuff you can buy to attach to it.
On the other hand Arduino is pushing their programming system as well, which is really the thing that separates Arduino from any other AVR board. It is a C-like language with a library; you're not programming to the bare board, you're not even writing your own main() routine. It is not intended for profressional programers, the target audience appears to be "multidisciplinary" (ie, people who aren't programmers). But you can skip that stuff and go for real C or assembler if you like.
Re:None of the above. (Score:4, Interesting)
Arduino's environment uses essentially straight C++. There's nothing special about it; it all runs through g++. The Arduino system merely provides you a nice lightweight abstraction that you can use or not.
I recently developed a linear actuator controller using Arduino and when I was done I targeted the AtTiny84 processor, took the hex file and burned it with avrdude to the chip and it worked great (though I'm only using it at 1 MHz with no external clocking components. I built the binary from within Arduino's IDE even (added a plugin to target attiny). This is what makes Arduino so interesting. It's a straight forward jump into more complicated AVR programming, or to other smaller chips that don't have an arduino bootloader like the attiny.
I think your post illustrates the confusion over Arduino.
1. It's not a special language; it's simply C++ with a framework to abstract the chip a little and the result resembles processing, but it isn't processing. I've seen people develop little python libraries for Raspberry Pi that emulate this framework on the Pi.
2. The arduino bootloader is nice for rapid develop/load/test cycles, but isn't required. If you have the proper hardware definition files in Arduino you can target other chips like AtTiny (no bootloader at all), or the Teensy (proprietary bootloader).
3. You can port your Arduino programs directly to AVR if you wish complete with the arduino abstractions (framework).
4. Arduino is really about a community and a lot of libraries.
Just as an aside, I recently discovered the QP event framework for Arduino, straight AVR, Arm, Pi, or any number of other platforms. Gives you a complete event-driven paradigm for embedded devices complete with threads, timers, event sources, event sinks, etc. All in just under 3k. It's complicated stuff but looks to be very powerful I'm going to check it out.