Step 17: Modules, Bootloaders, and "hidden" Microcontrollers

A number of companies have made a business of selling "modules" , usually incorporating some sort of microcontroller and some of its support components with a high-level-lanaguge development environment, some sort of chip-programming capability, and communications. This gets rid of the need for any special hardware tools (usually just a cable to your PC), provides the HLL, and in general lets you get started much faster than the "pure" microcontroller route. The main disadvantage would be price ($30 for a basic stamp vs $5 for a chip with similar capability) and (sometimes) performance (the basic stamp uses interpreted basic, which is very slow compared to native code.)

Parallax: home of the Basic Stamp
Basic Micro "ATOM"
SunSpot Java thing
Modules/IDEs with ethernet/etc
Arduino: open source hardware and IDE for Atmel AVR

Another disadvantage is WRT the education aspect. You won't learn much about "microcontrollers" by programming a module in a HLL that hides ALL the microcontroller details.

how to program micrcontroller as i dont understand this one
<p>GUYS I NEED A BASIC MICROCONTROLLER(for controlling robot with few other specifications) FROM TEXAS INSTRUMENTS FOR A CONTEST.</p><p>KINDLY<br> SUGGEST ME A CONTOLLER QUICKLY JUST NEED WITHIN FEW HOURS if u can help<br> me suggest me @ sbkbhuvaneshkumar@gmail.com or mail2jp07@gmail.com</p>
<p>I am totally new in the MicroController thing. I have some experience in music electronics and basic programming.</p><p>Now im looking for a small solution to add sampling to my Guitar. It would have 6-8 simple keyboard switches that trigger a sample from an SD-Card that then goes out to a simple audio jack output. Also it should be able to power three leds (only one active at a time). Programming doesnt need too much memory since all it will do is: two buttons allow to go up and down through the three banks. The other buttons are each assigned to one audio sample on the sd card for each bank. The leds show which of the three preset banks are active. The other 4-6 buttons trigger the sample, pull it from the card and play it to the audio jack.</p><p>What kind of microcontroller could you recommend for this kind of purpose? </p><p>thanks in advance for your help.</p><p>greetings</p>
Your &quot;programming&quot; is more complicated than you think because both reading an SD card and playing the data as audio are relatively complicated tasks. A number of Arduino users have been surprised by &quot;all I do is serve up SD files on a web server (SD library plus ethernet library: similar complexity) and my memory is almost gone!&quot;<br>An arduino-like board would probably work OK, but something like a PJRC &quot;Teensy 3.2&quot; would give you a lot of breathing room (and it has an excellent audio library!)<br><br>I really need to update this instructable to reflect the changes in the &quot;microcontroller decision process&quot; that have occurred since (and because of) the Arduino popularization!
<p>thanks for actually taking your time to reply.</p><p>Yeah, i looked up a lot of videos and articles on the whole process of reading sd cards and playing audio. I found a good video on how to do the sd/microcontroller communication through serial peripheral interface. (so at least i no im looking for a controller with SDI/SDA and SDC pins) It also explains the whole wakeup and communication protocols to actually read and write data onto the sd. The whole playing audio business is what gives me a headache right now. I am a luthier and don't have any kind of background in computer sciences, except a bit of playing around in c++ and basic.</p><p>I actually started out by thinking about getting an arduino clone but for my purposes every inch of space i can save is a big plus. Thank you very much for the recommendation. I will order one Teensy and just try to figure out the whole thing step by step. If you ever get around to writing a follow-up on your article i would be very interested to give it a read.</p>
<p>I am working on my FYP, in which i am using some sensors, dc stepper motor, a ziggbee. </p><p>this is my first experience working on microcontroller i haven't any idea about microcontrollers. my instructor gave me two option either go with PICmicrocontroller or AVR. can any one tell me which one i should use??????? that would easy for me.</p>
<p>Tech Online &quot;Virtual Labs&quot; does not exists anymore!<br>Good article, but it is still difficult how to select. For example what about ESP8266? How to compare with other chips. It will be good, if there is comparison table.</p>
Yes, this article is almost 8 years old now. It was supposed to have put forth some general principles that a hobbyist might use to select a microcontroller, rather than get into a &quot;x is better than y&quot; debate. And those principles were supposed to stay reasonably accurate regardless of changes in specific products. To some extent, I think this was a success, and I'm not at all interested in trying to maintain a comparison table of everything that exists, especially if you want to include chips/modules that have traditionally not been documented in English or sold in the US.<br><br>On the other hand, I think the question has changed somewhat. Today, whether you use a single chip or a module-scale product has become a much more significant issues, and the breadth of the &quot;modules&quot; has become very large. For many hobbyists, the decision now is &quot;Arduino or Raspberry Pi&quot;, rather than &quot;AVR vs ARM&quot;...<br>
nice article but i am still confused wat to choose microcontroller or microprocessor??? <br>I am a final year student working on my FYP project, which contains 9 resistive type sensors, 5 contact sensors and 2 accelemeter or Gyro.also i have to use a display to show output and Speaker with text to speech converter. now wat should i use??? microcontroller or microprocessor???
The original article is getting a bit old, but...<br>OK. It sounds like you need 9 A-D channels with relatively slow sample rates, 5 digital inputs, I2C or SPI for the Accel/gyro, some sort of display interface (which can range from one pin with an external intelligent display of some kind, to &quot;many&quot; pins dedicated to AMLCD displays), and your text-to-speech (are you using an external text-to-speech module, or do you want your project to generate audio directly?)<br>This is enough 'stuff' that you can immediately eliminate some candidates; an Arduino Uno, or the microcontroller it uses, is probably not enough, for example.<br>The &quot;microprocessor&quot; vs &quot;microcontroller&quot; issue is usually determined by memory use, and you don't say anything about what your software needs to do or how big you expect it to be. You can get microprocessor systems with megabytes to gigabytes of RAM, while it's a rare microcontroller than has more than 64k.<br>A big question is &quot;chips or module&quot; - A beaglebone will probably do everything you need, if you're &quot;allowed&quot; to use a pre-built system like that (with some added stuff for specific sensors, plus software.) OTOH, a Beaglebone is probably above the complexity of what you would be expected to build for this class of project.
<p>Wow, answering that ... your self control must be amazing; hats off!</p>
can i get your email id so that i can give u full description ....plz
<p>i am working on a project in which i need to to produce an interface b/w 2 usp ports for data transfer.plz suggest which micro controller will meet me requirements </p>
<p>Insufficient information. Insufficient spelling. I assume you mean 2 USB &quot;things&quot;, since USB is more of a network connection, and you don't actually transfer data &quot;between two USB ports.&quot; It becomes highly dependent on what types of &quot;things.&quot;</p><p>An FTDI VNC2 microcontroller will probably do it, but it may not be the easiest solution. And it's sorta weird in several ways.</p>
<p>Thank you for the information and code of ethics. Here are some extra information about getting free samples.</p><p><a href="http://www.ladyada.net/library/procure/samples.html" rel="nofollow">http://www.ladyada.net/library/procure/samples.htm...</a></p><p>My blog </p><p><a href="http://embedded-egypt.blogspot.com/" rel="nofollow">http://embedded-egypt.blogspot.com/</a></p>
HAPPY BIRTHDAY article - you turn 7 years old today! ;-) <br>What a great write up this is - but/and may I humbly suggest a revision? I'm guessing quite a few things have happened in 7 years. For instance, the Arduino mention probably deserves some more prominence to name one thing. <br>Again, thank you! <br>&lt;:-)
which microcontroller should i use if i want to store some images captured by a camera which is to be interfaced with the microcontroller itself!!
This instructable offers a set of guidelines for choosing a microcontroller, it can't (and *I* can't) recommend a particular micro for every application that comes along... That said, any sort of image processing usually moves into the realm of needing multiple megabytes of memory, rather than the &quot;several kbytes&quot; that you see on most microcontrollers. That probably means that you'd be best off with one of the newer &quot;single board computers&quot; like Raspberry Pi or BeagleBone. (In fact, there is/was a BeagleBoard variant <a href="http://leopardboard.org" rel="nofollow">LeopardBoard</a> specifically designed for experimenting with various camera modules.&nbsp; It's a bit old and expensive by RPi standards, but not horribly so...)<br>
We were discussing this very topic on the Digi-Key TechXchange forums the other day: http://www.digikey.com/techxchange/thread/4280. If you need help selecting a microcontroller for a specific project, the folks there are a big help!
I'm not sure if anyone will read this instructable, or this comment, any time soon... But I must warn you. Stay away from Zilog. To put it nicely, actually *using* their chips is... not easy. <br> <br>I've tried to diagnose the problem, but their help desk is no help and by this time (2012) they haven't updated most of their line. It is sad, because a lot of the chips actually have fairly nice features (high drive IO pins, to name one that is hard to find, and a good amount of timers, something I've only seen on SiLabs 8051s) but are impossible to use off of the development boards. <br> <br>If anyone has solved these problems... I've got some ZNEO motor control &micro;Cs laying around I still want to use. Help!
After doing a very small project using PIC16F870 and doing a big project using ATmega8, I've written a comparison between AVR and PIC on my blog: <br> <br>http://my.opera.com/CrazyTerabyte/blog/2011/09/08/comparison-between-microchip-pic-and-atmel-avr-microcontrollers <br> <br>I hope it's useful for other people as well. <br> <br>TL;DR: In my opinion, AVR is better than PIC.
go for p89v51rd2 make a simple development board interfacing max232, it is d best<br>
I've use ST ARM module. STM32VL Discover kit very Succesfull. http://www.signal.com.tr/arananurun.php?urun=STM32VLDISCOVER&amp;&amp;id=129339
What about the STM32F103 series? Not so hobbist-friendly because they don't have DIP packages, but they seem to be very reasonably priced (cents more than 8-bit atmega48v) and a performance beast, having 32-bit ARM cores and reaching 72 MHz. I have no idea if are there free IDEs and cheap ways of &quot;burning&quot; the mcus, though. Anyone ever had any experience with them?
8031 and 8032 is cheap, can be pulled as a 8051/8052 and bootstrapped from 64K each of RAM and ROM, if you have an eprom programmer. Eproms are cheap nowadays and I once built my own eprom programmers and was able to erase them on a fluorescent "blacklight" tube overnight, when I was REALLY unable to afford new equipment. Every non-USB keyboard probably has an 8048 chip, which may be EPROM compatible, but with limited external memory and different instructions, and has been around since the days of ATARI 2600. MicroProcessor mode systems just require extra wiring for address and data buses and separate i/o and memory but are otherwise doing the same things as MicroControllers. The chips I just mentioned have both modes. Many others do too. The art of emulating unsupported i/o is called bit-banging, which is easy for serial (except USB, ethernet, and other monsters), challenging for video, and annoying are those monsters which have wasteful complex protocol overheads that drive me nuts and slow everything down.
Entertaining, VIRON. I just happen to have an extra keyboard lying around. Could you direct me on how to build an EPROM programmer- the circuit side? This question almost 4 years later.
You understand that you need the microcontroller from the keyboard (that &quot;maybe&quot; is the correct type), PLUS an EPROM (and maybe RAM) chip that you have to buy, plus a couple of &quot;glue&quot; chips and a couple dozen wires or a PCB to connect it all. It's sort of an entertaining exercise if you've harvested the components from trash, and the alternative is $30 &quot;new&quot; chips (that still need those extra components), but that has long since ceased to be the case. Even if you were to want to experiment with the older architectures, the cost for a flash version of the 8052 (new) is about $2 (http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;name=AT89S52-24PU-ND )<br>
very nice article and fair review, <br>i've been using PIC AVR Zilog and now Rabbit
I use ARM microcontroller.<br><br><br>Regards,<br>Dave T.<br><a href="http://www.tokomikon.com">ATmega8535</a> | <a href="http://www.tokomikon.com">ATmega16</a> | <a href="http://www.tokomikon.com">ATmega32</a> | <a href="http://www.tokomikon.com">AVR USB ISP</a> Seller<br>
Thanks for the info. I really like free stuff!
Thanks for all the information. It really helped me out.
You mention Parallax;s Basic Stamp, but you missed their coolest and most useful two MCUs. The SX and Propeller. The SX is sort of in the Basic Stamp family, but it runs assembly and I think it is a RISC chip. They are cheap, easy to program and are less "hobby" than the Basic Stamps or Javalin chips. The Propeller can run Assembly natively or interpret Spin out of the box, it has 32 general purpose I/O lines which are accessible on all 8 Arithmetic Logic Units (cores they refer to as "cogs").
There is a SX-based Stamp, IIRC. Otherwise, I'd describe the SX and Propeller as being sufficiently "far from mainstream" as to not be good choices for a beginner...
I'd agree, while I love the propeller IDE and programming language, it is totally importable across architectures, as nothing else uses their proprietary spin code. However, they now have a C compiler for the Propeller, so it may not be as bad a choice for a beginner as it used to be.
I would like to see a start to finish tutorial on recovering parts from old boards, reading the data sheets and learning what the individual chips are capable of doing. I have hundreds of chips from Motorola to Toshiba sitting around that i removed from electronic boards. It would be nice to know where to start to use this stuff.
This is instructable is just what the doctor ordered. I want to get into microcontrollers and spent several hours reading piecemeal accounts trying to gather enough information before I&nbsp;found this most excellent write up. I should have know that Instructables was the place to start. <br /> <br /> FYI - this link is broken: <a href="http://www.geocities.com/westfw/trip-report-msp430.txt" rel="nofollow">&quot;Trip report to an Early TI seminar</a>&quot;<br /> <br /> Double Plus Good.<br />
Thanks!&nbsp; Broken link fixed (geocities went away...)<br /> <br />
RIP geocities<br /> You will be missed T_T<br />
Another bad link.<br /> Step 10.<br /> <a href="http://www.avrfreaks.net/index.php?module=Freaks%20Devices&amp;func=viewDev" rel="nofollow">Device list at AVR Freaks</a><br />
honestly, this instructable was mostly about relatively SMALL microcontrollers, where most of the electronics of the entire project is in the single chip. Your project sounds more complex than that (and not at all an ideal introduction to microcontrollers or hardware in general for a person with your background.)<br> <br> You could look at the modules that claim to run JAVA or JAVA-like programs, for example: <a href="http://www.systronix.com/store/tini.html" rel="nofollow">http://www.systronix.com/store/tini.html</a><br> Or linux/android Single-board computers (Beagleboard ?)<br> Or even a conventional laptop or DC-powered PC-class machine, perhaps with things like Arduinos to use for real-world interfacing...<br> <br>
double post :)
Huh. It WASN'T, it had different text. Honest...<br> Anyway: that link isn't bad, it's just (now) an empty page (with a referral to a relevant page at Atmel.) There are hints that it might come back, so I want to leave the link here alone...
Ok, I am so confused, I have been looking around for the better part of a day now trying to make sense of this all. You see, where I work we are converting a gas powered go-kart to run on hydrogen, and to manage the fuel system, which is quite complex actually, consisting of several different stages of fuel, we needed to code our own fuel system controller. To do this, one of the other people working on the project was going to use one of the Renesas M16C microcontrollers to do this, but he moved, and now, as the only one on the team with any programming experience, the job has fallen to me. Now granted, I am an amateur Android developer, but the way things are done with these microcontrollers is truly baffling to me. So basically, my boss has said that we can get whatever other controller we need for the project, but it needs to be done fairly quickly. What microcontroller or any other type of product can I use to accomplish this task in a timely manner, going from average Java knowledge, minimal C++ knowledge, and no microcontroller/computer hardware design knowledge? I know this topic is old, but I didn't know where else to ask. Thank you so much!
honestly, this instructable was mostly about relatively SMALL microcontrollers, where most of the electronics of the entire project is in the single chip. Your project sounds more complex than that (and not at all an ideal introduction to microcontrollers or hardware in general for a person with your background.)<br> <br> You could look at the modules that claim to run JAVA or JAVA-like programs, for example: <a href="http://www.systronix.com/store/tini.html" rel="nofollow">http://www.systronix.com/store/tini.html</a><br> Or linux/android Single-board computers (Beagleboard ?)<br> Or even a conventional laptop or DC-powered PC-class machine, perhaps with things like Arduinos to use for real-world interfacing...<br> <br>
I know this post is a couple years old now, so chances are things have changed a little since you wrote it, but I have to disagree with your assessment of the &quot;module&quot; type setups (arduino, picaxe, etc) as being bad for learning about microcontrollers in general.&nbsp; I personally have been using an Arduino for about a week and I have to say what I've learned about the ATMega controller, and microcontrollers in general, is nothing short of amazing to me.&nbsp;<br> <br> Before the Arduino, these things were black boxes, and while I had an interest in electronics I had nearly zero working knowledge.&nbsp; Now I feel relatively confident that I could read some reference material on an Atmel chip and work out how to utilize it in a project without the Arduino platform.&nbsp; Other brands would likely take a little more work getting used to the differences, but it now definitely feels within my reach, whereas before I didn't even think such a thing was possible.<br> <br> That's the power of boards like the Arduino and other hobby boards - they abstract away the nitty gritty, but it's only one layer of abstraction, so that learning the nitty gritty isn't a huge leap if that's what you want to do.&nbsp; I'm pretty sure that's what I'm going to do, but like I said I've only been into it for about a week so far.&nbsp; Even without learning the absolute bare metal workings of the chips, though, the Arduino and others can do anything their respective chips can do, you're simply locked in to certain chips lines.&nbsp;<br> <br> The hobby boards allow you to play with microcontrollers without making you start from scratch, which is a significant barrier to entry.&nbsp; It makes microcontrollers significantly less accessible.&nbsp; Plus, while the brand-name boards may be $30+, you can easily find kits for less than $15, and if you move certain functionality off board (like the USB or Serial connection) you can drop it down to below $10 - about what you'd spend to use the same micro-controller without the platform.&nbsp; And once you know how the board works, incorporating it directly into a project board is no problem at all and does not cost much, if any, more than it would to use the microcontroller directly.&nbsp;&nbsp; At that point you're only paying for parts.<br>
I recently used a PICAXE18x for a school project. I needed something cheap, easy to learn, and easy to get setup. The PICAXE turned out to be the best choice. It kicked butt, was really easy to program, really cheap to set up, the chips are really cheap, and it was powerful enough for what I was doing. It was the first time I'd really played around with a microconroller, and I had it working the day I got it.
Well done! I've been reading some off-the-net material about these things before but this instructable sums the thing up - compact and informative.<br />
This is by-far the most comprehensive, understandable, and informative Instructable regarding electronics I've ever seen. Without even actually including something to build, as most electronics Instructables do, you've far surpassed my expectations of this guide.<br /> <br /> You've helped my decision alot, as I was using AVRs from Atmel, and was experimenting with Arduino, but was thinking of switching to (or expanding to) Pic, as it is far-wider spread, and more comprehensively documented, and you guide re-affirmed this for me.<br /> <br /> As I type this, I've ordered a Pic starter kit, including some Pic chips of various sizes, a programmer, and a book detailing some simple, beginner-level circuits. Thank you very much for this extremely well-written instructable!<br /> <br /> Bravo!<br />
&nbsp;AVRs are becoming more and more popular than thy ever were. Just interested, what PIC starter kit did you buy?
Thank you!&nbsp; Don't forget to read the comments as well as the instructable itself; I was very pleased with the level of additional contributions via the comments threads...<br /> <br />

About This Instructable




Bio: Middle aged geek username also works at yahoo.com, mac.com, comcast.net, wharton-10.arpa
More by westfw:Visualizing EAGLE Edits with a Gerber Viewer Make a Double CD/DVD Case From a Single Sheet of Paper Single Sided Really Bare Bones Board Arduino in EAGLE. 
Add instructable to: