Share projects on one of these 4 platforms

Contribute back to the open source hardware community

share projects

Sharing is the maker community’s foundation. When you share projects with others, you contribute to the community. In the past, you might just post your project on a personal website. Today there are many options to share projects.

This weekend I “finished” my reflow oven controller, Open Vapors. Believe it or not, five years ago there were not a bajillion similar projects. In fact, I based my design on the only completely open source project I found. It is a reflow oven controller Arduino shield from Rocket Scream.

After completing my controller, I was excited to share the project. Then I started to think about where to post the files. Obviously, here at is one option. But I wondered. Is there a better place where others could benefit from my work?

This post is a few notes on the platforms used to share projects. At first, these might seem like they all serve the same purpose. From a high level that is true. However, there are small differences that you should consider when you share projects with the open source hardware community.


share projects on instructables

One of the most used general purpose project sites is Do-it-yourself projects range from food to technology to costumes. Instructables got its start in 2005 and then was acquired by Autodesk in 2011. Their age means there is a large user community.

Typically you will find step-by-step instructions that include detailed videos and pictures. As with any user-generated content, the person posting matters in the quality of the tutorial. Sadly, I’ve come across many electronics tutorials that were not correct or just outright wrong. Before embarking on a project, make sure you check the comments!

There are contests for projects you share. The first project I posted on creating Polyamide stencils awarded me a one-year premium membership.

When to use: Creating Step-By-Step Tutorials for others to re-create your project.

Example: Kapton Reflow Stencils

share projects on hackadayio

One of the best projects blogs to follow is Hackaday. They feature some of the most impressive projects on the web. A couple of years ago my post on an Arduino GSM Shield flaw was featured.

The hacker-focused community on features projects stepped-up from the type you see on Instructables. Our friend Valentin of FleaFPGA posts updates on his latest creations.

The news feed makes it easy to follow a project or hacker. Projects also support collaboration if you’re working on a virtual (or real) team.

My favorite aspect of is that projects allow for external links to resources. So if you use GitHub, mentioned later, to manage the firmware you can provide links on the project page.

There are occasional contests as well. Even if you don’t participate in the competition, the entries are always fascinating.

When to use: Electronics hardware focused projects, whether working individually or collaborating with others.

Example: Flea Ohm FPGA

share projects on hacksterio

If I described as a flea market, I would describe as a shopping mall. Both are high-quality platforms but are arranged differently. has a very keen focus on specific platforms or companies. A couple of examples would be Arduino and the Particle Photon. You will see companies like Microsoft and Sparkfun using Hackster as a community hub.

The advantage to a platform-focused site is that you’ll more easily find people with skills related to parts of your project.

When to use: When working on a particular platform.

Example: Mosquitto and Arduino Cloud


share projects on github

Even if you have never been to, you make use of it almost every day. Or at least, one of the software projects hosted there.

Many open source software projects manage their code base and version tracking through GitHub. For example, the Arduino project’s code base is organized there.

Understanding how to use git can be confusing to hardware engineers. (Perhaps a future tutorial.) Using code and projects from GitHub, however, is rather straight forward. You can download a branch or clone it to your computer.

Interestingly, versioning works on non-source code files as well. Adafruit posts their EAGLE library and KiCad uses GitHub to manage their default libraries. So GitHub is useful beyond just software.

When to use: Sharing or collaborating on the software code for a project.

Example: Open Vapors

share projects on digikeys makerio

Digi-Key is a distributor. They opened a service called The focus for this site is on projects with the intent to become a sellable product.

Managing component lead times and logistics can kill a product before it ever ships. Having a electronics component distributor involved early on can help make choices for your BOM that will minimize disruptions.

To be honest, I haven’t used much yet. It’s something that I will look into in the future. If you’re using it, leave a comment about the service below.

When to use: You plan to turn your project into a product.


Note. Kaspar mentioned a service I missed. is focused ready to buy designs. Select a board and there is a BOM (bill of materials, aka parts) for that design. A browser extension makes it easy to add the parts to a shopping cart on 5 major (web-based) distributors. The backend uses Git. See comments for more information.

