In our previous post we implemented the bare minimum required to get a USB device to enumerate with the host and laid the groundwork for adding actual communications to our device. In this post we will do just that by adding support Vendor Specific control transfers, allowing a Host to Write and Read data from the device.
AVR USB Made Simple - Enumeration
In this multi-part series, we will explore USB implementation on AVR microcontrollers, starting with the basics of USB enumeration. USB can be found all around us in our everyday lives. It's in our phones, our computers, our cars, and even our home appliances. It's a ubiquitous standard that has been around for decades and is still going strong. However we often take it for granted as engineers and developers. Silicon vendors have made it so easy to get a device up and running with USB via their libraries and examples that we don't often think about what's going on under the hood.
We're back - and we have a new name
After a prolonged hiatus, we're excited to be back writing blog posts again! A lot has changed since our last post, including name! We've rebranded from greatlakes dev to everyday⚡dev! We believe this new name aligns with how we feel: engineering isn't just a job - it's our passion. We thrive on the joy of creating innovative solutions day in and day out. We know a lot of folks can sympathize with this feeling and we hope to build a community around this.
So what's next?
Our mission is to share knowledge and help others grow in their personal and professional embedded journeys. In pursuit of our mission, we plan to post content on a more regular basis, including deep dives for embedded concepts and creating more open source hardware and firmware projects. Stay up to date by following the blog for updates.
Want to jump in?
Check out our ⚡DEV101 series now.
Project Spotlight 🔦 KiCAD Template
The KiCAD project template just got even easier to use! The docs have had a new addition made
for the template explaining how to configure and get designing quickly. It also documents several of the new features added that will increase the quality of life when developing
KiCAD projects. To summarize - the template is pre-configured with the smallest possible tolerances while staying in the PCBWay standard stackup, allowing the most versatility while
designing without costing too much money. A util/
folder has been added with a few python scripts making it easier to generate useful BOMs from a somewhat finicky system that
KiCAD currently uses. Lastly a Github workflow has been added to automate the release process outputing your schematic, .step
file of the board, Gerbers and your BOM. All of these
artifacts are automatically uploaded to a Github release which has been tagged with the revision found in your PCB design files.
These features and workflows have been tested and documented but please reach out and create an issue if you have any trouble.
Happy tinkering!
New OSHWA certifications received!
During the holdiays we submitted the breadboard-io and atmega32u4 breakout boards for certification and we've just heard back - we've been certified! This will definitely be the first of many as we continue to create more projects and share them with everyone.
DEV101 ⚡ Creating user interaction animations
Well written and easy to follow documentation is a big part of creating and shipping a good product. Not only in the sense of documenting your design and code but the user instructions and usage as well. It can sometimes be difficult to instruct a user on how to interact with a product just through textual documentation and an image can go a long way in helping a user understand what you intend for them to do. An even better option is a quick and easy to follow animation that clearly shows the steps a user should take, leaving no room for a user to misconstrue instructions.
In this guide I'll show you how to go about making a quick 5 frame .gif
(seen below) that illustrates how to jump the atmega32u4_breakout board into the USB DFU bootloader via a
sequence of button presses. You can of course follow these steps and create an animation for any other user interaction you want to document.
DEV101 ⚡ Adding applications to the PATH env variable
It often occurs in a developers day that they need to install a new application and be able to access it from the command line. In most cases a nicely packaged
installer (.msi
, .exe
or .AppImage
) is there to handle this process for you along with setting up directories and default config, all with a few clicks through a GUI.
Same goes for installing packages via a package manger like apt
for Ubuntu or choco
for Windows. A single command and the process is done.
Although this is incredibly convenient, not all applications ship with an installer.
New releases 🎉 (kicad & avr templates, breakout boards)
I'm happy to finally be sharing several new projects with others! The templates will always be "under development" as I continue to add new suggestions and tweaks that make them more useful but the PCBs are pretty much "produciton" intent as most of the bugs have already been worked out.
Introduction 👋
Hi there 👋 my name is Stephen and I'm the creator and maintainer of everyday⚡dev - A collection of projects and products all containing FOSS and OSHW. The goal is to provide cool and useful tools, gadgets and software to you for free to build on your own.