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)..."
diydrones.com
arduino
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
Everything you listed is crap. The Arduino is the best of them, but only because it uses AVR. Processing is rubbish and if you do buy an Arduino all you'll end up with is an expensive and limited AVR development board. Just buy a real AVR development board instead, or even better, learn how to build one from parts, since it's trivially easy.
Want to expand your horizons and think about multi-core algos? Go with a Propeller. Arduino, in all it's forms, has a unified IDE so you can practice with a big prototype board and move to something smaller if you want a finished product. PIC Basic I've never liked, because it's Basic. A PIC and a programmer, on the other hand, will get you something that you can practice some assembly with. So will a Atmel, and you get some GCC tools to compile C or whatever else (might be available for PIC, not my favorite so I don't keep up with that). Or you can go with an ARM based board, like one that TI has put out; it comes with a proprietary tool chain and bootloader, but the FOSS community has been working on gcc and a unencumbered bootloader for it.
So, TL,DR: more details needed. What do you want to do with it, other than just learn a new technology? If you just want to learn anything, pick the cheapest!
In many ways, the golden age of electronics prototyping is dead. That was the 1960s and 1970s.
We now live in the era of electronics *specifying*. Define what you want, look for it and *buy* it, don't build it.
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).
Easiest to use is definitely the EzSBC1 ezsbc.com . 32k RAM, 64k Flash, breakpoints, Floating point, I2C, SPI, UART, USB 32 I/O, RTC, 16 1-bit ADC channels, 10-bit DAC. Programmed in structured BASIC but it is relaively unknown.
Is a Mouser or Digikey catalog, plus whatever reference material suit your abilities/needs.
"National Security is the chief cause of national insecurity." - Celine's First Law
For electronics in general, probably something like the RadioShack Electronics Learning Lab Model: 28-280 $69.99
This also would tie in with the childhood educational / toy theme. I loved mine (or the equivalent 100 in 1)
For automation, probably start with an Arduino, and move down to just the AVR or up to a RasPi. The Wifi modules, motor drivers,
and tons of sensors give you a lot of room to grow.
-G.
Learn electronic engineering
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)
This is something that proposes to solve the hardware and wireware in one system: http://www.makeblock.cc/. They're pretty new -- their kickstarter campaign just finished.
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
I've played with a little both Arduino and Raspberry Pi and both are neat and have their strengths and weaknesses. Arduino is perfect for sensing things. It's normally programmed in C and it's a little cheaper than Raspberry Pi and has less performance. Raspberry Pi is neat but be aware that it runs Linux and as such it is not a real-time operating system. There are small lags so that if you need to respond to the outside world with utmost immediacy you are still better off with Arduino. The raspberry pi is normally programmed in Python and your Python scripts can monitor sensor inputs and send data out, turn lights on, etc.
That was the turning point of my life--I went from negative zero to positive zero.
I think the Galago platform holds a lot of promise. It is very new though so you may suffer from early adopter syndrome.
http://logiblock.com/
War(n) - Gods way of teaching Americans geography.
Simply get a bread board and the components you wanna mess with. Be warned you will need a programmer if you are using Cs. They can be bought, some can be built quite easily. I prefer the Atmel family. IIRC there is a do-it-yourself programmer for Atmels.
I've been doing some research too, Netduino is pretty robust, compatible with many of the Arduino shields AND inherently supports all the .Net Gadgeteer sensors. Seems like a good start on the road to hobby robotics.
Of all the Universal Constants, here's one I know: Nice guys finish last
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.
But when i get in here it's empty..... Even with the slider set to -1
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.
Like others have said, "It depends." But, having plunked $50-ish for an mbed - https://mbed.org/ - I'm having a blast with it. It even has usable threads so you can do a form of *nix-like parent-child intercommunication and multi-processing. Like the Arduino, there are a lot of libraries available so you can just drop in a module and off you go. The LPC1768 is powerful enough that when you find you want to do a "real" project, you don't have to change MCUs.
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.
In this case brand recognition is really the best choice, you're learning a new system, make sure its one that has a wealth of educational material. A majority of makers use arduino, so there's lots of information both basic and complex available. After you get used to it, picking up development for another microcontroller will be a breeze.
Check out Cypress Semiconductor's PSoC Microcontroller: http://www.cypress.com/?id=4562
It's got tons of built in components, which you can configure graphically, like you would on a breadboard, minus the messy wiring. That plus a nice 32-bit Cortex M3 core, and you can do anything you need right out of the box.
There's an open-source dev kit which uses PSoC 5LP called freesoc: http://freesoc.net
This turd from TI has one of the worst IDEs conceived ever (Windows only, of course), and in order to download the required drivers and other materials you'll first need to create a developer account and give your personal details to TI. Then you'll need to sign a contract, in which you agree to abide by several laws that are valid only in the United States of America, including to what you can build with it and to whom you can give it to. And that's strictly 'give' - selling your creation will break the contract terms and open you up for draconian penalties and possibly even a trial in a jurisdiction of TI's choosing.
Just get a Raspberry if you need lots of horsepower and don't need a real-time OS, else your best bet is to start with an Arduino or one of its many clones.
A breadboard, soldering gun, and a large reserve of swear words is all you need for electronics prototyping.
I started with bare bones AVR. I switched to Arduino. I could see from online community support Arduino would jump start my experience. A year or so later I have made several higher ended projects including the electronic payload for a near space balloon. I would have not achieved so much so quickly without Arduino and the community support. One can still go small with Arduino (Nano, Micro, etc) and one can go barebones as well: http://arduino.cc/en/Main/Standalone. I generally prototype with the Uno and switch to the Nano or barebones when moving beyond the prototype stage.
Just after reading the headline I though - he wants to emulate hardware.
I found this: http://home.gna.org/ghdl/
I wonder do any of the devices mentioned have simulators and/or emulators?
While it's not at all what you want, there is an electronics equivalent to erector set: Snap Circuits.
It's a real shame we didn't have things like this when we were kids. It would have saved many small appliances from destruction.
Required reading for internet skeptics
Get a bread board and sample the IC's you need to make the freeduino. It's a great learning experience and will give you a great prototyping platform.
There are some really good examples of using an Arduino to interface to sensors and actuators in this book:
http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/B008SLH2DQ
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!
I really like Teensy as an Arduino alternative. Most of the Arduino libraries work with it when using Teensyduino. The big benefit is a full speed USB connection to the host, instead of USB serial as with Arduino.
The Wiring platform (from which Arduino is a fork of) is a great option for getting started.
http://wiring.org.co/
Code wise, It's about 99% the same as Arduino, so all the libraries and code you can find out there is usable, (you just have to tweak the pin numbers)
You can program Arduino boards, wiring boards, AND Atmel chips with the wiring software.
The Wiring S board is slightly cheaper.
And, best of all, the help system is just a lot of commented out descriptions above the code - and it links to a schematic so you know EXACTLY what to build to make the code in the example work.
-I only code in BASIC.-
As a Computer Engineering student doing embedded work for my senior project, I can tell you it depends on your experience, your project and how much you want to pay for it.
If you don't have much programming experience, the Arduino is great because of the ubiquity. Most people in the embeded hobbyist community uses it, and there's lots of material online showing you how to program them, and lots of high-quality examples. It's a fantastic starting point if you want to get started.
The drawback is the functionality is somewhat limited. If you want to do simple things the base Arduino will be enough, but if you want "extra" functionality like WiFi or radio communications, an LCD display, more extensive motor control, and so on, you'll have to buy add-on "shields" to do it. If you've already got the base system, they're cheaper than buying a new chip most times, but some of them (WiFi in particular) are much more expensive than similar chips with the functionality on board.
If you know what you want to do ahead of time, getting a specialized board can be cheaper and easier to use. The problem is that depending on the board you won't have the same community behind it, and you'll likely be spending more time reading the datasheets at the beginning.
If you want dirt cheap, the TI Launchpad is 4 bucks, so you can get a few if you need to.
For small, either the DigiSpark, or the Adafruit Teensy.
For WiFi, the Electric Imp is coming out soon and looks to have very easy WiFi capabilities.
RedWire Econotag has native RF support
The Penguino is something of an Arduino ripoff with a PIC microchip, but is a little cheaper and has better capabilities.
The BeagleBoard is kind of the Caddy of embedded systems. Lots of power and lots of pins but no native WiFi or RF I believe.
Start with the Sparkfun Inventor's Kit. I encouraged my coworkers to pick'em up and work through the tutorials, and now they're spending half their time coming up with concepts and building prototypes with stuff they buy from DigiKey.
Seriously, give it a go.
Have a look at the cypress PSOC family. The chips combine an ARM and an 8051 microcontroller with a pile of ad dsp and other special purpose logic as well as a modest ammount of programmable digital and analog resources.
The software is windows only, which is major (but not killer) downside for me. I've only played with one for a couple hours, but it was enough for me to want to try them out for a few things around the house, when I find the time.
growing up in the 90's i had something simmilar called steel tec construction sets and growing up back then i still wonder if i could have made some nice prototypes on a scaled down version of something that could have been made bigger
I've used the Picaxe, which I really liked, bate pics, the Basic Stamp and the Arduino. I'd suggest the Arduino for most people. Largely because of the community around it.
However, if you're on a budget like me, I'd only buy one Arduino board. Any "permanent" projects get the Arduino board replaced by a bare chip with the Arduino bootloader, which sells for about $5. That $5 chip + 5volts is an Arduino, minus the unused headers, LEDs etc.
more expensive, but stable and fun.
If you are looking at microcontrollers, I would suggest the Parallax Propeller
It's an 8 core 32 bit micro that lets you add peripherals in software.
Wire a bluetooth or wifi module to some IO pins and toss a BT/wifi object into a core to let it poll for commands.
Or you can wire a nintendo or super nintendo controller directly to it, and load a shift register object into a core to poll the game pad.
On the low end, a TSOP IR receiver module and object can be setup to take commands from any old remote you have laying in the junk drawer.
An IR reciever and an IR led both wired up on multiple robots would allow for some interesting inter-robot communications and swarm behavior.
Another core can be driving the stepper motors and watching for new commands to change what it's currently doing.
Wire some IO to a GPS module and have a core polling that to update the current location in ram.
Since all 8 cores run independently from each other, you won't need to muck around with things like interrupts or try to squeeze a bunch of autonomous modules into one monolithic program.
The propeller is 3.3v (but 5v tolerant) which makes it electrically compatible with Adriano shields, and there are a number of shields already supported by existing objects. Parallax runs an object exchange site where the community shares these objects, and you can find one to drive pretty much any common (or not so common) hardware.
It has a native interpreted language called Spin that makes multi-core programming pretty simple, and also can be coded in assembly for time sensitive operations.
There are a number of compilers made by 3rd parties to let you code in C (in fact there is a gcc project going on in the forums) as well as basic, pbasic, forth, and a few other languages.
I even just recently learned of an IDE called 12 blocks that uses a form of Scratch, where you build up a program by dragging blocks onto the work space, and it can output Spin.
As each of the 8 cores has its own video generation hardware and two high precision counters, there have been a number of home brew video game consoles made using the propeller. By just wiring up an IO line to an RCA jack, you can output NTSC or PAL. A couple more IO lines and it can do VGA too.
It's quite the powerful little micro, might be worth checking it out.
STK500 + assortment of ATTiny and ATMega processors + Atmel Studio 6.0. Once you figure out how it all works, add to your setup the soldering iron, 100x160mm proto boards, IC sockets, transistors, op amps, etc. Install on your computer Tina-TI (free from Texas Instruments) and explore the analog side too.
The Pololu 3pi robot is sweet. Small, simple, fast (3m/s!) and fun - can even be made Arduino compatible.
If you want to play with motors and sensors you could do far worse.
Don't forget vex robotics if you want motors, sensors, gears, hardware (literally), etc.
Breadboard?
You have to be smarter than the machine you're working with.
I would consider it a great jumping off point for the Raspberry Pi, which is my next experiment. I have no experience whatsoever with electronics, and it's been smooth sailing so far!
Guns don't kill people, "with glowing hearts" kills people.
breadboard - grew up doing things that way, still think faster that way
C|N>K
Ive used Arduino's of various forms in quite a few projects now, its a very capable little unit. Sure its not a number crunching processor, but thats not what its designed for. If you need a faster processor then maybe try the RPi, need more? you should probably be using a regular computer then.
The Arduino in nano form costs about $10 and is a pretty slick device. its C-ish code is easy to pickup. I really dont like the Arduino-IDE, some people love it, I hate java, man I hate java. So I use qtcreator and just compile it and upload from within there. works for me.
UDL
http://www.indiegogo.com/pinoccio Interesting because it is very small. However, the (current) lack of shields might be a detriment.
In spite of what some have said, using the devices and libraries is a good starting point to learning about electronics. It includes programming and knowledge about busses, wiring diagrams, signal rates, etc. (unless I'm mistaken). No, you don't have to know Maxwells equations, you don't need to know about semiconductor physics, v=ir, p=ie, p=i^2r=v^2/r. You don't need to know about input impedence, output impedence, you don't need to know any calculus. You may have to know about sink and source currents, but not fan in or fan out (not at a chip level). You probably don't need to worry about logic races. You don't need to know about voltage gain, current gain or power gain. You don't have to know what Boltzmanns constant is for. You don't need to know about Butterworth or Chebychev filters. You don't need to know Norton's Theorum, Thevenin's Theorem or the Superposition Theorum. You don't need to know about travelling wave tubes, cavity magnetrons or waveguide. You don't need to know about differential amplifiers, voltage controlled oscillators, phase locked loops or tank circuits. What I'm saying, is that these things can come after you start experimenting and learning. Sure its nice if you knew now (I built my first computer about 30 years ago --and yes, my first computer started with circuit diagrams), but its at least a place to start.
Arduino seems most practical and quite popular. Quadricopter at diydrones.com are based on ATMega...
If you like Java
OP said they've actually used Java after having used an actual programming language, so doesn't that pretty much guarantee OP HATES Java? I sure liked it right up until I tried to use it. ;)
I mean, c'mon
http://xkcd.com/413/
Yes, I feel bad that I have a set of Lego Mindstorms and an Arduino in my basement that I haven't done anything with yet.
I did get my EeePC interfaced with this though, via the USB control dongle:
http://www.amazon.com/OWI-OWI-535-Robotic-Arm-Edge/dp/B0017OFRCY
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 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).
I've been programming professionally for fifteen years - in C, Perl, PHP, Javascript, VB6, Actionscript, and other languages. Being a programmer, I was glad I didn't have to learn both embedded systems and assembler at the same time. For a guy like me, at a point where I've done just a little bit of kernel ptogramming for example, Arduino was really nice. "mov 0x40 0xD0" isn't what most programmers are familiar with.
I've have lots of success with MBED. http://mbed.org. I needed something more powerful than an Arduino, with excellent library support. The MBED solved a lot of problems. It has a nice IDE in the cloud, yet lets you export projects with Makefile's and cross compiled libraries. But it's more expensive than a Raspberry PI, so that makes me want to try out the PI.
+1
(Its not the most "flexible" but if you want that the OS alone will run you like 1K, at least that is what a QNX license kost last I checked. They rock though and nothing beats a super RTOS and 10k worth of hardware for flexibility!)
I see these devices as a bridge from programming to electronics. Pretty soon, pronaly within an hour or so, you'll want to connect SOMETHING to the MCU and that's where the electronics begins. For someone coming from a programming background, the MCU seriously boosts the coolness factor while learning about how to build electronic circuits controlled by the chip.
Having some experiences with old 8051, Atmel, PIC and MSP430, and after trying Arduino for an hour at a friend, my suggestion is:
- skip MSP430
- if you have money, and don't have any time - Arduino. Everything is nicely set and ready (software, boards, shields), but it will cost you 20$ for each development board.
- if you're looking on the long run, Atmel or PIC in it's base form. There are free and commercial tools, a lot of documentation. Platforms are proven, and you'll get to 20$ per board only if you go overboard. Personally, I'm more of a PIC guy, using Mikroelektronika's EasyPIC boards, and their compilers (they have C, Pascal and Basic). Compilers are 200$, board is 150$ but after 20 boards you're ahead in comparison to Arduino.
- my peers are currently switching to LPCXpresso's , based on ARM Cortex M3. Nice boards, free compiler, very powerfull, cost similar to Arduino, but the whole experience (in comparison to Arduino) in not that smooth (at least by their words, I have an LPXCXpresso board but haven't tried it yet).
Though the raspberry pi can do a lot of what the arduinio can with it's gpio pins, the arduino (well the AVR system) is more flexible. It can do PWM, ADC, interrupt-driven signalling very easily, and can do it at 5v if you wish which is often an easier voltage to work with than 3.3v that the Pi uses. Also the shields are nice to add things like motor controllers, etc.
But like another poster said, you can't exactly do AI or image processing algorithms on the arduino. But you probably can on the pi. And the pi has ethernet and a lot of horsepower. So why not combine the two? Check out the AlaMode, a shield for the raspberry pi that plugs in using its expansion port. The AlaMode has a complete Arduino Uno system onboard, and the pins on it are set up to make it work with any existing shield. You can load a firmware like firmata on the arduino portion, then use python or anything that speaks the protocol to drive the arduino from a program on the pi. Kind of a neat idea.
Or you could write your own program on the arduino and a simple serial control interface to drive it from the pi depending on your needs.
For your first few projects, you'll probably want to stick to replicating things that others have done, while you get the hang of it. THink about what you want to try, search for examples on instructables.com, and use whatever system is used in the projects you want to try -- that way you aren't trying to adapt code or debug for a different system right out of the gate.
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.
If the avenue that the OP is planning on heading down involves tele-robotics with computer vision abilities, I would suggest looking into OpenWrt. I've had great success with upgrading the firmware on various routers and putting them to use in robots (usually streaming video and serial port data back to a PC). It is a very economical way of getting into embedded Linux, and highly recommended if you like to communicate to your robot via wifi. It is not too difficult to setup a cross compiler and develop your own programs to run on the router.
An alternative to hacking a router is something like a Raspberry Pi or a Beagleboard. I haven't used a RPi, but own a Beagleboard and would like to warn you that building an image and setting up a toolchain (using OpenEmbedded to build Angstrom) for a Beagleboard (or Gumstix) is quite a task. It's also pretty difficult to get a suitable usb wifi stick and driver to operate as an access point (something I was convinced I needed!).
As far as microcontroller and platforms go, I would suggest starting off with an Arduino. You could use Arduino's Wiring programming language, but it is just as easy to use WinAVR/avr-gcc/avr-g++, C/C++ and good old Makefiles! After conquering a simple to use microcontroller like an ATmega (used on the Arduino), I recommend you use something like a PIC32 or a STM32 if you need more horsepower. I've used the SAM7 quite a bit but am somewhat reluctantly to do on any new projects.
Fuelled by insatiable curiosity
Did you mean an erecter set? Are you erect?
I think it is the best way to learn digital electronics.
Hi,
I was just playing with the Raspy few days ago. It is really simple to use its GPIO pins. You can easily do it from python, bash scripting if you do not need performance.
Here the best reference to my knowledge - the resource I have mainly used: http://elinux.org/RPi_Low-level_peripherals
Just don be afraid of the first long C example - just skip it!
http://www.ti.com/launchpad
give it a try, you won't regreat...
The OP asks for an Electronics Prototyping Platform and then goes on to list a bunch of microcontrollers. Writing software is not electronics prototyping it is software development, what they really mean is what micro controller and development environment should they use for their embedded applications. Electronics is connecting together components and the easiest way to do that is with a breadboard.
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.
Take a look to the STM32 ARM Cortex-M family, they are quite powerful and cheap 32 bits microcontrollers, and look at the STM32F4DISCOVERY board (~$15):
Features:
- STM32F407VGT6 microcontroller featuring 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM in an LQFP100 package
- On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone STLINK/V2 (with SWD connector for programming and debugging)
- Board power supply: through USB bus or from an external 5 V supply voltage
- External application power supply: 3 V and 5 V
- LIS302DL, ST MEMS motion sensor, 3-axis digital output accelerometer
- MP45DT02, ST MEMS audio sensor, omnidirectional digital microphone
- CS43L22, audio DAC with integrated class D speaker driver
- Eight LEDs:
– LD1 (red/green) for USB communication
– LD2 (red) for 3.3 V power on
– Four user LEDs, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue)
– 2 USB OTG LEDs LD7 (green) VBus and LD8 (red) over-current
- Two push buttons (user and reset)
- USB OTG FS with micro-AB connector
- Extension header for all LQFP100 I/Os for quick connection to prototyping board and easy probing.
I prototype things all the time and blog it on my website, marginallyclever.com. Arduino is your best first choice. Go with a MEGA so you have room to grow. Next up I'd suggest an adafruit motor shield so you can drive steppers or DC motors with ease. those two items have allowed me to make many different robots.
The Gertboard includes an ATmega328p which can be programmed from the Raspberry Pi via putty. It includes 12 LEDs, a motor controller, A/D and D/A converters, switches, and other components.
I am shocked to see no mention of the Maple board from http://Leaflabs.com
It is essentially an Arduino, however, its CPU is the much faster ARM cortex M3 (approximately 36x!). It has the same IDE as the Arduino, too. It also has a huge support community and dozens of projects have been done with it. It also comes in two form factors: the Arduino one and a 40-pin DIP. Since it's in Arduino factor, it can re-use all of the Ardunio peripherals and most of the code.
I have a stack of about 8 Maples at home. I love them to death. The Maple IDE makes them much easier to code than from scratch (which I have to do at my job!)
Arduino. I'm not a fan myself, I prefer PIC's but the community around Arduino is much larger. If you're a beginner starting out that is the most important thing.
The Arduino Esplora is an interesting starting point. It's a slightly bigger board, shaped like a game controller, with buttons, joystick, potentiometer, accelerometer, temperature sensor, light sensor, buzzer, microphone, RGB LED, a few other LEDs, LCD connector, and some 3-pin I/O connectors. So if has a lot of the sensors and toys you might want to play with already built in. You can program it with the Arduino software (though a few pins already have stuff attached to them, so if you want to run an existing Arduino application you may need to change what pins to use for what devices.) It doesn't accepts Arduino shields, so there are times you'd be better off with other models, but you've got lots of cool stuff to start with. I think the list price is about $50-55 from Arduino, and I saw one for about $65 in Radio Shack.
The Esplora and the new Leonardo have some other differences from the standard Uno - they use small surface-mount ATmega32u4 chips instead of the bigger socketed through-hole ATmega328 that the Uno has, so you can't just pop the chip in and out. The 32u4 has a few more pins, and has built-in USB support, so it has more flexibility for doing USB applications and doesn't need a dedicated chip for the USB interface the way the earlier Arduinos have.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
persoanlly i wouldnt recommend arduino for much more than blinking lights, yeah it works(sort of) but in professional hardware you need real time responce.
its not really a matter of taking random prototype board and seeing what you can build around it, hardware design doesnt work like that.
first specify requirements, then see what sort of solutions might satisfy them. once you move into really time critical applications cpu alone might not even be a viable solution anymore
also dont forget that electronics is not just about digital, there is an whole analog and mixed signal domain you are not looking at all
if you are looking for one tool fits all(doesnt really excist) the closest you can get is a fpga development board. want a cpu with x archidecture? you can make it. want some real time digital electronics? imagination is your limit. want to do some digital signal processing? why you can even do that
or you can mix up any combinations your application requires
V = I*R. Assume you have 5V between your power rail and ground, the forward voltage drop across a red LED is 1.2V leaving 3.8V and the resistance is ~0 so the current will go as close to infinite as the power supply allows. If you put a 180ohm resistor in series with the LED then V=IR, 3.8 = I * 180, I = 3.8 / 180 = 21mA which is exactly the right current drive a red LED to full brightness.
As others observed, the platforms are all similar. The difference is in the development tools and the education materials. > > Parallax Basic Stamp kit 'Whats a Microcontroller?" includes a fantastic text. In one weekend you can walk through projects to do most common uCON objectives: control LEDs, servos, create sound, monitor light, use any resistive sensor, detect rotary motion, read/write data, play music notes, use transistors for higher current. No need to think about what to learn next, just go through the ten chapters and then you jave the knowledge to do whatever you want. I like that each chapter has hands-on projects but also slides in the general theory like PWM, RC Time, I/O to PC, Pull Ups, Pulse shaping, EEPROM storage - those concepts will hold you for any work you do with uCON in the future. Every technique for every platform is on the web - the value is in having an expert tell you what to learn in what order and with the lessons logically building. > > You buy one box for $60 and it is all there, no need to find parts or ask around for what works. No debating about what to learn based on what parts you have - $60 and you are done. Dev board includes breadboard for easy builds so no buying shields or soldering. Power regulation & filters built-in. A servo is included. > > The other great part is the dev environment. Just download it and use it. No decisions over which compiler or stable versions - all of that is a distraction to a beginner. The language is BASIC-ish so commands are pretty much obvious. The whole load and boot thing is all abstracted. No need for special programming tools, just use the USB cable that comes with it. > > Two downsides: If you think you will need a lot of microcontrollers right away then the BASIC STAMP is expensive per unit. You won't learn about the low-level programming in assembly (but I don't recommend that for a beginner). > > I've gotten more than ten of these as gifts for friends' teens that have an interest in electronics and computers and almost none end up unused in a drawer. I also use them in classes for adult hobbyists and for 9-10th graders in general science.
So, their general ideas were around using Arduinos for actually controlling their existing robot designs (actuating motors with one interface, reading sensors with different interfaces), but to use the RPi to provide more braincells on board the robot to improve autonomy, increase functionality.
Helps?
Horses for courses.
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
I've been quite happy with using SourceBoost as a PIC environment C compiler. You can do alot with the free version, and licencing for Pro use isn't that expensive. The simulator plugins at $20 are pretty good. Alas... Windoze only
Back to the original question... I respect the Arduino project, it seems to be a great microcontroller infrastructure, with lots of hardware and community support. But I already have PIC tools and dev boards, and I've attended a few MicroChip courses.
I've got some RPi's now... for $35 wow. I'm learning their capabilities, and I'm going to try talking serial or I2C to a PIC board. Could be my new go-to ethernet-enabled platform.