This design is an adaptation of Adafruit's Itsy-Bitsy M4 Express development board. It's currently running CircuitPython with Arduino to come; naturally the SWD header can be used with Microchip Studio.
I/O pins being crowded together requires jumper wires to first connect pins to empty prototyping areas. This leads to messy wires and artificial complexity.
Spread the I/O pins out and give each pin some dedicated space!
This design will reduce the number of mistakes made and will make troubleshooting any mistakes faster. My hope is that a teacher will feel confident taking on a classroom of 20 beginner students by using a development board that reduces the length, number, and crossing of jumper wires. Engineers and hobbyists alike will find it perfect for whipping up a quick prototype cleanly.
Back in 2017, I had this interesting idea - What if you stretched a dev-board out like an accordion? From fat and compressed to stretched and skinny? I played with this idea and started experimenting with male header-pins; I would take 4 pins, remove 2 from the center, and start placing them on an empty breadboard, just feeling things out.
It seemed natural to have my pins line up with the gaps in the bus lines. Especially once a pot was placed on the board. "When would I ever need a conection directly from an I/O pins to a bus rail?", I thought. I decided to place the microcontroller in the middle, so I left some room for it and the supporting circuitry. With the micro in the middle, half the traces would run upwards and the other half downards; nothing would get too cramped.
I decided to go with an Atmega32u4, for the built-in USB, in a QFN package. I felt like rotating it 45° would make it easier to run traces, and I'd seen it implemented before, so it felt like a good choice. I made an adapter board to convert the 2x3 ICSP to a 1x6, so that I'd have those pins accessible on the breadboard as well. I went with a 4 layer design because, at the time, I honestly didn't think this could be done in 2 layers; I even went down to 0603 parts for the first time! Once I settled on something I felt would work, I placed my order at OSHPark.
It was really exciting when the boards and parts came. It was a big challenge, I had a lot of really small 0603 parts, some tweezers, a syringe of solder paste, a hot-air tool, and a cheap-o soldering iron. It wasn't all that pretty, my design wasn't perfect *cough* don't look to closely at the crystal *cough* but I did get it working. I was able to solder everything, flash the bootloader, and upload some code through the Arduino IDE. Success!
I had fun playing around with it.
I emulated a keyboard to make a USB controller for playing retro games on a NES emulator:
I made a simple unipolar stepper-motor driver:
And experimented with using the bus-rails for I2C devices:
It was pretty fun and I was proud of my achievement; I cleared a lot of new challenges for the first time with this project. I took a novel concept through to a working prototype, I designed a 4-layer PCB with power-planes, I made a lot of my own footprints (I am so lucky that crystal still worked despite my screw-up), I designed with 0603 parts, I used a QFN microcontroller, and I soldered it all up without fancy equipment or stencils - and it worked!
I'd also like to take a moment and thank Chris Gammell. When I studied electronics engineering technology at NAIT (Fall 2010 - Spring2012), PCB design was not yet included in the course; so I had to teach myself! If it weren't for Chris's KiCad tutorials, I would never have been able to pull this off.