HowTo: Anemosens - Building a 3D printed anemometer (wind sensor)

To be honest, the idea of a 3D printable wind sensor ("anemometer" in technical jargon) has been floating around in my head for quite a long time.

Initially, I could have used it as a wind sensor for one of my weather stations. At the time, I had an FDM 3D printer at my disposal and a few initial ideas for a printable design.

I then printed out and tested the design shown on the left.

Unfortunately, this design never made it past the prototype phase. The limitations of the FDM printing process were somewhat problematic here. Especially when printing overhanging structures, the tooling was often so poor that the parts did not fit together properly.

So I put the project on hold again for the time being. But when I started developing the second version of a 3D printable wind turbine the topic of an anemometer came back to my desk. This time I wanted to build a wind turbine with electronic wind tracking. This means that WinDIY_2 (the name of the wind turbine) should not have a wind vane that automatically aligns the nacelle with the wind. Instead, the nacelle should be turned into the wind via a servomotor. For this to work, the electronics must of course know the current wind direction. Of course, this only works if the electronics are able to measure the current wind direction. You probably already know where this is going: So the idea was born (again) to design a 3D printable anemometer.

At this point, my "machine park" had already grown somewhat. In addition to my FDM printer, I was now also able to use an SLA printer. The practical thing about this is that you can also print overhanging structures very well with SLA printers and generally in a much higher resolution than with FDM printers. So from the production side, almost all concerns were dispelled 🙂

For integration into WinDIY_2, the anemometer should be mounted on a small bracket on the nacelle of the wind turbine.

The anemometer therefore had to be as compact as possible to avoid unnecessary weight at this point (and also because it simply looks cooler. 🙂 )

The first design still looked like the one shown in the photo. A little "chunky" and still with a removable tip.

Unfortunately still a little too big for the design of WinDIY_2. So it went back to the desk.

After a few more drafts, the design shown on the left eventually emerged.

A very compact anemometer with the following data:

  • Base diameter: 27mm
  • Rotor diameter: 150mm
  • Height (incl. base): ~160mm

This design consists of a few parts which can be printed on a standard SLA printer.

Cross-sectional view of Anemosens.

In order to be able to evaluate the measured values for wind speed and wind direction, I have created a small sensor board that can be integrated into the base in such a way that the sensors are positioned in exactly the right places. The sensor board can then be connected to an ESP32 via an optional additional board (the Anemosens_MCU PCB). The data can then be processed or stored in various ways.

Various interfaces and an SD card slot are available on the Anemosens_MCU board. Further information about this board can also be found under the following link.

The general structure of Anemosens is described in the following article.

The following gallery contains a few pictures of the circuit boards used and the general structure.

You can also see more info in the following video.

This video also shows the setup of the Anemosens sensor PCB.

Safety instructions

I know the following notes are always kind of annoying and seem unnecessary. Unfortunately, many people who knew "better" have lost eyes, fingers or other things due to carelessness or injured themselves. Data loss is almost negligible in comparison, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Because even the coolest project is not worth injury or other trouble.

Affiliate links/advertising links

The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and make a purchase via this link, will receive a commission from the relevant online shop or provider. The price does not change for you. If you make your purchases via these links, you support in being able to offer other useful projects in the future. 🙂 


For the assembly you have to master soldering tasks. The following articles contain tips on this.

Required tool:

1xSoldering ironBuy at Amazon
1xUSB soldering ironBuy at Amazon
1xThird handBuy at Amazon
1xSoldering tip cleanerBuy at Amazon
1xHot glue gunBuy at Amazon
1xSLA 3D printerBuy at Amazon
1xM2 internal tapBuy at Amazon
1xM3 internal tapBuy at Amazon
1xM8 internal tapBuy at Amazon
1xM8 external tapBuy at Amazon
1xTorx screwdriverBuy at Amazon

Required material:

1xM2x6 grub screwBuy at Amazon
6xM2x6 countersunk head screwBuy at Amazon
3xM3x6 grub screwBuy at Amazon
1xM3x50 countersunk head screw Buy at Amazon
6xM2 thread insert Buy at Amazon
3xM3 thread insert Buy at Amazon
3xCylinder magnet 5x2mm Buy at Amazon
1xCylinder magnet 10x5mm
1x623 Ball bearing Buy at Amazon
2x608 Ball bearing Buy at Amazon
1xJST SH connection cable Buy at Amazon
1xELEGOO ABS-Like 3D Printer Resin Buy at Amazon
1xAdhesive Buy at Amazon
1x10x2mm aluminum tube Buy at Amazon
1xSolder Buy at Amazon
1xUSB power supply unit Buy at Amazon
1xUSB-C cable Buy at Amazon

Assembling the sensor board

An important component for recording the wind data is the Anemosens sensor board. A Hall sensor and an AS5048B (a "magnetic rotary encoder") are installed on it. The Hall sensor is used to measure the wind speed. The AS5048B is used to measure the wind direction.

You can also find more information about the sensor board in the following article.

The structure of the circuit board can be seen very clearly in the following video from second 50.

