Click here to Skip to main content
15,892,517 members
Articles / Internet of Things / Arduino

Arduino: Just Say No To Shields

Rate me:
Please Sign up or sign in to vote.
4.37/5 (9 votes)
6 Jul 2018Apache4 min read 19.7K   6   14
Arduino: just say no to shields

Background

Note: Auto-pulled from my blog: http://raddev.us/arduino^

I only recently bought an Arduino Uno knock-off board because they finally became inexpensive enough (less than $12 USD). I'm very cheap.  

Originally, when I started with the Arduino (really the AVR ATmega328p-pu), I wanted to be closer to the metal because I thought it would allow me to learn more about what was going on.

I read the book,  AVR Programming: Learning to Write Software for Hardware 1st Edition[^] by Elliott Williams. That book describes how to program the ATmega328 (and ATmega168) chips directly.  

A Lot of Work

It shows you how to hook up an AVR ISP programmer to a breadboard and how to use a text editor and AVR-GCC. You write all your programs in straight C.

It's actually a lot of work. It's a lot more work than you have to do when using the nice Arduino IDE that does everything for you.

You Learn A Lot

However, I also learned a lot about what was going on. I also learned how to flash a HEX file (AVR machine language file) directly to the ATmega microcontroller using AVRDude.

It was all great information because it put me in a place where I was less dependent upon the Arduino infrastructure.   

Arduino Uno Built-in Headers

Of course, the Arduino UNO has those nice built-in headers that make it so easy to wire in your additional components.  For your first Blink program, you can literally stick an LED directly into the headers without any other wiring -- yes, the 5V is a little high and will overdrive the LED but as an easy first experiment, it is nice.

The Arduino Uno even goes one step further and offers shields you can just plug in directly into it.

What Are Arduino Shields?

If you haven't seen these shields before, they are prefabricated extensions you can just plug directly into your Uno that provide functionality.

Here's a good example of one that provides Internet connectivity to your Arduino.

Image 1

Image from Arduino.cc

Plug It In And Go

You can easily just plug that board into your Arduino Uno's headers and go.  That is really great for prototyping. However, it is not so great for building out your final product.

Why Shields Aren't Great

Shields aren't great for your final product for a few reasons:

  1. Larger footprint: They make your final product much larger than they would necessarily be. That's because there is quite a bit more hardware here and it is spread out for ease of use. Your final product could be far smaller with just the ATmega chip as I showed in my previous article.
  2. Cost: They make your final product cost more. The ATmega328p-pu only costs about $2. However, the Arduino Uno will cost you anywhere from $12 - $20.  That's a huge difference in price.

Prototype Shields Take This Idea Even Further

Prototyping shields allow you to build your own circuit on a shield that you can easily plug into your Arduino Uno.  

Image 2

As you can see, you can build your custom circuit on the prototype shield and plug it into your Uno. However, this means your final project will require that you commit your Uno (which you are really using to provide a programming interface to your ATmega chip) as a part of your project, never to be used in other projects again.  

Break Out Your ATmega Chip

If you'll learn to break out your ATmega chip to the breadboard, then you won't have to do this and you'll save money and space.

Here is a great example of a very interesting music synthesizer project that is far larger and far more expensive because it is built around the Arduino Uno and a prototype shield. Imagine how much smaller and cheaper that project would've been.  

Design Considerations

All of this works into things that we have to think about whenever we design a project.

  1. Footprint - how much space will the final project take up (smaller the better)
  2. Cost - again, the lower the cost, the lower price we can sell the final product
  3. Time - The less time it takes to build, the better. The shield may save us time up front and if you are simply trying to get to a prototype, it may be a great idea. But later, you may spend quite a bit of time reverse engineering it into a basic circuit that has a lower cost.

Keep on building, keep on learning.

~ Roger Deutsch

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Software Developer (Senior) RADDev Publishing
United States United States
"Everything should be made as simple as possible, but not simpler."

