I would like this skin to stay as close as possible to pyskin design guidelines, such as they exist, so I have done a brief survey of the current state of the art. The pyboard was designed to make it possible for a pyskin to be placed in either of two opposite, symmetric positions (designated X and Y), assuming that the components of the skin only require the use of GPIO pins X/Y 1 through 12. However, position X also provides access to several additional GPIO that are not available in position Y, and the audio and LCD/touch sensor skin available from the micropython store both make use of resources available only in position X.
There is also the issue of potential stackability - in theory it should be possible to design skins that can stack up in several levels of boards, if they are fitted with pins/headers that can pass the signals through. I haven't seen any designs that actually attempt this, and it appears that it would be impractical to do this with either the LCD or Audio skins.
A few design consideration that are specific to this navigation board:
- If a GPS module is included, it would also make sense to include a backup battery to retain satellite ephemeris data to enable fast acquisition and position fix after a power cycle. If a backup battery is included, it would make sense to share it with the pyboard, which would necessitate using position X.
- If the navigation pyskin is to be compatible with a quad-copter (which is of course the intention) then the servo-control pins X1-X4 need to be available to the motor controllers (This is what I gathered from watching Damien's video) so a navigation board in the X position would at least need to pass these through even if none of the other pins are passed through.
- In order to achieve the best possible fix, a GPS antenna should have unobstructed exposure to the open sky, so any stacking board design should ideally have the nagivation board at the top of the stack. (It is possible that I am overthinking the stacking problem here, and should just dictate that this board should be the only board occupying position X.)
Any thoughts or suggestions?
-Bryan