Introduction: 3d Printed Anemometer Under 5$

About: After a degree in micro-engineering in Switzerland, I moved to Russia to discover new landscapes

I am building a small stand alone meteorological station. As always, I am trying not to buy each instrument but building them as far as I can because it is :

  1. much more fun and instructive
  2. much cheaper

So I needed to find a way to measure the wind speed. An anemometer is basically a rotor with hemispherical cups mounted on it so it was a good pretext to get my 3D printer working. I also needed a way to measure the rotation speed of the rotor. I thought that a magnet and a hall sensor was a good solution.

Each time the south pole pass in front of the hall sensor, a service interrupt routine is called and a counter is incremented in the microcontroller. Each minute, the counter value is written on an SD card and reset to zero. For the moment, the result is only in rpm but if you want to have it in your favorite unit (m/h or km/h) you need to calibrate it. I will explain how I will do it. The anemometer is already on site so I will do it when returned.

Step 1: Tools and Material


  • 3D printer
  • soldering iron
  • screwdriver
  • cutter
  • sand paper
  • metal saw


  • ball bearing (D internal=5mm, D external=11mm, h=4) (it is an RC car wheel bearing)
  • hall sensor (
  • magnet (cylinder d=5mm, h=10mm)
  • 3 short male headers (
  • plastic glue (I like epoxy glue like Araldite)
  • aluminium tube (d=5mm, l=27mm)
  • 3 screws without head (M3*6)

Step 2: Printing and Parts Preparation

  • Print the part with support for best result and clean it. I also like to use the brim printing option. Be sure that the parts are well adjusted before gluing it.
  • Cut your aluminium tube at 27mm length.
  • Solder the hall sensor on the header (3 pin)

Step 3: Assembly

  1. Assemble with glue the three cups with the central part
  2. Assemble with glue the tube with the central part.
  3. Press the bearing in its compartment
  4. Press the magnet in its compartment
  5. Place the bearings on the tube
  6. Press the magnet holder on the other tube end
  7. Press the three pins into its slot
  8. Screw the hall sensor box

Step 4: Program the Controller

  • You need to declare the anemometer pin (hallPin) as input and also branch a pullup resistor (physically or inside the controller by software). I did this by software with the command:


  • I renomment to use interruptions. In the arduino IDE, it can be done with the command:

attachInterrupt(digitalPinToInterrupt(hallPin), isr, FALLING);

  • In the ISR function I simply added the instruction:


  • In the main loop I check if 60 second have passed like in the arduino example (

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > 60000) {

previousMillis = currentMillis;

//do what you want



Step 5: Calibration

As said in the introduction, my anemometer is now on site and I have all the time to prepare the calibration plan.
The plan consist in making a bike tour with the anemometer on board. By recording the anemometer speed and the wheel speed, we can calculate the relationship between the anemometer speed and the wind speed. We assume that the wind speed is equal to the bike speed so choose a day without wind.

I will soon release the code who does that.