Go Down

Topic: Difference between a MODULE and a SHIELD (Read 933 times) previous topic - next topic

ExAutomata

First of all since this is my first post I'd like to say Hi to this beautiful community, so hi!  :)

My question is as the title says, I'm confused with the usage of these terms, as well as which one to use and when.

I will be working with the Wi-Fi module/shield for example, to give some info on what I understand so far.

The way I see it is that ESP8266 is a Wi-Fi module, which is as the link-> says low-cost Wi-Fi chip, and from my other reads it is said that it is cheaper compared to a shield of the same functionality (probably not the same).



Regarding the Arduino WiFi Shield bellow it is more expensive but offers what?



MAIN QUESTION IS WHAT IS THE DIFFERENCE BETWEEN THESE TWO TERMS?

If the community could give a detailed explanation in the format below I would be thankful, and I believe it would be of value to the less informed members of the community. If a post like this exists please let me know.

THE FORMAT:


  • Module is
  • Shield is
  • Difference is
  • Use one over the other when
  • References?
  • Feel FREE to add something of your own here

westfw

#1
Mar 05, 2017, 09:23 am Last Edit: Mar 05, 2017, 09:24 am by westfw
"Shield" is a term coined by the Arudino people to refer to a module that is specifically designed to plug in to the Arduino form-factor connectors.  "module" is just any collection or electronics thrown together in a supposedly easier-to-use form.

(BeagleBone has "capes", and Raspberry Pi has "hats" for similar purposes.  To designate modules specifically designed to work with that particular "main board.")

ExAutomata

"Shield" is a term coined by the Arudino people to refer to a module that is specifically designed to plug in to the Arduino form-factor connectors.  "module" is just any collection or electronics thrown together in a supposedly easier-to-use form.

(BeagleBone has "capes", and Raspberry Pi has "hats" for similar purposes.  To designate modules specifically designed to work with that particular "main board.")

Thank you for your answer. So if I use a shield for example I just stack it on top and keep my pins available. And what's with the usb port in the above example. Why would I need it for a WiFi shield if there's one on the Arduino already.

Robin2

So if I use a shield for example I just stack it on top and keep my pins available.
I don't know what you have in mind, but in many cases the use of shield prevents access to other pins. Some of them have sockets on top so that another shield could be stacked on top - or so that other connectors can be inserted.

Another thing to take into account is that using a shield forces you to use the pins that the shield designer chose. That can be a nuisance if you want to use more than one external device. And some devices, such as those using SPI, must have access to specific Arduino pins.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ExAutomata

Hm, okay, so what about the usage scenarios, I want to order the ESP8266 to control my Arduino with a Web App over WiFi. Why would I use a shield over the module alone.

What I meant by keeping the pins available is if I stack a shield on top I'm still available to use the pins bellow, through the pins on top. Image bellow.



I'm confused because, taking this image for example, you could put an LED on the shield on top and it would be connected to the Arduino through the pins of the shield above. Secondly the shields have a USB port which means they can be programmed on they own, which a module can not. Am I right/wrong?

pert

#5
Mar 05, 2017, 03:02 pm Last Edit: Mar 05, 2017, 03:03 pm by pert
And what's with the usb port in the above example. Why would I need it for a WiFi shield if there's one on the Arduino already.
The USB jack on the shield is only used for updating the shield's firmware. You can't use the USB jack on the Arduino to do that.

Why would I use a shield over the module alone.
First of all you need to understand that you're trying to compare multiple different things at the same time here: Module vs. shield, and ESP8266 vs. HDG204. It would make more sense to only compare one thing at a time. You can get ESP8266 modules and you can get ESP8266 shields. The advantage of an ESP8266 shield is you don't have to worry about any wiring at all, you just plug the shield into the Arduino and you're done. With a module you will need to make sure you have all the pins connected correctly, you will probably need to add a 3.3V power supply that can handle the current requirements of the ESP8266 because the 3.3V pin of the Arduino can not. The advantage of the module is they are smaller, cheaper, and you can more easily connect them to the Arduino any way you like (to use other than the hardware serial pins for example). As for ESP8266 vs HDG204, I'm sure in some ways the HDG204 is more capable hardware but it is much more expensive and much less commonly used. You'll find much more information from the community about ESP8266.

I'm confused because, taking this image for example, you could put an LED on the shield on top and it would be connected to the Arduino through the pins of the shield above.
Yes, the female headers on top of the shield are connected to the male pins on the bottom of the shield, which are connected to the female headers on the Arduino. The only problem is that some of those pins are also being used by the shield, and it's possible using them for other purposes can cause problems. Sometimes shield manufacturers don't bother to document which pins the shield is using but in the case of the Arduino WiFi Shield it is documented:
Quote
Arduino communicates with both the Wifi shield's processor and SD card using the SPI bus (through the ICSP header). This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the HDG204 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the HDG204 or the SD card, but it must be kept as an output or the SPI interface won't work.

Digital pin 7 is used as a handshake pin between the WiFi shield and the Arduino, and should not be used.
Secondly the shields have a USB port which means they can be programmed on they own, which a module can not. Am I right/wrong?
Wrong. As I said before, the USB jack on the Arduino WiFi shield is used only for firmware updates. You can do that on the ESP8266 OTA via an AT command. If you connect a USB-serial adapter to the ESP8266 you can program it any way you like, including using it by itself as an Arduino. You can buy standalone ESP8266 boards with the USB circuitry on board specifically for this purpose for around $3 USD w/ free shipping.

ExAutomata

 :o  Wow. Just wow. This is the most detailed answer I could get. This is all the explanation and clarification I needed. Thank you very much. It there's a way I can give you points (or that karma thingy) please let me know in the P.M.

Thanks again this has been of great help and I have ordered my ESP8266 module.  :D

Go Up