Improve Your Embedded
IoT Hardware Today
Make Your Rev A Hardware Count
Presented by: Chris Gammell
Developer Relations Lead at Golioth
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/9569916/ChrisGammell-Headshot-Bench-square.png)
Who is this talk for?
-
People building early stage IoT Hardware
Who is this talk for?
-
Firmware Engineers
-
Hardware Engineers
-
Cloud / IoT Engineers
IoT Hardware Is Simple
- The functionality is often simple
- Take a reading, send it to the cloud
- Control a physical device from afar
Putting it all together is
not simple
Hardware we'll look at towards the end of the presentation
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402559/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402563/pasted-from-clipboard.png)
Before Rev A
Lines of Communication
-
Important that everyone is on the same page
-
Rev A shouldn't be a throwaway
-
"We'll just try it and see what happens"
-
Rev A choices have long term implications
-
-
All teams should be part of the design review and planning process
Goal Setting
-
What are you trying to prove out with Rev A?
-
What constraints can be relaxed in the first rev?
-
Space
-
Cost
-
Part selection
-
-
How many revisions are you planning to do?
Create a test plan for Rev A
The difference between screwing around and science is writing it down.
~Adam Savage
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402290/pasted-from-clipboard.png)
Before Rev A
HW Design Planning
What should you
look for in a HW design review?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10401862/pasted-from-clipboard.png)
Flexibility
-
Multiple footprints
-
Standardized interfaces (Click, PMOD)
-
Configuration options / In-situ measurements
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10400065/pasted-from-clipboard.png)
Visibility
-
LEDs
-
Test Points
-
Screens (even temporary)
-
Accessible/Extra UARTs
Accessibility
-
Programming Headers
-
Large pads to solder to
-
Especially on fine pitch or BGA parts
-
-
All unused pins broken out to GPIO
Clarity of Documentation
-
Notations on the schematic
-
Clear numbering system
-
Clear pin names
-
Images
-
-
Markings on the PCB
Before Rev A
FW Design Planning
Part Choice
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405122/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405123/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405124/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405125/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405127/pasted-from-clipboard.png)
RTOS Choice
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402523/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402524/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402526/pasted-from-clipboard.png)
Ecosystem Choice
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402523/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402526/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405136/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405139/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10405142/pasted-from-clipboard.png)
Abstraction Layers
and Peripherals
Pin Planning
-
Once you know what's available to you, it's important to discuss where and how those signals will be used.
-
Especially for critical buses that might have signal integrity requirements.
-
Finding parts that have re-assignable pins is great, but make sure you find out which are the most flexible and which have requirements.
Before Rev A
Cloud Design Planning
First and foremost:
Can you send an OTA update?
Where is your data going?
How are you going to be able to access that data?
During Rev A
The goal of testing is to squeeze as much functionality out of the revision as possible
![](https://media1.giphy.com/media/fWlesbav1qMk8/giphy.gif)
Testing tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402365/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402367/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402369/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402372/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402378/pasted-from-clipboard.png)
Power-on
Selftest
Testing tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402546/pasted-from-clipboard.png)
Configuration Tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402451/pasted-from-clipboard.png)
Changing device configuration with (Zephyr) menuconfig
Configuration Tools
Managing device configuration remotely using Golioth settings service
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402457/pasted-from-clipboard.png)
Troubleshooting methods
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402534/pasted-from-clipboard.png)
The key to troubleshooting IoT problems is checking up and down the OSI model
Troubleshooting tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402437/pasted-from-clipboard.png)
Troubleshooting tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402443/pasted-from-clipboard.png)
Thread-aware debugging
with Segger Ozone
Troubleshooting tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402445/pasted-from-clipboard.png)
Segger SystemView
Troubleshooting tools
Troubleshooting connectivity with the Hologram dashboard
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402446/pasted-from-clipboard.png)
Troubleshooting tools
Tracking device logs over cellular using
the Golioth Console
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402449/pasted-from-clipboard.png)
Troubleshooting tools
Mapping output data from your platform with a tool like Grafana
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402555/pasted-from-clipboard.png)
After Rev A
Check your testing plan
Did you cover everything?
You did have a testing plan, right?
The difference between screwing around and science is writing it down.
~Adam Savage
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402290/pasted-from-clipboard.png)
Capture your Rev B changes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402300/pasted-from-clipboard.png)
Time to start the next rev!
![](https://media1.giphy.com/media/VL48WGMDjD64umCEkv/giphy.gif)
Case Study
What does hardware look like if it's perpetually at Rev A?
Aludel + Ostentus
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402240/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402241/pasted-from-clipboard.png)
Specs at a glance
-
Based around Feather form factor microcontroller dev board
-
Two MikroBus Click Headers
-
Interstitial PCB (Aludel Mini) contains power switching and interfacing between feather form factor and MikroBus Click Headers
-
Two QWIIC/STEMMA (i2c + power) headers for additional extensibility
-
Standard case form factor with standard inserts for flexibility
Why did we do it?
-
In a low volume, high mix environment, it makes sense to index for maximum swappability.
-
This includes being able to swap for
-
Micros
-
Sensors
-
Displays
-
-
We also weren't working towards a commercial deployment.
This means it's more of a dev platform than a Rev A
Over-index for swappability?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402250/pasted-from-clipboard.png)
Some missing constraints, but not a lot
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402267/pasted-from-clipboard.png)
Maximally abstracted interfaces
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402268/pasted-from-clipboard.png)
Things we could have done better
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402271/pasted-from-clipboard.png)
Accessibility
The programming header is not accessible when the case is assembled. Luckily we have OTA from day one...
Over-indexing for space savings
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402274/pasted-from-clipboard.png)
Tight Spaces
Normally Rev A prototypes aren't trying to fit into an artificially small space. In our case (ha), we were trying to minimize the size of the Rev A box, simply because the off-the-shelf boards took up additional room.
Things we could "get" in Rev B
-
Massive amount of space savings from reduced board count / standardized headers.
-
More pins available on the chosen microcontroller -- reduced to fit to a standard feather form factor.
-
Single board layout.
-
Cost optimized BOM.
-
Water-tight enclosure.
-
Optimized power setup.
We build Reference Designs
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402307/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402308/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402310/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402311/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402312/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/10402313/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/2111875/images/9569916/ChrisGammell-Headshot-Bench-square.png)