Share Projects on a Self-hosted blog

One option, as I mentioned at the beginning, is to share projects on a self-run blog. For example, has a (partial) list of my projects. When I started blogging, none of the options on this list existed. I’m finding value in hosting projects on platforms like and GitHub. The options for collaboration are much larger than a self-hosted blog can provide.

On the other hand, a self-hosted blog doesn’t mean signing up for other services. It also means you have full control over the content.

When to use: If none of the other platforms meet your needs or you want to maintain control of your content.


There are other methods to share projects. As I said, these are the ones I know and use. For my latest project, I have a draft of Open Vapors details on I’m cleaning up the code for a push to GitHub. And, of course, I’ll have a page on to cover it.

Question: That’s how I’m approaching project sharing. What’s your approach? You can leave a comment by clicking here.

Detect short and long button press using millis

Different actions based on how long the user presses a button

detect short long button press using millis

To detect a short and long button press using millis can give your project more functionality without adding more buttons. In this line-by-line example, I show how to react to a user pressing a button for a short period (100ms) or a long period (over 500ms). My example changes the blink rate of an LED on short presses. A long button press turns off the LED.

In the code, I make use of a struct so that a single variable can be used to track multiple parameters. The benefit of this method is that adding multiple buttons is easy. You could create an array of these tyepdef’d variables.

Download At GitHub

Continue Reading »

Best Sorting Resistors Method 

At least, according to me.

sorting resistors method

When you buy a grab bag of components, you might need to tackle sorting resistors. Here’s how I sorted some bags of random resistor assortments last week.


Then method I use for sorting resistors achieves these objectives:

  1. Fewer Bins. It doesn’t take long to create a large matrix of resistor values. My resistor sorting method is relatively compact.
  2. Quick to find. When I’m building up a circuit, I don’t want to spend time sorting through a pile. Once I know the value I need, I find a single package and then look for a single color band.
  3. Works with 4-band and 5-band resistors. Let me be upfront: I *hate* 5-band resistor color codes. While the 5th ring is supposed to be slightly offset, or wider, or a different type of color; it doesn’t matter. It’s nearly impossible to tell read a 5-band resistor color code when they are in a pile. However, using my method for sorting resistors, it doesn’t matter if I’m looking at a 4-band or 5-band resistor. I can immediately identify the resistor value.

Based on #3 alone, you might be wondering what is the fantastic method (and how much will it cost to get it!) Here’s the basics of my method for sorting resistors. (For FREE!)

Continue Reading »

Arduino Data Logger: Serial Monitor Alternatives

Forget the serial monitor, here's 5 other ways to do Arduino data logging

arduino data logger options

The Arduino serial monitor is usable when you want to watch data from an Arduino. However, it does not have a built-in method for saving the data. Here are some ideas if you want to build an Arduino data logger with or without a PC.

Important note on Arduino Data Logger examples

With all of these examples, please remember that whenever you open the Arduino’s serial port, the board will reset. So if your log file shows “Initializing SD card…” with a few data lines in between, it is because there is a reset happening.

Initializing SD card…initialized.
Temp: 34, Time: 03:24:44
Temp: 33, Time: 03:24:45
Temp: 34, Time: 03:24:46

Initializing SD card…initialized.
Temp: 34, Time: 03:24:50
Temp: 34, Time: 03:24:51
Temp: 33, Time: 03:24:52
Temp: 34, Time: 03:24:53

In that code you can see data logging started and then restarted. What happened is that after programming, the board starts logging. Then when you open the Serial Monitor, the data logger restarts.

To solve this issue, either disable auto-reset, add a 3-4 second delay at the start of setup(), wait for a character to be received, or wait for a button press. That will give you time to open the Serial Monitor.

Continue Reading »

Sending simple serial commands to an Arduino

Don't send words when characters will do

sending simple serial commands arduino

Sending simple serial commands to an Arduino is the easiest way to communicate between an Arduino and a computer. The computer could be a PC, a Raspberry Pi, or any device that communicates with serial.

