Physical Computing Types See GitHub a Little Differently
Software people generally envision GitHub as an easy-to-access storage facility for holding source code. You can push your files up to the cloud, manage your versions, share projects and collaborate with others.
It’s not entirely obvious, to the casual observer, that there are all kinds of projects on GitHub. Not surprisingly a great many, lean toward the software side.
GitHub isn’t just for the pure software nerds. We hybrid software/hardware physical computing geeks, gadgeteers, engineers and inventors have a place there too.
If you poke around a bit, physical computing, hardware developers, Maker Movement, and DIYer types will find thousands and thousands of GitHub repositories catering to 3D printing, the ESP32 microcontroller, the Arduino community, the Raspberry Pi and many other “physical” topics as well. You’ll even run across actionable projects on exotic things like “computational fluid dynamics” or “software defined radio.”
Go to the GitHub main page, punch a keyword or two in the search box and then sit back and marvel at the avalanche of repos that appear on the screen. “3D printing” showed me 8,552 repositories, as I was writing this article. “Arduino” had over 241,000. Some are as bare bones as a list of a half-dozen or so files, while others contain comprehensive coverage of their topic including project code, diagrams, photos, schematics, print files, parts lists, configuration, documentation, tutorials and more.
Today, we’ll look at a few of the GitHub repositories that relate to 3D printing, microcontrollers, mechanisms, parts, tools and CAD. I’ll note the positives and challenges that you might look at to optimize your own GitHub project collections. Interesting nuggets of valuable information are all over GitHub and uncovering them might help you complete that next awesome project.
The Octoprint 3D print monitor project is a fine example of a well-thought-out and executed GitHub physical computing repo.
Here’s a quick rundown of what’s on the page.
- Features of the device
- Design details of the microcontroller part
- Wiring diagram
- print files for the hardware cases
- Pictures of the device
- Parts list
- Code for the microcontroller
- Web interface setup
- Licensing and donations
One small thing I notice that’s missing is a descriptive first paragraph on the purpose of the project or code, what it’s used for, how it is used and what else is needed to make it all work. This happens on a great many repositories, which is fine for the owner of the repo.
They know what’s going on with the code and project, although strangers happening across the page may need to poke around to answer the above-mentioned questions. Nevertheless, this repo checks a lot of “good” boxes.
The Prusa 3D printer part repository is a little bit better in the description department. It states that the repo houses the SCAD and STL files for printing spare parts. Files include downloadable parts that you can import into programs like FreeCAD or simply put on an SD card and make it on your MK3S printer. There is a list of relevant links at the bottom of the page for the Prusa website, product page, build manual and so on. Note that some of the links connect to other Prusa GitHub pages.
FreeCAD is my choice for 2D/3D computer-aided design. It’s stable, fast, powerful and runs on Linux. Although there are other good CAD packages out there, both paid and free, FreeCAD does everything I need and has a large support community on the Web. Being free, you’d definitely expect a decent FreeCAD GitHub page.
If you are going to build your own gadgets, particularly with 3D printing, you’ll need to learn CAD. FreeCAD is a little tough at the beginning, so look at the plentiful YouTube tutorial videos for help, with the basics. Being able to design your own parts, then print them from your desk is the greatest engineering leap forward since forever.
The FreeCAD repo is organized and focused on the software, including screenshots, code and helpful links. Go to the main Web page for detailed manuals, tutorials and user information. Here’s a quick list of the GitHub page.
- Build status
- Links to related sites
I found 7,727 repos using the “mechanical” keyword.
One such example, the “Awesome Mechanical Engineering Resources” project uses GitHub a little differently. There isn’t much in the way of code or print files. What it does have is a huge page full of links to all kinds of mechanical engineering and design Web pages.
These links include courses you can take, databases, tutorials, programming languages and various engineering-related applications. You can also find links on mechanism design, control engineering, thermodynamics, calculus and dozens of other topics. At the bottom are links for blogs, societies and competitions. It’s a lot of interesting and valuable information for backyard and pro engineers.
Maybe you need some inspiration for your Arduino project. The 241,086 GitHub repos I found just might have what you need.
A good place to start is with the official Arduino repo. Here you’ll find all kinds of code and info on the Arduino IDE (integrated development environment). This includes sources for downloading, installation, issues, building and testing. Pretty much a typical “software” focused GitHub repository, that certainly ties into the physical Arduino microcontroller world. For detailed information on the actual Arduino boards, you should travel to the main Arduino Web page.
I’ll leave you with several more “out there” repos to explore.
First up is the Jevois machine vision repo. I use a Jevois sensor in Hedley, my robotic skull, to recognize people and objects. Laurent Itti, the main guy behind the Jevois, is a machine vision expert at USC. He and his team have put together an awesome setup for exploring machine vision, including both the software and the hardware. Talk about physical computing. The theory is deep and it is an awful lot of information to digest. On the other hand, anybody can buy a Jevois sensor for doing machine vision tasks for just over $50.
Be sure to slide over to the Computational Fluid Dynamics Workbench For FreeCAD repository. I’m not quite into that depth of math, in my humble steampunk mechanical gadget projects… yet. Maybe someday. My hat is off to you if you are doing that kind of work.
Under “SDR” 6,028 repos turned up.
One extensive example of a descriptive GitHub page is the GNSS-SDR project. GNSS stands for “Global Navigation Satellite System.” Basically, it tells you how to process global positioning satellite signals on software-defined radio. I included this repository because it is absolutely enormous. The main page goes on forever and there is a lot of information. I thought it was a good example of how you might lay out a large descriptive repo.
Oh yes, don’t forget to plug “raspberry pi” in the GitHub search box. You’ll get over 92,000 hits. Surely there are some cool projects, you can use under that category.