HowTo: Anemosens – Build a 3D printed wind sensor / anemometer

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

Initially I could have used it as a wind sensor for one of my weather stations. At that time I had an FDM 3D printer available and also a few first ideas for a printable design.

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

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 tolerances were often so bad that the parts didn’t fit together properly.

So I put the project on hold again. 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. That means WinDIY_2 (that’s the name of the wind turbine) should not get a wind vane, which automatically aligns the nacelle to the wind. Instead, the nacelle should be turned into the wind via a servomotor. In order 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: This is how the idea was born (again) to design a 3D printable anemometer.

At this time my “machine park” had already grown a bit. In addition to my FDM printer, I could now also use an SLA printer. The practical thing about this is that with SLA printers you can also print overhanging structures very well and generally in a much higher resolution than with FDM printers. From the production side, almost all concerns were resolved. 🙂

So the anemometer had to be as compact as possible, because unnecessary weight should be avoided at this point (and because it just looks cooler. 🙂 )

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

The first draft still looked like shown in the photo. A bit “plump” and still with a detachable tip.

All in all unfortunately still a bit too big for the design of WinDIY_2. So I went back to the desk.

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

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 out 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 created a small sensor board, which 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 further processed or stored in various ways.

Various interfaces and an SD card slot are available on the Anemosens_MCU circuit 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 also contains a few pictures of the circuit boards used and the general structure.

You can see more information in the following video.

This video also shows the structure of the anemosens sensor PCB.

Safety instructions

I know the following hints are always a bit annoying and seem unnecessary. But unfortunately, many people who knew it "better" from carelessness lost their eyes, fingers or other things or hurt themselves. In comparison, a loss of data is almost not worth mentioning, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Even the coolest project is worth no injury or other annoyance.

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 shop via this link, receives a commission from the online shop or provider concerned. The price doesn't change for you. If you do your purchases via these links, you will support in being able to offer further useful projects in the future. 🙂


For the construction you have to master soldering tasks. The following articles provide tips on how to do this.

Required tools:

1xsoldering ironBei Amazon kaufen
1xUSB soldering ironBei Amazon kaufen
1xthird-handBei Amazon kaufen
1xsoldering tip cleanerBei Amazon kaufen
1xhot glue gunBei Amazon kaufen
1xSLA 3D printerBei Amazon kaufen
1xM2 internal tapBei Amazon kaufen
1xM3 internal tapBei Amazon kaufen
1xM8 internal tapBei Amazon kaufen
1xM8 external tapBei Amazon kaufen
1xTorx screwdriverBei Amazon kaufen

Required material:

1xM2x6 grub screwBei Amazon kaufen
6xM2x6 countersunk screwBei Amazon kaufen
3xM3x6 grub screwBei Amazon kaufen
1xM3x50 countersunk screw Bei Amazon kaufen
6xM2 threaded insert Bei Amazon kaufen
3xM3 thread insert Bei Amazon kaufen
3xCylinder magnet 5x2mm Bei Amazon kaufen
1xCylinder magnet 10x5mm
1x623 ball bearings Bei Amazon kaufen
2x608 ball bearings Bei Amazon kaufen
1xJST SH connection cable Bei Amazon kaufen
1x3D printer resin Bei Amazon kaufen
1xGlue Bei Amazon kaufen
1x10x2mm aluminum tube Bei Amazon kaufen
1xsolder Bei Amazon kaufen
1xUSB power supply Bei Amazon kaufen
1xUSB-C cable Bei Amazon kaufen

Build 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 wind speed is measured with the Hall sensor. The wind direction is measured with the AS5048B.

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

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

Wiring of the anemoses sensor PCB

The wind direction sensor

The AS5048B sensor can be read via the I2C bus. A number of degrees from 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 compass point, the sensor must of course be aligned or calibrated appropriately.

More info on 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 built into the rotor. Every time one of the magnets passes the sensor, this can be 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 pulses detected must be divided again by three in order to be able to determine the time for one revolution. This number of revolutions can in turn be used to determine the wind speed. For exact readings, 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:

You can see a good overview of which components belong where on the PCB in the following paragraph. Thanks to the work of the Open Scope Project, you can generate very helpful HTML files in which you can see directly which components have to be installed where on the PCB.

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

You can also find the current file in the GIT repository under the following link:

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

Gather the required materials

Before you can start you should of course collect all the required individual parts.

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