Wiring of the Anemosens sensor PCB

The wind direction sensor

The AS5048B sensor can be read out via the I2C bus. A degree value of 0-360° is output. The resolution of the AS5048B is 14 bits, which corresponds to 0.0219°. In order to assign the number of degrees to a cardinal point, the sensor must of course be aligned or calibrated accordingly.

More information about the AS5048B is available here:

The wind speed sensor

The wind speed is evaluated using an AH49E linear Hall effect sensor. This detects the passing of the three magnets installed in the rotor. Each time one of the magnets passes the sensor, this is measured as a change in the analog output voltage of the sensor. For reasons of symmetry, three magnets are installed in the rotor. This means that the number of detected pulses must be divided by three again to determine the time for one revolution. This number of revolutions can in turn be used to determine the wind speed. For exact measured values, you should calibrate the measured value with a real wind speed.

PCB Manufacturing

You can find all the information you need to manufacture the PCBs here:

A good overview of which components belong where on the PCB can be seen in the following paragraph. Thanks to the work of OpenScope Project you can generate very helpful HTML files in which you can directly see which components have to be installed where on the PCB.

You can see the overview for the Anemosens sensor PCB here: Anemosens Sensor PCB

The current file can also be found in the GIT repository under the following link:

(Please note that you have to download the HTML file to view it. Directly from the GIT repository this is not possible).

Collect the required materials

Before you can get started, you should of course gather together all the individual parts you need.

The STL files for 3D printing the required parts can be found in the Anemosens Git repository at:

For the assembly you need the following parts:

  • 1x M2x6 grub screw
  • 6x M2x6 countersunk head screw
  • 3x M3x6 grub screw
  • 1x M3x50 countersunk screw
  • 6x M2 thread insert
  • 3x M3 threaded insert
  • 3x cylinder magnet 5x2mm (diameter: 5mm, height: 2mm)
  • 1x cylinder magnet 10x5mm (diameter: 10mm, height: 5mm) diametrically magnetized!
  • 1x 623 ball bearing
  • 2x 608 ball bearing
  • JST SR connection cable
  • The 3D printed parts

The individual parts required are shown again in the gallery view below.

In this example, the 2x5mm magnets are already installed in the pockets provided in the rotor.

Simply insert the magnets into the pockets and seal the openings with a little glue.

Prepare magnetic holder

The magnet holder holds the 10x5mm cylinder magnet exactly above the AS5048B sensor. It is rotatably connected to the wind vane via the M3x50mm screw. In this step you should already prepare the magnet holder.

You will need the parts shown on the left.

First, fit the M3x50 screw as shown and screw it into the bracket as far as it will go.

If the screw is difficult to screw in, you should cut the hole cleanly again with an M3 tap.

Then screw in the M3x50 screw as far as it will go.

Another view of the screwed-in M3x50 screw.

Now you can glue the 10×50 cylinder magnet into the holder.

Put a small drop of glue in the holder and then press the magnet into the holder.

Attention: Make sure that this magnet is a diametrically magnetized magnet. Otherwise the AS5048B cannot detect the rotary movement.

The cylinder magnet should then sit flush in the holder.

Insert the ball bearing into the components

Before you can continue with the assembly of the remaining components, you should first prepare them. In this step, the ball bearings are inserted into the 3D printed parts.

Before you do this, however, you should first remove the bearing grease from all ball bearings and replace them with smooth-running machine oil. Ball bearings are often supplied with bearing grease by the manufacturer. This is actually useful to protect the bearing parts from corrosion and to keep them running smoothly. Unfortunately, this also increases the initial torque and the rotational resistance.

To keep this as low as possible, you must remove the sluggish bearing grease. To ensure that the bearing is still protected against corrosion afterwards, you should then preserve the bearing with machine oil (as used in sewing machines, for example).

You can then use the bearings prepared in this way to assemble the bearing.

To do this, insert the first of the 608 ball bearings into the rotor.

The bearing should then ...

... sit flush. You do not need to fasten it any further at this point.

You can then insert the other 608 ball bearing into the holder in the vane.

This is initially just a test to see if everything fits properly. You will then have to remove the bearing from the bracket in the vane again.

So if the bearing is just touching the bracket...

... and pushes it in until it...

... sits flush in the holder.

At this point, you can also fix the bearing in place using the M2x6 grub screw.

If necessary, you should first recut the thread with an M2 tap.

Other view.

You can then simply attach the remaining 623 ball bearing to the M3x50 countersunk screw of the magnet holder.

Other view.

Assemble the prepared parts

You can then assemble the parts prepared in the previous step.

You will need the parts shown for this.

First place the rotor with the ball bearing on the axle of the base...

... until the rotor is seated on the axle as shown.

Then attach the spacer ring shown to the axle.

At this point at the latest, you must remove the 608 bearing from the holder in the vane.

Then place this bearing on the axle of the base as shown.

And then screw the bearings together with the lock nut shown.

Important: Do not work with too much force/torque here! If necessary (recommended in any case, depending on the print quality), you should recut the M8 external and internal threads with a thread cutter!

