Goal: Implement an IMU as an input sensor on my previously designed microcontroller board Software:Mods (computes machine routes), Arduino IDE Hardware: Microcontroller (SEEED XIAO ESP32-S3) and IMU (Adafruit BNO-08x Breakout) Tools: Roland SRM20 (milling) Materials: PCB blanks (copper) Prior Experience: unsuccessful custom PCB attempt a few weeks ago -- have connected IMUs to microcontrollers before New Methods:
successfully mill and solder a functional PCB
Details:
Have already designed and attempted to build this custom PCB previously
The original attempt stopped working shortly after being built, likely due to a mechanical issue with soldering to the board
A difficulty I experience with my board design was that the solder pad sizes were small relative to the headers I soldered on
In addition, soldering the microcontroller directly to the PCB made it difficult to troubleshoot and re-use the microcontroller
So, for this new version I did three things:
Increased the size of the solder pads
Removed some unused solder pads that came with the electronics footprints
Added headers for the microcontroller so it can be removed and re-used
These edits only required changing the pad size on the existing design
So, instead of generating a new design using Fusion 360 / EAGLE, I just editted the existing PNG
If you would like to learn more about the PCB and design, milling, and assembly steps, see prior work
After milling, I...
Soldered headers to the PCB
Soldered pins to the ESP32-S3 and BNO-08x modules
Plugged the modules into the PCB to test
The BNO-08x supports several communication protocols, including I2C and SPI
While SPI bandwidth is slightly higher, I2C requires fewer pins and has sufficient bandwidth for this application, so I went with I2C
Headers were ordered on the PCB to match the order of the I2C pins on the BNO-08x, making this a simple plug-and-play situation