Companies Selling Microcontroller Kits?
An anonymous reader asks: "I'm in college working on an electrical engineering degree, and I've had a few labs so far involving microcontroller setups. I'd now like to start doing some microcontroller projects of my own devising, so I'll need a programmer, the development software, and the MCUs themselves. The problem is that I don't have a wide experience with the different companies selling this sort of equipment. I know about the BASIC Stamps and the PIC offerings, but what other architectures are there? Both of the MCUs I've named have development tools, but they're for Windows. Are there any companies out there that supply their tools for BSD/Linux? What open source projects are there working on this (I've found gputiles). As always, free (as in beer) is good for us college students. :-)"
I've been using the BASIC Stamp Tools for Linux for a while now. It uses the (unfortunately) beerfree parallax pbasic tokenizer so. If you don't want to use the BS, the Atmel AVR series is well supported by open source software, and really fast as well (native code vs. interpreted).
...free as in beer, might I suggest starting by looking at freshmeat.com, and typing 'pic' in the litle search field. When I did it came back with this url which lists several pic programers. The first three specificly indicate they are for Linux. Several of the others indicate that Linux support is included. And so on.
I think you would probably find something similar for Basic Stamp, but I think that I have provided enough suggestions that you might be able to figure out how to look for that as well...
Then again, I could be wrong. Things like that are known to happen.
-Rusty
You never know...
JK Microsystems has a 80186 board for only $69. It has 1 MB of memory and a DOS like shell. They even give you a full Borland C compiler. Pretty good deal.
m l
http://www.jkmicro.com/products/flashlite186.ht
Programming and Customizing PICmicro Microcontrollers by Myke Predko
Available on Amazon. The book icludes a PCB and parts list for building a PIC programmer. It includes a dos program (runs fine in wine) for transfering your programs to your pics.
This book is a lot of fun if your into this type of thing. I highly recommend it.
If you're doing simple one-off projects, the BasicStamp is all you need. If you think you'll be doing more projects, it's probably worth investing the time to learn a more complete architecture like the AVR from Atmel.
For $135 you can get a complete development kit for the AVR complete with programmer, leds, and push buttons that will work with almost any chip in the AVR family. You can get a complete GCC toolchain for the AVR free here and lots of support at AvrFreaks.com. That's pretty much all you need to start developing real applications.
You've already found gputils its a great place to start...
/. style i'm going to ignore that: :p
For the pic16f and 18f series also check out the small device c compiler (works with other MCU's too).
There is a related GNU pic site at www.gnupic.org it lists pretty much everything you might need.
You asked about development tools for platforms other than windows - but in true
winpicprog - i've found is quite good, i've yet to find anything in linux or bsd quite as complete...
-----------
As far as programming resources go since I'm actualy focusing on compiling c code for the pic using sdcc i've found that:
Nathan Hursts page on sdcc and the pic14 port (for pic 16 series)
and
Martin Dubuc's pic16 port
have been invaluable resources.
groklaw, wired and slashdot. The holy trinity of work based time wasting.
While I am sure that there are probably better examples of deadly serious microcontrollers out there, I have to say that Microchip's products really satisfy the hacker impulse in me.
I cut my teeth on 8080's (conditional calls and returns? WOOHOO!) and 6502's (gotta love those flag behaviours) and the PIC families rock if you're into major algorithmic gymnastics.
Everything you could possibly want in a uP is there, and executed beautifully if you're a cycle counting maniac like I am.
Microchip's tools are basic, yes, but they *are* free, mostly, and perform as advertised.
Braving the win environment is just something you'll have to put up with if you want to stay on the bleeding edge of what they offer.
As other posters have mentioned, however, there exist GNU style tools that I suspect might fulfill your needs.
I must mention, however, that the real power of the PIC products can only be accessed fully by coding to the metal directly.
Know the chip that you're using intimately.
A logic analyzer might help also, since you're going to be twiddling ports in a rather brazen fashion.
Brak: What's THAT?
Thundercleese: A light switch.. of TOTAL DEVASTATION!
Check out the msp430 series from TI - fun to program, featureful, low power, and fully supported by free software in the form of 'MSPGCC'. Good stuff
It would have been better had you been more specific on your intent. The microcontroler market is vast and to accuratly answer such a broad question is not easy in a forum like this. First figure out what language you want to program in.
If you are worried about programmers for linux look for microcontrolers that support in circuit programming (ICP) via serial bootloaders. The one that jumps to mind is dallas/maxim's 89c4xx series. Building a programmer for this device requires very little and works nice with minicom.
For more high end you can look at network based microcontrolers. Many of these have small RTOSs that allow remote programming and programs execution.
I have been looking at the different controllers from Zilog and Rabbit Semiconductor.
Rabbit is a spinoff from Zilog, I believe. If you take a look at the sites, they each have some interesting Microcontroller solutions.
There are tons of 8051-family boards out there, some quite cheap. You can use SDCC (sdcc.sourceforge.net) to develop your code in C and 8051 assembly. It works pretty well.
I recently finished working on a small project involving Microcontroller and Transceiver Interfacing.
I used the Rabbit 2000 (an older version) of the rabbit, and i found that it was easier to implement rather than the AVR.
All I did was make a simple interface PCB between the uC and the Transceiver, which worked out great.
it may be overkill for you, but i've used the handyboard (www.handyboard.com) for robotics stuff. it uses a c-esque language called interactive c, which is available gratis for linux, windows, and os x. it's a pretty decent (not great) environment. and if that fails, you can just program it in assembly (motorolla).
USB here:
http://www.mpeltd.demon.co.uk/usbstamp.htm
Very tiny here:
http://www.mpeltd.demon.co.uk/tiniarm.htm
You can program em both in FORTH if you want to (see forth) - forth is like a macro-macro-assembler where you derive your own language in it, one which is ideally suited to your problem.
Sam
blog.sam.liddicott.com
Its not that difficult to build your own solution, i have found out that many of the boards are quite pricey. As an student myself i really dont want to buy premade solutions, becouse it detracts a bit from the learning experience and its much cheaper to build your own.
0 .pdf
Many micro's can be had as samples from a lot of vendors, like microchip, maxim-ic, atmel, Texas instruments (the only ones i have dealt with).
The 8051 solution of maxim is quite good for digital experiments (lots of I/O's and very fast).
The AVR is more suited in my opinion for applications that can take full advantage of their integrated prepherials. Such as robotics or control applications.
I have no experience with PIC's as they are quite limited and difficult to program in my opinion. Lots of online information on these chips, like programmers and tools.
There are a lot of programmers for many controllers floating on the net. The best i have found is the pony prog software (free), the schematics are there and support a lot of devices.
http://www.lancos.com/prog.html
I have used the parallel AVR programmer, its just an simple 74HC244 latch with some components.
The dallas 8051 micro's have an very simple programmer with some simple tools to load programming files into them (.HEX files). See the user guide at the final pages.
http://pdfserv.maxim-ic.com/en/ds/DS89C42
These devices can be programmed with SDCC (free opensource) or Keil microvision (evaluation copy has 4k code limit).
There are many choices for building your own board, just browse on google. You will appreciate the price difference. If you are not sure if an solution works right away. You can build it first on an breadboard and when that works, build it on an experiment board.
You can check my homepage under "projects" to see what kind of things i have built. Many experimentation boards included for all kinds of devices (8051, AVR, CPLD). All have their schematics included, or links to those schematics.
These things are fairly robust for only having 20Mhz to work with allowing telnet access, FTP access, and even http access straight out of the box. This is one of the easiest microcontrollers I've seen to program do to the fact that you simply write Java code in your regular IDE (IDEA!!), rename the compiled .class file to a .tini file and FTP it over to the board. To start your program, you simply type 'java Test.tini &' and it loads into the background. These boards even have garbage collection (which makes things easier for you, but can slow things down). We were able to get the simple LED flashing demo up and running in about 10 minutes. I consider this a pretty big accomplishment since we have yet to get a serious demo running on the C-based microcontrollers from Atmel which continue to tell us we can't flash them due to some lock bits somewhere on the development kit. While some people have mentioned that the TINI board isn't really Java, I have to argue that the fact that I can write my code using my Java IDE and upload it nearly unchanged makes a pretty strong statement that this board is indeed running Java. At $100 for full Ethernet connectivity and a 20Mhz processor, I think it's a pretty good deal especially if you're a Java programmer looking to get into embedded systems. Now I just have to figure out how we tie it to our RF transmission system!
Before adopting WHATWG, read the moonlight.NET EULA [http://www.microsoft.com/interop/msnovellcollab/moonlight.mspx]
OOPic home page. The OOPic is a PICmicro based controller that includes it's own OS that offers hardware object-oriented programming. It makes working with robotics stuff actually fun.
There is also a yahoo group for the OOPic dicussion, which is the primary support forum.
Supposedly Microchip are impressed enough with the OOPic OS that they're going to start selling it directly as an offering with PIC's.
I do some consulting using the Microchip Pics (pic16f870 mostly for the moment). In school we used the motorola 68hc12.
Since you are an EE student, you might look into checking out a development board from your department. That should give you something to play with for free.
Failing that, I'd recomment getting a breadboard, a few sample Pics (free samples, w00t) or whatever microcontroller you want, instead of a development board. Depending on what kind of controller, you may need an external oscilator or that sort of thing, but overall the setup should be pretty cheap.
I cannot attest to the quality of open software tools, but for my consulting, i use a combination of Sourceboost and MPLAB to program pics. There is a linux version of the Sourceboost IDE for around $70.
A witty saying proves you are wittier than the next guy.
Be sure to check out piclist at http://www.piclist.com
This is a really nice resouce for microcontrollers. (Folks ask questions about electronics, non-pic controllers, etc.) Great place to start your search.
-MM
Programming microcontrollers is infinitely easier than it was, say, 20 years ago, but it's still extremely non-trivial.
Particularly for small projects, where R&D costs are much higher than parts costs, I'd recommend picking the controller and support tools that are best, and then running whatever platform is needed to support these.
As to controllers to use: the Atmel AVR family is very fast and clean, with low power consumption. For connection with the outside world, the EZ80 Acclaim series has a built-in TCP/IP stack and Ethernet controller, so you can serve web pages, send email, and so forth - looks nifty, but I haven't tried it. (I did use Z80s though, back in the CP/M days - the architecture was way better than the 6502, FWIW).
The student's way: (from one to another)
1. Use the free tools on freshmeat.org
2. Build your own pic programmer board (search google) instead of buying one.
Most kits cost well over a students hobby budget, but if you are hardcore into PIC programming, use Windows with Microchip's ICD2 (in-circuit debugger) and MPLAB IDE.
-n
Minix already will run on it, no porting needed.
http://www.piclist.com/techref/piclist/index.htm
t ml
Even if you're not going to go with PICs, there is still a lot of info and help available there. Even though it's called the PICList, it's divided up into several different categories including PIC, AVR, and Electrical Engineering.
Personally I don't like PICs, I use the Atmel *51 series normally. Specifically the AT89C2051. These are small, cheap, and have a lot of support. SDCC supports them very well, any any old Programmer you get on E-Bay supports them. But they're not high performance chips, so you still need to be familiar with other chips for specific needs.
You can get the AT89C4051 at Futurlec for $1.85 each when you buy 25.
http://www.futurlec.com/Atmel/AT89C4051pr.sh
Also I recommend you buy a Programmer on E-Bay rather than try to make your own. My point being, if you screw up one little thing on your programmer, you don't know where the problem lies. After you've got your feet wet, you might try building your own more modern programmer.
I'm so glad the question was asked, and that so many people answered. I've been thinking about playing with microcontrollers again but didn't want to stoop so low as to have to use Windoze as the developmemt environment.
I've got a friend who has an idea for a little gadget and was thinking about helping with the construction. He's less interested in learning uC magic than just getting the thing working so I bought an Xport 2.0 card which turns a regular Nintendo GameBoy into a little robotics development kit for the project. It should arrive in a few days.
Sigh... I'll probably have to use his Windoze machine for programming the card, but at least I can use gnu/linux for the actual editing. And overall it's going to be a fun project.
Now I'm off to check out AVRfreaks.org -- thanks everyone.
Religion is poison to rationality, and we lose sight of that at our own peril. -- Lurker2288
You can get MSP430 starter boards *very* cheap (~$20) from www.sparkfun.com. Then you can go to mspgcc.sf.net and build a GCC cross compiler, which is mildly painful, but not too bad. I was able to get the whole thing going and flash a program that blinks an LED onto the uC with about an hour of work.
Join their mailing list if you have trouble, it's quite active. There's also a very active Yahoo! group (ick) called MSP430.
The development kit, which includes everything you need, can be had for under $40US. Sweet.
Can You Say Linux? I Knew That You Could.
One really cheap option is to subscribe to a few of the Engineering rags (or read someone else's copy), and sign-up for their Design Contests.
/frank
For example, Circuit Cellar ( http://www.circuitcellar.com/ ) is an excellent magazine for anyone wanting to do small projects with microprocessors; every issue has one or two complete project write-ups. It's worth every penny of it's subscription fee.
They also have two or three sponsored Design Contests a year. You submit an application when they announce the contest, giving an overview of what you'd like to build with the kits that are part of the contest, and for very little money (or occasionally, for free!) you get evaluation boards, parts, software, etc in the mail!
Last year, they were running a contest sponsored by Renesas (used to be Hitachi) for Renesas microprocessors. Three weeks after I submitted my request, I got a Renesas H8S/2329 Evaluation board (33 Mhz / 16 MIP microprocessor with internal 384KB FLASH and 32KB RAM) and development software for free!. Can't get much cheaper than that for some pretty serious embedded hardware. The Software timed out after 3 months, but the part is supported by the GCC toolchain, so that isn't such a problem.
Anyway, that's my suggestion for a start.
And the worms ate into his brain.
I've been using the JStamp from Systronix recently and have been very pleased. If you value the ability to be able to run the same code on your microcontroller that you can run on your desktop, the JStamp is the way to go. The only problem is that the JStamp only supports the J2ME CLDC java specification - it's basically like coding for Java 1.1. Even with that caveat, it's still a great platform.
Back in the bad 'ol days the only thing a hobbyist could easily get ahold of was a PIC or a motorola. But motorolas were expensive, require more support parts, and not as easily obtained. Plus PIC had a nifty flash chip that didn't require a UV eraser. Lastly, they were available cheaply via digikey, and the assembler and full IDE were free. Parallax had a lot to do with their success in the hobbyist market with the basic stamp and then moving you to a PIC if you needed more power.
Fast forward to today.
Now everyone and their dog have flash, and many are just now realizing the gains to be had in the real market when the hobbyist market is courted, especially the younger hobbyists.
PIC - 8 bit, lots or peripherals, good peer support (piclist), some limited free C compilers (SDCC, many for pay with up to 1k words free)
AVR - 8 bit, fewer peripherals per part, but good enough, good peer support (avrfreaks), GCC
MSP430 - TI's offering, no free IDE, GCC, support is going up
Renesas - Higher end (a little distanced from hobbyists) but is coming down
The AVR and MSP430 have frequent free seminar events with a free dev board and cheap/free/discounted tools. Check online.
Atmel (AVR) also carry ARM processors (16/32 bit), Renesas has some awsome 16 bit processors, Microchip (PIC) is coming out with a pseudo 16 bit processor/DSP (DSPic) which should be interesting.
Pic one, do a lot with it, but then branch out and do some projects with the others. You won't know low power until you use TI. You won't know product breadth/peripheral availability until you use PIC. AVR has greater speed in some cases, and often more code and memory space. Renesas is used very widely in Asia (used to be mitsubishi).
Don't learn one and believe it will do everything you need.
-Adam
The 1st thing anybody should do when thinking about PICs is read Wouter van Ooijen's Starting with PICs page.
gewg_
I think anyone who is anyone who knows anything about 16bit MCUs knows about the Motorola HC12 family and it's 8bit predecessor the HC11. The HC11/HC12 is well supported by GCC, binutils and friends (also check out http://www.gnu.org/software/m68hc11/) which is also nicely packaged under Debian/GNU unstable and testing.
HC12/HCS12 devices are extremely easy to debug and develop software for. There is a fantastic Java-based simulator here. If you don't have dev tools that natively understand Motorola's BDM (Background Debugging Module) protocol, you can use a second HC12 configured as a "pod" device interfaced via BDM pins to the target, which will get you a very powerful interactive debugging console via DBug12 (example session here).
I've been doing a lot of work with the 9S12DP256 device. It has 256KiB FLASH, 12KiB SRAM, 4KiB EEPROM, 112QFP, 16 10bit A/D channels, CAN, 2xSCI, 3xSPI, etc etc. and clocks up to 25MHz.
Although HC11s are cheap and easy to come by in 1off quantitites from various retailers, the only HC12s most have available (such as Farnell) are the newer HC9S12 devices such as the one I've just mentioned.
What's the problem with this? Well on paper, nothing. These are extremely powerful devices. I'm going to use the MC9S12A64 in production; these are just $9.80 USD from Arrow.
The problem is that what with the HCS12 core and the family's peripherals being relatively new, Motorola Semiconductor is restructuring (renaming to Freescale Semiconductor), there are a godawful huge number of bugs. The most crippling being so far, SCI interrupts being basically useless (can only rely on having one INTR configured), not to mention PLL config deficiencies, BDM defects, etc.
It isn't too bad if you read the erratta sheet FIRST before chasing your tail and banging your head off the desk.
From the HC11/HC12 GCC port pages, here's a list of tested evaluation boards. Of these I've worked with the Technological Arts Adapt912, which, whilst a fine board, is quite expensive.
For a HCS12-based device (actually uses the same IC I've discussed), check out the Adapt9S12, but again at $159 USD it isn't cheap. The best bargain I've found is the MiniDragon+ which actually has more packed on the PCB than the Adpat9S12 and is $89 USD for students/schools/hobbyists. And at still less than the Adapat9S12 price is the super-deluxe-mercedes decadance model the full Dragon12 evaluation board, with on-board LCD, 2xRS485 sockets, 2xRS232 sockets, 7segment displays, speaker, IR, etc.
I can highly recommend the evbplus.com (aka Wytec) boards, but in doing so I must disclose that I have recieved the MiniDRAGON+/Dragon12 (fr
there used to be Forth based chips out there, google can find them, if you're interested in exploring an alternate direction. Forth seems to have faded away, although still in the OpenFirmware of every (current) Mac and Sun
The GNUPic project supports PIC on Linux.
+++OK ATH
I have to report that the IDE is Windows based, not Linux like the poster asked, but I still reckon the kit is well worth the price.
Hardware is a 50MHz eZ80 processor, which can switch between old-skool Z80 (16 bit addressing) or new-skool ADL (24 bit addressing). 1MB Flash, 1MB RAM. Ethernet port, yay!. Various serial ports. A few buttons for inputs. 5x7 LEDs for outputs. Expansion bus connectors.
Software IDE is Windows based as I already said. You can choose between programming in C or assembler, and Forth is available from Douglas Beattie.
The kit even comes with a little box called a ZPAKII which connects the development kit to my home ethernet LAN. I can sit on the couch downstairs with my wireless connected laptop and program the device which sits on a shelf in the study upstairs. I thought embedded programming was meant to be hardcore and involve lots of pain, but this just feels ridiculously comfortable. [BTW when you open the ZPAKII you find it is just another eZ80 pre-programmed to interface between your LAN and the development board].
I'm well impressed, even if my girlfriend wasn't.
I'm always on the search for embedded development tools for Linux. Although once in a while I have to deal with a windows based tool (which I run under win4lin), most of the time I am happily coding, compiling/linking and debugging under Linux.
I actually cut my teeth in embedded programming with the Intel 8048/8052 (yes the original 12 clocks per instruction). Those were the days - little or no embedded peripherals (the 8048 had no UART, or stack pointer for that matter), handful of bytes of RAM, a few kBytes or Flash, programming required 21V. Today's micros have much more horsepower, a lot more memory and (more importantly) lots of embedded peripherals. What is also very nice is that most modern micros can be programmed with a single bit banger from the parallel port using their ISP (In-Service Programming)!
Although the PIC micro was a great entry level micro (I first used them back in 1991, IIRC), I personally recommend the Atmel AVR as an entry level device.
Even though the AVR is 8 bits, it packs a hell of a lot of computing power into the instruction set (16 MHz means nearly 16 MIPs). I would call the AVR a pseudo 16 bit micro because many of the registers can be combined to act as 16 pointers/indexes. In fact the stack pointer is 16 bits, allowing a stack up to 64-4 kBytes (although the parts currently only have 8 kBytes of internal RAM, the ones with an external bus can have the stack (.bss or .data for that matter) outside the chip. BTW, don't get confused with the 8051 derivatives with fake out 16 bit access, the AVR has true 16 bit pointers allowing data and the stack to be located anywhere within the RAM memory range.
Just like the PIC, the AVR needs minimal components to operate. In fact, if you can live with an inaccurate clock, you can actually run the part without a crystal because of the on-chip R/C oscillator. Since there is an on-chip power on reset, you don't even need an R/C reset circuit.
As for development tools under Linux, you can find the sources for all the GNU AVR tools at my site. I also have a script that will build and install GCC, binutils, libc and GDB/insight for the AVR under Linux (and most unices). You can also find links to free programming tools that allow programming of parts in-circuit (via ISP or JTAG).
I hope this helps you on your way to embedded hacking under Linux. And remember there are a lot of other nice micros out there so keep looking, and have fun (and good luck with your engineering degree)!