Comments and Discussions

 
Questionhow to programming arduino lilypad? Pin
tas tote bag20-Aug-18 21:03
tas tote bag20-Aug-18 21:03 
QuestionJust say no to Arduino Pin
Controller Guru10-Jul-18 3:36
Controller Guru10-Jul-18 3:36 
QuestionHalf of the truth.... Pin
Kornfeld Eliyahu Peter7-Jul-18 20:03
professionalKornfeld Eliyahu Peter7-Jul-18 20:03 
AnswerRe: Half of the truth.... Pin
raddevus9-Jul-18 2:40
mvaraddevus9-Jul-18 2:40 
GeneralRe: Half of the truth.... Pin
Kornfeld Eliyahu Peter9-Jul-18 2:44
professionalKornfeld Eliyahu Peter9-Jul-18 2:44 
GeneralRe: Half of the truth.... Pin
raddevus9-Jul-18 2:47
mvaraddevus9-Jul-18 2:47 
GeneralRe: Half of the truth.... Pin
Kornfeld Eliyahu Peter9-Jul-18 2:50
professionalKornfeld Eliyahu Peter9-Jul-18 2:50 
GeneralRe: Half of the truth.... Pin
raddevus9-Jul-18 2:53
mvaraddevus9-Jul-18 2:53 
QuestionGood, but not quite expected Pin
Member 139025957-Jul-18 16:41
Member 139025957-Jul-18 16:41 
I am building an Arduino UNO based project that basically is an RS-485 key that puts a device in its setup mode when it "sees" this Arduino based device. The board stack is three high consisting of UNO clone, a battery charger/booster, and a RS-485 transceiver. So, the enclosure is somewhat tall taking much more space than a component level design. A power switch must also be positioned on the lid where it will not encroach on the board stack. However, I also found quality issues with shields. (I actually expected the article to say something about the lack of quality with shields.) The RS-485 shield I am using has through-hole solder joints on its output connector that makes contact with one of the ICSP pins of the UNO clone when mounted on the UNO clone. Forunately, I was able to put the RS-485 shield at the top of the stack above the battery charger/booster shield which had no such issue. A suspected quality issue is also with the RS-485 shield as it is designed to enable the transmitter using an NPN BJT as a switch from the transmit data line. So, if the data is too quick for the transister, it may not get transmitted. I think a separate DIO line to enable the transmitter would be better even if it does use an additional processor resource. I am working on proving that concept using an Arduino Nano and a different RS-485 board. With still another quality issue, I went from using a Sparkfun battery charger/booster board to using a Seeed equivalent instead as the booster chip on the Sparkfun burned up just plugging in the battery and it to the UNO clone which is also a Sparkfun board. Also since these shields are for prototyping, I did have to modify the Seeed battery charger/booster removing the switch on the shield and attaching wires to the holes left behind running the wires up to an external switch on the enclosure. Aside from quality issues, the shields do save from not having to design a PCB or hand wire every node at the component level on a bread board. Cost of PCB fabrication is $800 to $1000 minimum for any design with a quality board (based on quotes from Advance Circuits). However, that cost is still cheaper than wiring every node (based on $100/hr engineering time). So, what is the best solution for low volume products? Should we always design a board regardless of volume?
QuestionThis is just uninformed Pin
Member 107071737-Jul-18 19:22
Member 107071737-Jul-18 19:22 
AnswerRe: This is just uninformed Pin
raddevus9-Jul-18 2:51
mvaraddevus9-Jul-18 2:51 
QuestionGood article Pin
Mike Hankey7-Jul-18 4:27
mveMike Hankey7-Jul-18 4:27 
QuestionMy 5. Pin
CPallini6-Jul-18 21:32
mveCPallini6-Jul-18 21:32 
AnswerRe: My 5. Pin
raddevus9-Jul-18 2:45
mvaraddevus9-Jul-18 2:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.