Then screw on the lock nut until the ball bearings are securely seated on the main axle.

Now you can put the wind vane back onto the previously fitted 608 ball bearing...

... and with the M2x6 grub screw...

... fix.

The last step is to connect the magnetic holder to the wind vane.

For this you should (only) the tip of the M3x50 countersunk head screw with a little threadlocker.

Here it is important that some threadlocker is applied to the thread in the wind vane. If necessary, you can also remove the vane again and drip the threadlocker directly into the threaded hole. In any case, make sure that no locking lacquer gets into the ball bearings.

View of the opening into which the magnet holder must be inserted.

Then position the magnet holder so that the attached 623 ball bearing slides into the pocket provided. Then hold the magnet holder firmly and at the same time turn the vane until the M3x50 screw grips the thread in the vane and is fully screwed in.

You can see the whole process in this video from second 95.

The fully assembled magnetic holder should be screwed into the base as shown.

Insert the sensor board into the socket

Once you have assembled the majority of the sensor housing, you can now start assembling the base.

You will need the individual parts shown on the left.

The M2 and M3 threaded inserts are already inserted in this base.

To do this, the M2s were melted into the bracket from above and into the top row from the outside.

The M3 threaded inserts are melted into the bottom row of holes accessible from the outside.

Another view of the melted threaded inserts.

The M2 inserts are melted into the top row.

the M3 inserts in the bottom row.

Now you can plug the JST SR connection cable into the socket on the sensor housing.

Then push the cable of the prepared sensor board through the hole in the base...

... and screw the circuit board to the base using the M2x6 countersunk screws as shown.

Assemble the housing with the base

The last step is to connect the base to the rest of the housing.

Slide the base into the base of the sensor as shown.

Then align the holes in the base with the holes / threaded inserts in the plinth.

Other view.

and screw the base to the base using the three M2x6 countersunk screws.

If desired, you can also insert a 10mm (outer diameter) pipe into the base at this point...

...and with the M3x6 grub screws...

... in the base.

Once assembled, your Anemosens should now look like this 🙂

What is still missing is the connection to a suitable MCU, which then has to evaluate and process the sensor signals.

Optional: Assemble the Anemosens_MCU board

The Anemosens MCU board is not absolutely necessary for operating Anemosens. You can also evaluate the sensors on the sensor board with your own hardware.

Using the Anemosens MCU board, you have the option of reading out the sensor data and sending it on via the USB-C connection, Modbus, Wifi or Bluetooth. Optionally, the data can also be stored on a µSD card inserted in the µSD card slot. The data can then be logged with a time stamp via the integrated and battery-buffered Real Time Clock. The board can also be fitted with a BME280 for further monitoring of the environmental data. This means that temperature, humidity and air pressure can also be logged.

You can also find more information about the Anemosens_MCU board in the article

PCB ManufacturingAll infos you need for the production of the PCBs can be found here:

An easy way to get a good overview of which components are placed where on the PCB is shown in the following paragraph. Thanks to the work of OpenScope Project you can generate very helpful HTML files in which you can directly see which components have to be installed where on the PCB.

You can see the overview for the Anemosens sensor PCB here: Anemosens_MCU PCB

The current file can also be found in the GIT repository under the following link:

(Please note that you have to download the HTML file to view it. Directly from the GIT repository this is not possible).

The Anemosens_MCU firmware

A first version of an Arduino-compatible software for evaluating the sensor data can be found under the following link.

This software is tailored for use with the Anemosens_MCU hardware. This allows the data to be measured, processed and saved. They are also made available (if required) via the serial interface (via USB), via the Modbus interface, via WiFi or via Bluetooth.

The firmware is compatible with the Arduino IDE and can be transferred to the microcontroller used.

You can find information on how to program a microcontroller with the Arduino IDE in the article

Have fun with the project

I hope everything worked as described for you. If not or you have questions or suggestions please let me know in the comments. I will then add this to the article if necessary.
Ideas for new projects are always welcome. 🙂

PS Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you think it's cool that I share the information with you, I would be happy about a small donation to the coffee fund. 🙂

Buy Me a Coffee at       


  1. Hi,

    Is it possible to get the gerber files of the sensor board. Only the pick and place data can be found in Git


    1. Hi Andrew,
      Exactly the production data are unfortunately not public because I have had bad experiences with them in the past. I plan to offer the circuit board in a small shop soon. 🙂
      Best regards

  2. Hello,
    Great design concept, I'm currently looking for something similar for my sailing boat. I wanted to order the sensor board from PBCWay, but in the review the cost is increased from 5€ to 43€ for 5/10 pieces because 2 boards. Would like to customize the design a bit ... can you provide the ECAD data? I think drawing in Kicad/Eagle is a waste of time ... and would only be a second option ...

    1. Hi Uwe,
      yes, that's a bit of a shame about ordering from PCBway. I'm currently working on a small store where I can sell the boards. I already have some in stock. If you would like to have some, please contact me via the contact form 🙂
      Best regards

Kommentar hinterlassen

Your email address will not be published. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.