You will need the following parts for assembly:

  • 1x M2x6 grub screw
  • 6x M2x6 countersunk screw
  • 3x M3x6 grub screw
  • 1x M3x50 countersunk screw
  • 6x M2 thread insert
  • 3x M3 thread 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 bearings
  • JST SR connection cable
  • The 3D printed parts

In the following, the required individual parts are shown again in the gallery view.

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

Simply place the magnets in the pockets and close the openings with some glue.

Prepare magnet holder

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

You will need the parts shown on the left.

First place 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 clean 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.

To do this, put a small drop of glue in the holder and then press the magnet into the holder.

Caution: Note that this magnet must be a diametrically magnetized magnet. Otherwise the AS5048B cannot detect the rotation.

The cylinder magnet should then sit flush in the bracket.

Insert ball bearings into the components

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

Before you do that, however, you should first free all ball bearings from their bearing grease and replace them with smooth-running machine oil. Manufacturers often supply ball bearings coated with bearing grease. 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 resistance to rotation.

In order to keep this as low as possible, you have to remove the sluggish bearing grease. So that the bearing is still protected against corrosion afterwards, you should then conserve the bearing with machine oil (as is known from 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 don’t have to fasten it any further at this point.

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

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

So put the bearing straight on the bracket…

… and push it in until it…

… sits flush in the bracket.

At this point you can already fix the bearing with the M2x6 grub screw.

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

Another view.

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

Another 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 axis of the base…

…until the rotor sits on the axle as shown.

Then put the spacer ring shown on the axle.

At this point at the latest you have to remove the 608 bearing from the holder in the wind vane.

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

And then bolt the bearings with the lock nut shown.

Important: Do not work here with too much force / torque! If necessary (definitely recommended depending on the print quality) you should re-cut the M8 external and internal thread with a tap!

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

Now you can put the wind vane back on the previously attached 608 ball bearing…

… and and fix it …

… with the M2x6 grub screw.

In the last step, the magnet holder is connected to the wind vane.

To do this, you should (only) wet the tip of the M3x50 countersunk screw with some screw locking varnish.

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

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

Then place the magnet holder in such a way that the attached 623 ball bearing slides into the pocket provided. Then hold the magnet holder and turn the wind vane at the same time until the M3x50 screw grabs the thread in the wind vane and is screwed in all the way.

You can also see the entire process in this video from second 95 onwards.

Completely screwed, the fully assembled magnet holder should sit in the base as shown.

Insert the sensor board into the socket

Now that you’ve built most of the sensor housing, you can start building the base.

You will need the items shown on the left for this.

The M2 and M3 thread inserts are already inserted in the socket.

To do this, the M2 were melted into the holder from above and in the upper row from the outside.

The M3 thread inserts are melted into the bottom row of the externally accessible holes.

Another view of the melted-in thread inserts.

In the top row, the M2 inserts are inserted.

In the bottom row the M3 inserts.

Now you can plug the JST SH 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 with the M2x6 countersunk screws as shown.

Assemble the case with the base

In the last step you only have to connect the socket to the rest of the housing.

To do this, slide the socket into the base of the sensor as shown.

Then line up the holes in the base with the holes/threaded inserts in the base…

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

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

…and fix it with…

… the M3x6 grub screws.

Completeöy 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: Build the Anemosens_MCU board

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

With the help of the Anemosens MCU circuit board, you have the option of reading out the sensor data and sending it via the USB-C connection, Modbus, Wifi or Bluetooth for further evaulation. 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 equipped with a BME280 for further monitoring of the environmental data. Temperature, humidity and air pressure can also be logged.

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

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

A simple 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 the Open Scope Project, you can generate very helpful HTML files in which you can see directly which components have to be installed where on the PCB.

You can see the sens sensor PCB here: Anemosens_MCU PCB

You can also find the current file in the GIT repository under the following link:

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

The Anemosens_MCU firmware

A first version (Work in progress) 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. In this way, the data can be measured, processed and stored. They are also made available (if desired) 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 used microcontroller.

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

Have fun with the project

I hope everything worked as described. If not or you have any other questions or suggestions, please let me know in the comments. Also, ideas for new projects are always welcome. 🙂

P.S. 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 appreciate it that I share these information with you, I would be happy about a small donation to the coffee box. 🙂

Buy Me a Coffee at   

Leave a Reply

Your email address will not be published.