By sending and “decoding” a single character it is easy to add a simple debug menu or even serial menu. Plus, it is easy to extend.

Single Character vs. Full Words

The mistake I see many people make is that they try to send full-text strings as serial commands. For example, to turn on a LED, I have seen (silly) commands like “RED LED ON” or “RED LED OFF.” While you could use something like strcmp(), as I showed on the Multiple MQTT Topics example, that tends to be overkill for most serial commands.

Humans like words, computers like binary. Just send one character over serial.

switch (variable) {
  case ‘a’:
	// A Stuff

  case ‘b’:
  case ‘c’:
	// B and C Stuff

Continue Reading »

Multiple MQTT Topics with Arduino PubSubClient

Adding a few more subscriptions is pretty easy.

multiple mqtt topics

In my Arduino MQTT Examples, I kept things simple by only subscribing to a single topic. One of the strengths of MQTT is that a device can subscribe (or publish) to multiple topics. The broker will sort things out. Even though my first example only showed one, it is straight forward to get the Arduino PubSubClient library to subscribe to Multiple MQTT topics.

The quick answer is that you need to look at the MQTT response to find out which topic sent the payload.

tl;dr version

If you’re looking for a quick answer, here’s the magic code we’ll add to the callback() function.

void callback(char* topic, byte* payload, unsigned int length) {
if (strcmp(topic,"pir1Status")==0)
  // whatever you want for this topic

Keep reading for a more detailed explanation of how to Subscribe to Multiple MQTT topics with Arduino’s PubSubClient. Obviously, this code will work on Arduino boards with a TCP/IP interface and, of course, the ESP8266 based boards.

Continue Reading »

It is commonly known that ceramic capacitors change capacitance with applied voltage. What isn’t always as well known is how strong this effect can be and why it occurs. At KEMET we’ve put together a technical video that answers that question.

What is Ask An FAE?

Ask An FAE is a new video series we launched at my day job, KEMET. An FAE is a field application engineer. These engineers are very common in the electronics industry. Companies like KEMET, where I work, have FAEs who meet with customers to answer technical (and very detailed) questions about how to use their products. In UBM’s Mind of an Engineer survey, FAEs were ranked as one of the top information sources for design engineers.

At KEMET we decide to use FAEs to answer the questions. While I’m not an FAE today, I was in the past and happy to kick off the series with our CEO.

Check out KEMET’s Ask An FAE

Mooshimeter Review – Smartphone Multimeter

Can your phone replace your DMM?

Mooshimeter Review

For fifteen years I used my Radio Shack 22-168A digital multimeter as my go-to meter. A couple of years ago I bought a Fluke 115. Not because the RS meter lacked a measurement, but because I wanted a backlit screen. Here’s the crazy thing though in 20 years of multimeter development, there hasn’t been much innovation. Well outside of maybe auto-ranging.

All three meters I have, plus the Virtual Bench I reviewed about a year ago all continue to have the same limitation: they can only perform one measurement at a time. That’s one feature that makes my latest meter, the Mooshimeter, unique. It can measure both voltage and current at the same time. Oh, and it doesn’t have a screen.

Continue Reading »

Fading LED: analogWrite millis() Example

Add a fading LED without delay()

Fading LED millis() Example

It’s a well-known fact of engineering: LEDs make everything look better. And that means a Fading LED is even better. Using Arduino’s analogWrite(), fading a LED is just a matter of a loop. If you use delay(), you can’t easily add other actions. What can you do? Well, Fading a LED with millis() is pretty simple. Here’s the code to do it and a quick explanation.

Continue Reading »

Measure PWM Current with a Modified Moving Average

How do you measure a signal that keeps changing?

Measure PWM Current with MMA

Pulse Width Modulation (PWM) makes it possible to dim lights, control the speed of motors, and (with the help of filters) generate analog reference voltages. When measuring the voltage or current of a PWM signal, there are unique challenges. You can use this tutorial to measure PWM current with a modified moving average (MMA).

Continue Reading »