Ask Slashdot: Best Electronics Prototyping Platform?
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)..."
If you want it to fly, you might want this: http://www.openpilot.org/products/openpilot-coptercontrol-platform/
Yes, yes, it takes the "fun" out of building your own flying code, but your machine will be a lot more fun to play with when it's actually stable. Put whatever other board you want on it, but for your own sake, use a dedicated flight board if you want to go airborne!
-73, de n1ywb
www.n1ywb.com
The toys you have listed are for developing firmware and software.
Prototyping electronics involves first designing some electronics, simulating them (if applicable or able), and then designing the boards, ordering parts, and having them assembled (or assembling them yourself).
hate to reply to myself, but I realize that you may think you've provided some of those goals. You want to build something moving. Any of those micros will connect to some relays control motors. What you want the micro to do other than control the motors is important. The smallest Attiny that will use the Arduino boot loader will control some motors, and may be able to chat with a radio chip so you can build a remote control bot. But it won't do on board navigation, it doesn't have enough pins.
So, do you want your bot to navigate themselves? You'll need something more powerful. If you want it to use a camera and do it's own image processing, you'll need even more power. GPS and inertial navigation too? Even more processing umph. A Basic stamp has the overhead of a interpreted language, skip that. Look at the ARM and Atmel and PIC chips that are on the boards, and base a decision off that. All the various Arduinos will chat with the IDE, but you'll need a processor that can handle what you want it to do. Same for a small ARM versus the larger ARM in something like the Raspberry Pi or a cell phone. And don't neglect the CPU of a used cell phone, some of those ARM chips are pretty potent and if the screen if broke you can pick up something rather cheap.
Or, use the Arduino bootloader to load your own C or asm code. The bootloader then just acts as a safety net for you setting the fuses wrong, and a Arduino with a socketed chip will act like a general programmer.
If you like Java, I'd suggest the IOIO and an Android device. You inherit the device's guts (gps, cellular antenna, speakers, wifi, gyro, color display) and can go nuts. The biggest difficulty for me was getting the ADK up and running w/ Eclipse on my Debian laptop. They are cheap too...take a look at Sparkfun and Adafruit.
0 = 1 + e^(Alt something)
I recently starting wanting to fiddle with Micro controllers for this or that and stumbled across the Texas Instruments Launchpad. For $4.30 delivered (yes including shipping world wide) you get a complete development board, 2 chips, some headers and the USB cable. TI have a free IDE you can program it with, or if you are on Linux you can use the MSPGCC command line tools, which I use. Its ultra low power - 3.3V - which means if you want to interface to 5V systems you may have to do a little homework, but other than that, their is no risk in ordering one to try out with the money you would have wasted on Starbucks. http://www.ti.com/ww/en/launchpad/stellaris_head.html?DCMP=stellaris-launchpad&HQS=stellaris-launchpad Order directly from Ti - https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx
I'd go with a couple of Pis. Some will say that's overpowered and you should use an Arduino, but there's one important thing about the Arduino: its IDE kinda blows.
Plus it will be a lot easier to update your code by pushing it to a Pi over wi-fi than by hassling with cables. And if you want to do stuff that needs a decent amount of CPU, you'll have it.
On the other hand you can get an Arduino into a lot less space than a Pi. Hell, get one or two of the Nanos too. You'll have the option of using one if you want a tinier package and can cram your code and data into like 32k.
egypt urnash minimal art.
Discovery Board - STM32F407
-> 168 MHz core freq
-> a few timers
-> DSP core
-> excellent integration with Keil
-> flash utility in Linux too.
Price: $15
Propeller is all great, but it takes a lot of ingenuity to make it do anything useful if you code it up yourself. All you've got is ~500 32 bit words of RAM to store your code and fast registers. One word per instruction. A novice will not be, typically, really using Propeller architecture directly, just running some slow interpreted spin code and reusing the better objects out there.
A successful API design takes a mixture of software design and pedagogy.
Everything I've ever worked on as a professional had a microprocessor and an FPGA. You can pick up a "Zed Board" with a dual-core Arm Cortex-A9 and a 85K luts worth of FPGA. You could learn fpga programming in addition to learning about microcontrollers. You can run linux on one core, or run "bare-metal" or Free-rtos in the other for all of your hard real-time needs. You have a very wide selection of things for you can try. The FPGA is a true parallel processor, and is great for processing multi-sensor inputs. A microcontroller time-slices between all of the tasks it needs to take care of. An FPGA can essentially be a hardware dedicated task.
It completely depends on your project or goals. Simple electronics, I'd go with arduino, it's ridiculously easy, I haven't programmed in 10 years, or ever done anything with an arduino or MIDI or really done much with electronics ever, but within 2 hours of buying one I had a phone keypad playing chords on 3 instruments through a MIDI device. Mega has 70 digital I/Os, 14 analog (IIRC). IC2. There's a good range of tools available.
If you need more horsepower, or to connect to keyboards/mouse/video/network etc, the Raspberry Pi is a mini PC basically.
If you need extremely low power, MSP430 is your best bet. Extremely quick power up/down, too, so you can have it check a sensor every second and shut down to use even less power. There's videos of one running a clock with LCD from a grape.
Basic stamp, I wouldn't bother with. I can't think of any advantages to it over the arduino, maybe someone with more experience knows of one, I've only dabbled with one.
I don't have any experience with the others, so I'll let others comment on those.
Why?
Arduino: community, quite simply, it has the critical mass of community behind it so you have a real source of knowledge (and existing code) to draw from. It's like the hardware analog of PHP, sure it's not necessarily the best, but the sheer amount of resources out there means you will have an easier time getting it to do what you want.
Eventually your projects might extend from running on top of an actual Arduino form board (I like the Diavolino board/kit from Evil Mad Science, mainly because it looks cool, but also because you can set it up with the minimum of components to suit you), to you incorporating the AVR onto your own PCB design but still using the Arduino bootloader/environment, to you incorporating a bare AVR on the board and moving away from the Arduino environment. So you have a clear progression of learning.
Fritzing: open source, simple, and a GOOD interface for HOBBY users. No it's not a replacement for Eagle, or Altium or DesignSpark... but a hobbiest working on small things just doesn't need the power of those, they want a nice easy system which they doesn't have a steep learning curve, and can help them draw the schematic, breadboard it, and design a pcb. There are other open source packages, such as KiCad but universally, I found, that the interfaces just suck, hugely, unless you really invest the time to become familiar with them, and then they still suck but you can live with it. Fritzing is far FAR more intuitive, if less professional.
NZ Electronics Enthusiasts: Check out my Trade Me Listings
Just pick the best car, and use whatever computer it has in it.
Seriously, there is no BEST.
Arduino has a ton of examples, and a ton of vendors making parts to work with it. Everything else, not so much. I've yet to see any purpose for a Pi. Very limited software support, mostly just Linux fan boys thrilled to run on a cheap computer.
For pure robotic experiments, go LEGO. They even have a newer version coming out mid year that is Linux based. But that is more for learning what to do with working electronics, not how to actually make them.
For electronics tinkering - Sparkfun Arduino https://www.sparkfun.com/products/11236
slashdot troll = you make a compelling argument I do not like the implications of.
You should get an Arduino because there is a huge amount of data out there on how to use it to do pretty much anything. Any hackerspace will be full of a hundred people who have messed with Arduino, and Arduino classes are everywhere.
Raspberry Pi is interesting for more complex embedded tasks, especially ones that require a network connection, or specific Linux software, but it lacks things like a built-in A/D converter.
Questions like this remind me of a saying.
Right now, today, I'm playing with the Arduino platform. Before that it was an OOpic. Before that, it was an 40 pound IBM XT with a parallel port adapter I built. Before that it was a huge 40 pin DIP Z80. In High school I got a radio shack "Electronics learning lab" with a breadboard, and it's been the only constant.
The small forest Mimms electronics books are a good "here build this" introduction. When you get bored with those, the "Art of Electronics" book is fantastic!
Have fun, and enjoy letting the smoke out!
There are two ways you can tackle this:
1) You just want to make cool things, but don't really care about the details
2) You really want to grok this stuff, and want to build stuff from scratch
This is roughly equivalent, in programmers terms, of learning a high-level language like .Net, PHP, Python etc... versus assembly/C.
Do you want to Just Make It Work(tm) without understanding the underlying libraries/platform? Or do you want to be able to build the libraries/platform?
For option 1, the Arduino is fantastic, and really can't be beat. For option 2, I'd say start with an 8 bit AVR, like AT tiny, grab a breadboard, come LEDs and a programmer, and pull your hair out until it starts making sense and the lights flash in the pattern you expect.
I took the second route, and have been very happy with my choice. Now, if (at my option) I just want to do something quick and dirty, I can grab an arduino and prototype something fast. But the thing is, I'm not constrained by that. I'm able to throw things together on a breadboard from components in a tray. I can write the code in straight C (or avr asm), and really grok the ISRs.
It's kind of like Processing (the platform for data visualization and artistic CG). Would you rather make fast animations that look great, are easy to make, but only run in the Processing environment? Or would you rather build your own cross platform UI stack and then create your own highly optimized animations?
I don't really agree with the "beginners" attitude towards Arduino, the same way I don't agree that Python is a good language for "beginner" programmers. We become programmers or amateur EE's for some reason - to solve some problem. If the problem you want to solve is that you want to be an expert developer, then don't start with python, start with c or asm. If you just have stuff you need to get done, python is great.
Same with EE, don't start with Arduino if your purpose is to really learn the stuff. You'll just be confused by the toolchain and helpful libraries.
Drinking habits can be dangerous. You can choke on the cloth and the nuns will wonder where their clothes are.
there is also fishertechnics that provides a graphical programming language and wide variety of building accessories. One can build cars, robots, assembly lines, etc. It is on the expensive side, and like the other options will primarily deal with structural issues and programming. with additional equipment, it can be used to learn to use electronics and digital logic to accomplish simple tasks. p. I would definitely look beyond the standard players. The disadvantage is that support might be less than some of the other more popular players.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
I've been using Teensy lately. I can use the Arduino tools and most libraries. It's relatively cheap compared to Arduino at only about $20.
Obviously you can't use the same shields but electrically they are more or less compatible. The teensy can do things Arduino can't like be a usb keyboard, mouse, joystick, serial port, midi device, or x-plane instrument interface.
Also if you're going to do a lot of breadboard you could also look into the adafruit breadboard Arduino. Can't use shields bit it is easier to plug into a breadboard.
All in all they are all pretty cheap so buy a few!
You don't have to use the TI IDE and bootloader, which are highly encumbered with copyright. MSPGCC ( http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki ) exists to allow the whole system to use an opensource toolchain.
I also like DigiKey. Sparkfun is great for the interface components like LCDs and custom buttons. Nice place for unique sensors, displays, and stuff like GPS modules too. Everything is super well-documented and they do great stuff with the community like free day and supporting hackerspaces. /sparkfun fanboy
I am a PIC guy, so according to the comments thus far, I like doing things the hard way.
If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
Arduino has a really short friendly learning curve - the system is designed so a random not-very-technical artist can pick it up, start doing blinky lights and sensors, find lots of interesting community support and demonstrations and applications. All the pieces you need to get started are right there - hardware, software, IDE, sensors, output devices, documentation. The Arduino hardware is fancier than a bare-bones AVR chip on a breadboard (and building one of them is a good second project), but it's still pretty cheap. The software may hold your hand a bit too aggressively, but once you've learned what you're doing you can get deeper (think of it as a mostly-C scripting language.) If you'd rather use gcc to write your programs at the bare-metal level and avrdude to download them, you can, but Arduino lets you do your work at higher levels until you need that. You could buy an ISP programming tool for $20-50 to program raw AVR chips with, but you can also use a ~$30 Arduino to do that job, so just go buy one.
Once you've used the Arduino a bit, you might want to branch out to a TI or STM development board, or something like Propeller with a lot more CPU horsepower if you need that, or PIC (if you want to know what people used to learn on before Arduino.)
Stuff you're going to have to buy - whatever prototyping board you want (I'd recommend Arduino), a solderless breadboard or two, solid-core wire in a couple of colors, some LEDs, assorted resistors and capacitors, probably several different types of sensors and output devices, maybe a power supply (USB gives you 5v, which is just fine if you're doing everything tethered to your laptop or have a USB phone charger around.) If you don't have electronics stuff around home already, you'll probably end up spending $100 or so, typically for a kit from Sparkfun or Adafruit or MakerShed, plus some random shiny-looking parts from their catalogs, plus you'll start to find Radio Shack very useful when you need to stop in and get some more LEDs or various connectors (and get yourself a bag of assorted resistors and a bag of assorted capacitors if you didn't have enough from a kit.) If you're going to solder boards, you'll also need a soldering iron, solder, and some breadboard to work with.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
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.
I'd personally go with a solderless breadboard and components.
There are various 'platforms' out there, such as *duino, LaunchPad, and so on.
The big advantage to these are:
* Predesigned PCB, with most 'electroncis' taken care of for you,
* USB built-in
* built-in programming/emulation/debugging
* an ecosystem of plug-in boards for various tasks.
The platforms make it easy for those with more interest in programming than in hardware to get started. The downside is they are pretty pricey because they have so many bells & whistles.
On the other hand, if you have good Electronics knowledge, then it's hard to beat a solderless breadboard and components. It's hard to get sentimental about a particular MCU when you start to see them as 'just another part'.
In general, some things to consider:
If you're just getting into micros, I'd avoid 8-bit, period. Especially for hobby projects, 8-bit is just masochistic; the part costs ~$0.25 less per unit - significant when you build a few thousand of 'em, but to a hobbyist, I'd just get the 32-bit part and enjoy fewer headaches.
My suggestions:
* Don't bother with assembly. It's a lot less painful to move to a different platform if you use C/C++ when possible.
* Skip the 8-bit AVR-based Arduino entirely. Use one of the 32-bit *duino boards (ARM, for example) or clones (PIC32).
* I like the 16 and 32-bit PICs. The PIC18 architecture is OK, but still only 8-bit. Avoid PIC 16, 12, and 10's. PICs are better suited to guys who can do everything on a breadboard, and intend to design a PC Board for a finished design. (There is the *duino-compatible ChipKit, though)
* TI has three "Launchpad" platforms. I have at least one of each. TI can't be making money on these things - shipping alone costs more than the purchase price.
* MSP430: A ultra-low power 16-bit MCU. The MSP430 Launchpad is so low-cost ($5 shipped for the MSP430), I'd recommend them as your first option.
* TI's tools for the MSP430 are Windows-Only
* There are (good) free compilers (MSPGCC, MSPGDB) and other tools available for Linux, Mac, etc.
* C2000: A 32-bit real-time MCU. I got it mostly out of curiosity.
* Stellaris: ARM M4 based MCU, full FPU. It's a much cheaper way to get an ARM than an Arduino
* All three have sockets for "booster packs" - similar to an Arduino shield. There's even an MP3 player booster pack.
* At least look at the Parallax Propeller. It's a very different, and certainly unconventional, take on microcontrollers.
* The propeller has 8 32-bit cores in it, and has (beta) GCC support (and Linux is a first-class citizen), as well as its own interpreted language, Spin.
* Everything is bit-banged; there are no hardware ADC's, no hardware UART's, no hardware I2C or SPI - just 32 general I/O pins.
* Oddly enough, there a VGA/component video circuitry built-in and available on every I/O pin.
* Propellers also have no interrupts; the idea is to simply activate another MCU core to do whatever task you would use interrupts for. As there are no interrupts, and each 'task' gets a full MCU core.
* Whether you think it's wasteful to dedicate a whole MCU 'core' (even if it is 'sleeping') to do the job of an interrupt, it's a novel solution, and may suit your needs better.
-- Sometimes you have to turn the lights off in order to see.
I had a dream to make a computer using 74 series TTL, essentially transistor logic in small packages. I managed to get a full prototype working in Proteus from labcenter http://www.labcenter.com/index.cfm The same software also includes PCB layout tools. These files were then sent to beta layout PCB pool http://www.beta-layout.com/ When the PCBs arrived some soldering with all the components left me with a surprisingly heavy board that actually worked. http://www.wellytop.com/Fnagaton/DIYComputer.html
Martin Piper
Owner - ReplicaNet and RNLobby
I'll just share my experience since it's been such a blast...
I picked up an official Arduino board, but it wasn't long before I was building 'stand alone' arduinos on a breadboard.
This led to diving in to Cadsoft Eagle to learn the basics. I took one of the many schematics out there and put together an SMD arduino board. I sent it off to BatchPcb and waited the 20 days. When I got it back I got it all soldered up and IT WORKED! The first time!
Now I'm using my incredibly small boards to drive a RFID reader in my garage so I can use the same 'key' as I have for work to open the doors. I've run cat5 out there and using RS485 I can open/close doors, check the temp and turn xmas lights on or off through a webpage.
I'm sure the platform matters, but not as much as you think. I started with little or no electronics knowledge and with the Arduino/Atmega I've been able to both get things to work and learn a great deal in the process.
Yup. My personal preference:
Arduino hardware provides a great starting point for AVR work. It's the best way to get a variety of cheap AVR dev boards.
However, rather than use the Arduino IDE, I strongly suggest avr-gcc - the initial learning curve is a bit steeper, but you gain a lot of long-term flexibility.
Most importantly, if you learn using avr-gcc, you can more easily migrate designs to AVR variants that aren't supported by the Arduino environment well or at all. For example, if you have a very basic project that can fit in a Tiny85 - it's fairly easy to migrate something you prototyped on a Mega168/328 down to that if you're using AVR-GCC. If you're using the Arduino environment, it's extremely difficult if not impossible.
(And yes, I know that the Arduino IDE is layered on top of avr-gcc - but when dealing with a microcontroller, all those extra layers of abstraction are counterproductive in the long run.)
retrorocket.o not found, launch anyway?