Skip to content
This repository has been archived by the owner on Oct 2, 2020. It is now read-only.

why arduino footprints is mirror-like in the module.pretty. #864

Closed
shizi599 opened this issue Aug 25, 2018 · 7 comments
Closed

why arduino footprints is mirror-like in the module.pretty. #864

shizi599 opened this issue Aug 25, 2018 · 7 comments

Comments

@shizi599
Copy link

No description provided.

@herostrat
Copy link
Collaborator

Hello @shizi599,

I could not verify that the foorprints are mirror-like (Arduino_Nano*, Arduino_Uno_R2*, Arduino_Uno_R3*).

Could you explain/show what you mean?

@bobc
Copy link
Contributor

bobc commented Sep 30, 2018

It's true, the footprints are mirrored.

An arduino looks like this :

arduino

The footprint looks like this :

image

It is quite obviously mirrored about the X axis. I guess the idea is that if you are creating a shield, you might flip the arduino footprint so that the connectors are on the bottom of the shield.

The KiCad footprints are weird and no one else does it like this, personally I use my own versions.

@jkriege2
Copy link
Collaborator

When I designed these footprint the decision for this "mirroring" was done consciuously: The idea is to see the Arduino as a component like all other components. Then the component should reside on top of the PCB (that's how we make the KiCAD library and if you want it on the bootom ... you just flip, as with all other components/footprints). Therefore it appears "mirrored", because you would have pinheaders on the PCB that you plug the Arduino into.

If you want to create a Shield, the Arduino is usually on the bottom. In that case you can use the footprint+flip, or youcreate a shield template, which simply contains the connectors on the bottom in the right positions

@bobc
Copy link
Contributor

bobc commented Sep 30, 2018

I assumed it was deliberate.

The idea is to see the Arduino as a component like all other components

The problem is literally no one actually does that. People design a shield which has the same orientation as the Arduino. If you flip the footprint, the silkscreen is then on the wrong side.

Was omitting the SPI connector deliberate too?

It's a shame, because the official KiCad Arduino footprints are basically useless. I really don't understand why we have to do it a different way to everyone else, based on one person's whim.

@herostrat
Copy link
Collaborator

If you want to design a shield, why would you not use the arduino templates?

I think the argumentation makes sense:
Footprint is something you want to attach to your PCB. Because the arduino uno comes with female pinheader you have to do it that way

Templates give you the ability to design your own shield which attach to the arduino.

Those are different usecases.
And I really do not think that they are useless. Even if you would have to mirror them.

@herostrat
Copy link
Collaborator

I took the time to review the modules in the library.
Just to be sure I understand it correctly:

The footprints are for the cases in which the modules are daughterboards, because footprints are always something mounted on the pcb, not the other way around.
If you want to design a shield for a specific module (as in the module is the motherboard and the PCB you are designing is the daughterboard) the way to go is use a template.

@bobc Could you please link me to the standard way, or the way everyone else does it? Imho the way this is handled here is logical and consistent. But perhaps I did not take everything into consideration.

This has multiple reasons, e.g.:

  • Cuts informations are not included in the footprint
  • You cannot change sizes of footprints in PCBnew, so if your shield has a different size than the board you cannot easily edit the values
  • ...

TL;DR: I only found three points I would address.
Otherwise the library is ok.
I do not agree with the statement:

I really don't understand why we have to do it a different way to everyone else, based on one person's whim.

Just because one is accustomed to something does not mean it is logical or meaningful.
If however you see other reason except habit please let me know so that I can correct myself.


So for the review:

  1. A20-OLinuXino-LIME2
    grafik
    Reference: https://www.olimex.com/wiki/A20-OLinuXino-LIME2

Notes:
I think this board is wrong in the module footprint category.
The board comes preassembled with the pinheaders.

  • Imho it should be removed because it can not be used daughterboard nor motherboard.
    I guess the reason for it is to enable designing a board with the same dimensions as the olimex board.
  1. Adafruit HUZZAH ESP8266 Breakout
    grafik
    Reference: https://www.adafruit.com/product/2471

Notes:
This board does not come with the pinheaders preassembled.
Therefore multiple options for the usage as a daughterboard are possible:

  • module: top side up, pinheaders soldered on motherboard, pinheaders soldered on module
  • module: botton side up, pinheaders soldered on motherboard, pinheaders soldered on module
  • module: pinsocket soldered on motherboard, pinheader soldered on module top side
  • module: pinsocket soldered on motherboard, pinheader soldered on module botton side
    Every option is possible and can be acchieved with this footprint, although only the ones with the top side up make sense as you otherwise cannot access the buttons.
    The designer has to define how it should be mounted.
    I think this footprint is ok.
  1. Arduino Nano
    grafik
    Reference: https://store.arduino.cc/arduino-nano

Notes:
This board comes with pinheaders soldered on the bot side and ISP headers on top side.
The china clones I got have no soldered pins on them.
In order to access the button one should use the "official" side for the pinheaders, which also means the ISP is not connected to the motherboard and faces upwards.
I think this footprint is ok.

  1. Arduino Uno R2 and R3
    grafik
    grafik

Reference: https://www.farnell.com/datasheets/1682209.pdf

Notes:
The boards come preassembled and with the pinsockets on the top side, making a mounting only possible via facing the top side to the motherboard.

  • Cutout notes for ethernet and dc barrel could be included
  • Pinsocket for ISP could be included in the footprint
  1. Maple Mini
    Same as with Arduino Nano and Adafruit HUZZAH ESP8266 Breakout

The footprint is ok.

  1. Pololu Breakout
    Reference: https://www.pololu.com/product/1182

Notes:
The all seem to be mounted chip (and potentioemter) up (for the heatsink?).
Therefore also this footprint is ok.

  1. St Morpho Connector 144 STLink
    grafik

Reference: https://www.st.com/en/evaluation-tools/nucleo-f446ze.html

Notes:
Because of preassembled pinsockets and buttons this mounting is the only one that makes sense.
Therefore also this footprint is ok.


Thanks for everyone who read through my essay.
I have three points I would address, otherwise I could not find any problem with the library.

The logic is consistent but should probably be better communicated as (although it is really the only consitens interpretation imo):

  • footprints for mounting on motherboards
  • templates for designing a daugtherboard for modules

@herostrat
Copy link
Collaborator

Is this issue settled?

I think important steps and notes from this things are:

  • Verify the differences and usecases of "footprints" vs "templates", define rules with the maintainers
  • Update the documentation accordingly
  • Recheck if all templates and footprints are correctly designed in such a manner
  • Monitor and push the template functionality

I will create a new issue that tracks these points, as I am currently working on templates myself.


@shizi599 do you have anything to add or do you disagree with my previous assessment?
If not, feel welcome to close this issue :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants