Atmega32U4

Tuesday, Aug 13, 2024 | 4 minute read | Updated at Friday, Feb 21, 2025

Will Rohren

Goal: To create my own microcontroller devboard based on the Atmega32U4

To learn about embedded systems, designing PCB for digital circuitry, and programming/debugging the board.

STATUS: Work In Progress

Back to Home Page

Motivation 8/13/24

Mostly to experience the pitfalls of embedded systems. I know I can go out and buy an arduino Leonardo for about $25, but I have been curious about digital pcb design for a while, so I figured I would give it a try. The arduino project is also open source, which would give me plenty of resources, and examples to look at if I get stuck.

This project is heavily inspired by The Curious Scientist , so please check him out. I did not directly use any of his work, but he led me to the microcontroller used, the Atmega32U4, which is also found in the Arduino Leonardo. All other features were built by me.

The Design 9/24/24

All projects start somewhere, and the image below shows one of the first iterations of the pcb layout. It being a devboard, I only needed to make the μCU work, with very few additional features.

V1 early design

I initially chose this design of having the pin headers in two perpendicular rows, but after considering the size of the actual chip, and how much wasted space there was on the board, I opted for a staggered design. This would condense the pins, allowing me to reduce the overall size. Additionally, I allotted 8 pins in a 2x4 configuration, 6 for In-Circuit-Serial-Programming (ICSP), and two more for TX/RX. (Ground & Power planes have been hidden, but are on the inner layers of this 4 layer board).

V1 final design

First Prototype 11/7/24

I was happy with the design, so I sent it off to get manufactured, ordered my own components of DigiKey, spent about 2 hours assembling my first board, and verified that I could upload the bootloader to it. I excitedly made a post in Starforge’s Discord , a local makerspace in college station, and was informed about a critical flaw in my USB-C implementation.

The flaw was that I left the CC pins floating, which meant that when I connected it to my computer, no connection was established. I couldn’t program the board through the USB-C port.

V1 test image

Luckily, I could still program via ICSP, it just required I keep the bundle of 6 wires attached anytime I wanted to upload a new program. This kept me going, and I continued on. I kept going, and was able to get some LEDs to blink, but I was growing frustrated with the awkwardness of the programming setup.

ICSP Programming V1 Lights

Second Prototype 1/24/25

During this time as well, I took note of a few other changes I wanted to make, layout-wise, and edited my design in Altium. I was a bit more careful to make sure the pin spacings throughout the board would fit on a regular breadboard, and I changed the main IO layout from staggered to an inline position. I also added the pulldown resistors to the CC lines, and moved some components around to waste less space. In the image below, V1 is on the left, and V1.1 is on the right.

Redesign

After some shipping delays from Hong Kong due to current events, the V1.1 of my design arrived, and I put it together when I found some time.

[INSERT IMAGE OF PHYSCIAL v1.1 PICTURE]

After uploading the arduino Leonardo bootloader onto the chip, everything worked as expected! It’s still a little bit awkward to use on a breadboard, because the board covers the entire width, but it will at least be secure. I also messed around with an oscilloscope to measure the transient behavior, to see the rise/fall times of the built-in RX LED.

Blinking! Rise time Shutdown behavior

Going forward

As of writing this (3/3/25), the semester has gotten busy again, and I’m shifting my priorities from working on summer plans rather than furthering my projects. So everything will be on hold while I finish documenting everything.

When I return, though, I think that this board is good enough to try again with the A4988 motor controller board. The behavior is less random, and I can easily upload new programs to try different things. For a V1.2, I think that I would like to reduce the board width by 0.1", enough to allow for it to not take up the whole width of the breadboard. To do this, I will likely have to trade shorter width for a longer height, since there aren’t really any deadspaces left on the PCB.

Unrelated, but here’s another thing I made:

Spinning Cat

Back to Home Page

© 2025 Will's Portfolio

Powered by Hugo with Dream.

Me

Howdy!

I am William Rohren, I am a senior Mechanical Engineering Major at Texas A&M University.

This site serves as a portfolio to display my various projects, as well as a blog so that I can have a log of the things I do.

pic of me

Contact Information

Email: wmrohren@gmail.com

Resume: here (last updated 8/30/25)

Google Sites Portfolio Warning: There’s a reason I abandoned the old portfolio & remade it with Hugo.

Additional Reading

It’s because google sites kinda sucks in terms of how customizable it is. As you’ll see if you visit my old portfolio, there’s a navigation bar at the top, some with drop downs. But as far as the actual content goes, it’s really space inefficient. Under ‘Personal Projects > Big Projects’, to even see the SECOND item requires scrolling past all of the content in the first item.

I didn’t like it. So I thought of trying Hugo, and was given the idea by seeing other people using it (namely various Starforge members Brandon and Ismael to name two examples). I found a theme I liked, with blog-like posts and decided that was a suitable way to display my content.

One last note about formatting, once I have a lot more projects under my belt, I’d like to switch to a grid-like format, similar to one used by mitxela

Anyhow, the google sites portfolio linked above has a lot of my smaller projects on it. From 3D prints to school engineering club events, to VEX Robotics.

I expect that I will make posts dedicated to grouping these together. This is relatively low priority right now though, since the projects I have been able to do in college have been much more impactful than the projects I did in middle or high school. This is mostly related to money, as working on the RPS is allowing me to spend my own money on projects.

Feel free to email with any questions :)

One More Note

Please note while I try to keep it reasonably updated, it may not be perfect. I’ve done markdown with the RPS, but setting up a website like this is entirely new to me.

Changelog

3/8/25 - Initial portfolio created Added:

  • A4988 Project
  • Arduino Alarm Clock
  • Atmega32U4 devboard
  • Battery Charger
  • LF3DP
  • PC
  • Photography
  • Plasma cutter (RPS)

4/21/25 - Minor tweaks

  • Added updated resume
  • Fixed dates on all posts

9/4/25 - Major update

  • Fixed categories & tags on all posts
  • Put all images into folders to clean up file structure
  • Added weights to customize order of posts
  • Replaced old resume with the new one
  • Added PBA/SAE Aero/StarTrackerV2
  • Added framework for adding smaller projects from Midd;e/High school
Current Projects

Priority: (Classes must take priority)

  • Personal: N/A
  • RPS: N/A

When I have the time:

  • Personal: Star Tracker V2
  • RPS: LF3DP
  • Dr. Pei’s Lab: PBA-V3