The Ultimate Low-cost Dev Board

We see a lot of microcontroller dev boards here at Hackaday, so much that we’re jokingly considering changing our name to Board a Day. These devices – from Arduinos to Arduino-compatible boards, very, very small boards, to extremely powerful ARM devices – are a great way to learn about the wonders of controlling electricity with code. There’s a problem, though: if you’re teaching a class on programming microcontrollers, giving each student a $20 board is nearly out of the question.

This is where the shrimp comes in. It’s a very, very minimal Arduino-compatible circuit meant to control all the pins on an ATMega328. The components only cost about £1.40 ($2.25 USD) when bought in volume, making it perfect for teaching a class or workshop on the Arduino and giving each student a circuit to take home.

The basic circuit is just an ATMega328 – the same microcontroller used in the Arduino Uno – with a few caps, resistors, and a 16 MHz crystal. It’s a very bare-bones system, but once built and programmed provides all the functionality of a $25 Arduino.

Like all microcontroller platforms, there’s the chicken-and-egg problem of actually programming the device. The Shrimp team is using a CP2102 USB to UART bridge to program each shrimp. Not an inexpensive part, but it is of course possible to only have one serial bridge for each workshop.

58 thoughts on “The Ultimate Low-cost Dev Board

      1. With Energia, the MSP430 Launchpad has the same development environment as Arduino. Arduino has some benefits over MSP430-Launchpad of course, which is expected when looking at the price. You can probably use the cheap MSP430-Launchpad as the serial programmer for Arduino also :-) … anyone tried that?

  1. The shrimp is nothing new. Sure you can build a arduino compatible board on the cheap, but you will still need a $15 usb to serial adapter, or another arduino board to program the thing. You also need a power supply or regulator circuit. However, the more people that know about the cheaper alternatives the better. This is a good idea to make bulk (1000+) boards to teach kids in the class room, just take turns programing. Where can you bulk order ATMega238 (with optiboot i would assume) at the price needed to get this build that cheap?

    http://www.arduino.cc/en/Main/Standalone
    http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_2151259_-1

    1. We’re getting the ATMEGA328-PU chips from Mouser. The CP2102 boards are very cheap, and can typically be issued to everyone in a class. Here’s where we buy them.

      http://www.ebay.com/itm/USB-2-0-to-UART-TTL-6PIN-Connector-Module-Serial-Converter-CP2102-New-/190685792376?pt=LH_DefaultDomain_0&hash=item2c65c24878

      They provide a regulated 5V and 3V power supply from the host’s USB, eliminating the need for a power regulator for prototyping. Many projects just run straight off 3AAs when deployed.

    1. We typically provide each participant a CP2102 USB to UART programmer which costs us around £1.65 in the UK. They are then able to program the £1.40 circuit when they get home.

      However, for schools under extreme cost pressure it’s possible to have fewer UART devices and still provide kids with functioning boards.

      For many projects, once they have been programmed in class, they may be substantially functional at home, for example the Simon Memory Game or Persistence of Vision display, which can operate very well on batteries, after being personalised with text, icons or tunes by the pupil in class.

      1. We’ve done whatever we can to ensure compatibility with Arduino, official and contributed libraries. This relies on flashing the bootloader and setting some standard fuses to satisfy the expectation of the programming environment.

        It is feasible to override the standard flashing behaviour and set the fuses to use the internal clock, but we’re concerned about timing compatibility assumptions, especially in contributed libraries.

        Additionally, we wanted to ensure it was easy to replicate the configuration we use all around the world. Fuse setting, though well documented, is a somewhat specialist activity.

        It is very easy to purchase ATMEGA328-PU or ATMEGA328P-PU chips which are pre-flashed and pre-fused for Arduino use with a standard 16MHz external crystal, even in small volumes.

        The price of the crystal and pair of caps to satisfy the “Arduino assumptions” is around 9 cents.

      2. As long as you’re not trying to push the serial port to full speed i’ve not had issues doing communication with it. 57600 is the highest i’ve taken it reliably on the internal clock. Though the bigger issue with the internal clock is that keeping acurate time with millis()/delay() is much more difficult since the internal clocks will vary a bit from 8Mhz, so if you need accurate timing of the code you probably won’t have as good of luck with the internal oscillator.

        1. You can tune the clock if you have an external signal to measure. — Generally you do it at bootup with some prexisting signal. (V-USB does it that way. But I’ve wondered if the value drifts over time or not, maybe you could just sample a clock signal once and put the adjustment value into the EEPROM?)

          For me, I don’t buy in bulk, but crystals are still cheap — it’s not usually cost for the crystal that matters so much to me, but when working with ATTiny85, etc., where pin count is extremely low (5 total IO pins for normal usage [six if you disable reset, which essentially bricks the device without a special programmer, so you better hope your firmware is solid]). — Bringing that down to 3 total IO pins if you use a crystal…

  2. Why not only buy the bare microcontrollers and parts and have them breadboard it themselves?

    That would be much more satisfying and it’s a simple enough circuit.

    If the barrier to entry keeps getting lowered, at some point we will hit a wall with people thinking the programming itself is a chore and what then?

    1. We already hit that wall. Programming is too scary, so Arduino calls them “sketches” instead.

      Apparently the barrier for teaching isn’t low enough either. I can just imagine this class:

      “Ok, we gotta pass around the programmer. So you each get one turn to program your board. Aww, your program had a bug? Too bad, it’s someone else’s turn. You’ll get to take home the free board and play with it more there, if you buy your own programmer and wait for it to arrive in the mail. Surely you’ll remember how it all works by then, after doing it once.”

    2. John, hopefully this reply doesn’t come across as facetious, but your suggestion is exactly what we’re doing at @ShrimpingIt.

      You start with a breadboard layout which entirely mirrors the stripboard layout, and indeed you construct it from bits.

      That’s central to the way we hope pupils will pick up the Maker bug – to get direct exposure to the way people like you would choose to do things for simplicity, flexibility and low cost.

      We definitely need more steer from other Makers’ great ideas so keep them coming.

      And yes, we did get HAD’d. Server offline and working on it.

  3. while i have to say it is a good board, i also have to say;

    usually a $3250 USD tuition cost covers the measly $250 for a full-featured altera dev board AND the $60 arduino…

    or he is talking about highschools?
    if so, then yes, a 10$ or 20$ board might make or break a deal (vs. a 60$ arduino)

    PS: im TRYing to be neutral

    1. In many European countries, public Schools and Universities are free of charges for students.
      This means you can become an Engineer or a doctor for free. On the other hand, they try to save on everything, just as explained in article above.

    2. In US high schools today, the rate at which students amuse themselves by destroying things is incredible. You have to factor in steady replacements. Anything with batteries is a problem. Students steal the batteries from the classroom calculators as fast as they can be replaced. The calculators can have a screw for the battery door, but the school district buys junk batteries and they are always going dead during class and need replacement.

      Also, cool stuff that will fit a pocket vanishes at a pretty good clip.

  4. For such a devboard, capacitor and resistor are useless on the Reset line. The board can even be smaller. Also, I don’t see what the diode is doing here also.

    And if you take time to create a new board in arduino software (by modifying board.txt), you can also remove the crystal and its capacitors.

    one AVR and a bunch of capacitors….much better ^_^

      1. it’s the two little components you think you can spare. then you wonder why your micro-controller doesn’t boot at random occasions with no apparent reason.
        the two capacitors are used together with the crystal, as feedback for the mcu internal oscillator.
        without them oscillation will not always stabilize, and the mcu will not get its clock.

  5. Wow, with attention like Hackaday we’re getting more hits than ever before and looks like the server’s predictably fallen over. Wish I’d set up caching beforehand :(

    In the meantime try us at @ShrimpingIt or Google’s text cache. For example you can see the ‘recipe’ page cached at…
    http://webcache.googleusercontent.com/search?q=cache:shrimping.it/blog/bill-of-materials/&strip=1
    …while I try to bring our cheapo rack server back.

    To answer some of the questions in this comment thread, the aim of the project is to curate a resource for non-specialists to lead them through breadboard and then stripboard Arduino-compatible projects, which not only helps to keep the cost down, but teaches authentic prototyping skills.

    We’re basically attempting to curate others’ knowledge from all over the web, the Arduino forums etc. and we don’t claim to own this idea or circuit in any way.

    Indeed we don’t even have a shop to sell them. Instead we try to list the bill of materials, and the best known suppliers for bulk orders by others who can then follow our pictorial guides (schools are our major collaborators so far). We also run these workshops ourselves.

    The aim is that people following our breadboard/stripboard “experiments” or “kits” are prepared to embark on their own Maker projects. Using a PCB by contrast can tend to disempower people.

    We started with the Shrimp canonical breadboard design for an Arduino Uno compatible, and we’re now teaching workshops with ‘kits’ like POV displays, Simon Memory games, Steady Hand Games, Quiz buttons and other simple projects, with full breadboard and stripboard guides and classroom materials prepared.

    Looking forward to collaborating with others who are interested, just grab us on Twitter @ShrimpingIt.

    Running a number of workshops locally in the UK with local teachers and teenagers if you want to get involved. If we can help you do the same elsewhere in the world, then we’d love to hear from you.

    To the post author, do you think you could provide a link to our Twitter account for now (which links to our webserver), so people aren’t just faced with the dead server at shrimping.it?

  6. Learning uC’s with an Arduino is a BAD idea, kinda the same as learning basic maths with a calculator. If that seems wrong to you, ask a maths teacher why you shouldn’t do that.

      1. I think learning math with a calculator is a bit more like learning C by copying sketches from online. I started with a basic stamp 2 (remember those things?!) in high school and moved on to the arduino later on. Later I moved to python with the firmata library in order to be able to use the I/O pins in a more versatile way then previously. I still do duino projects now and then but like everything, there comes a time when you will outgrow the arduino on it’s own.

    1. I can’t agree with the calculator analogy, because as far as I know no one is introduced to printed tables slide rule or electronic calculators on the onset of math instruction. All uprocessor development boards are basically teaching tool to to introduce uprocessor programming, just like paper and pencil are used to introduce students to math and writing. I know of no way to teach programing and see the results of the effort without using advanced tools.

      1. Sorry if I wasn’t clear, learning basic maths with a calculator is BAD – you skip most of the essential thinking for button pushing. [5318008]
        Really? you couldn’t teach uC programming with a data sheet, text editor, assembler/compiler and terminal program? Bollox! I know you could ;)

  7. Appears that shrimp.it has become over loaded, so unable to view the blog. Would be great if the maker community would devise a way to help mirror projects inexpensively to spread the load, assuming a creator permits it. Those who will be doing the obstruction get to choose get to choose what platform that will be used. Affordability is one criteria is to consider. The instructors’ familiarity of it, and now days online support. Perhaps most important a library of ready to use projects (circuits and code), that the student age group is likely to be interested in duplicating. Here’ to this working out well for Cfin, and his students. I’d go as far to say he may be doing or can do a better job at what the RasPi foundation set out to do. At least in his part of the world anyway.

  8. …Why?

    All you need is a 2 caps and a crystal. The rest is just fancy extras. In reality you should be able to use the built in oscillator.

    I’ve done this for awhile (caps&crystal) and it’s worked without problems. No diodes or a mess of caps all over the place.

    1. Couldn’t agree more, that the simplest possible circuit is worth people knowing about.

      At @ShrimpingIt we tend to teach this Minimal Shrimp as the first step, when breadboarding a flashing LED, before moving on to a Protected Shrimp which is suitable in more noisy environments.

      It’s really important that learners are exposed to the issues of different designs and the strengths of different configurations, if possible without overwhelming and confusing them.

      That’s one reason for having a clear, incremental, progression through different circuits. See image links below…

      http://shrimpingit.files.wordpress.com/2012/11/shrimpduino_bb_minimal.png

      http://shrimpingit.files.wordpress.com/2012/11/shrimpduino_bb.png

      1. Personally i’d say that the graduation point between just a bare bones arduino and an actual dev board would at least be to make a legit pcb. pcbs are not really that expensive compared to perf board and you’d save on things like wire. even if it’s etched in the class it would still be a step up from the perf board.

  9. These are called hackaduinos. I built a bunch a few years ago. http://mystry-geek.blogspot.com/2012/04/building-hackduino.html

    I prototype on my arduino, and then transfer the curcuit over to one of these. I bought 25 AVR 328 chips and programmed the arduino boot loader on them all.

    The great thing about these boards is all the free space on the perfboards to wire up a bunch of components. Without the need for a second board riding on top they are a much smaller form factor too.

  10. Why do you need the usb to serial adapter. Just find an old pc with a serial port, hell most new motherboards still have at least a header for serial. Just attach a cable to it and off you go.

Leave a Reply to larsieCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.