User Tools

Site Tools


3D print APRS WX station (release 2023)

Ethernet PoE weather station


Instaled stations - OK1HRA-8 | OK1IRG-6 | OK1MKH-8



  1. Measures values
    1. Temperature (inside not exactly), external in sunshield
    2. Relative humidity
    3. Dew point calculated
    4. Pressure
    5. Wind speed - with three blades
    6. Wind direction
    7. Rain with a resolution of 0.14 mm
  2. Ethernet RJ45 connection
  3. Powered via passive POE with own adapter
  4. Single mounting point installation with simple mounting with two plastic binding tapes
    1. Design supports an easy change of the diameter mounting tube, by replacing one 3D printed part (number 2).
  5. Simply replace the vanes of the anemometer (if they are damaged) without disassembly
  6. Simply replace the paddle of wind direction (if they are damaged) without disassembly
  7. No wiring, just fit two PCBs
  8. Completely 3D printed
  9. Publish data to MQTT
  10. Stores the maximum historically measured wind speed value with a time stamp to the eeprom
  11. Direct sending data to (if you have a radio amateur license)
  12. Setup via IP Telnet, with security using a hundred character security key
    1. Display of raw values of all internal sensors
    2. USB-C connector for read security key
  13. OTA update via web interface
  14. Web MQTT wall, for simple debugging
  15. Hardware expandable by (they are not implemented in firmware)
    1. RFM96W-433S2 LoRa module (PCB antenna designed on main board), or other pin compatible module
    2. SHT30 sensor
    3. MS563702BA03 sensor
    4. ICP-10111 sensor
  16. Optional external SD18B20 thermistor with Double sun shield for thermometer - also 3D printed
    1. Automatic detection of connection of external thermometer DS18B20 and switch to its values


3D printed parts

Download links in the source section.
You can use 3D printing to order, for example at - don't forget to specify the diameter of the mounting pipe.

Printed parts
200g White PETG filament
White due to reduced overheating from the sun light

Part number 2 is exported for a 42mm diameter mounting tube. If you need a different diameter, change the value in the source code, then change the part to number 2. Open the file in OpenScad, and follow the instructions.

After printing, remove the supports and remove the strings using hot air
4 pieces
Printed parts
250g Black PETG filament
Black due to the absorption of sunlight, it melts the winter ice as soon as possible
Number 14 is an optional stand for the chair
Number 16 is a necessary part for pressing the bearings
Number 17 is optionally scaled internal parts of the bearings to find the optimal tolerance, if necessary
Number 18 part for formatting bearings

After printing, remove the supports and remove the strings using hot air
13 pieces
Printed parts
25g Transparent PETG filament
due to the show of the LED in the POE module

After printing, remove the supports and remove the string using hot air
2 piece

The other parts

remoteqth.com_img_wiki-3d-rot1-57.jpg M3 x 10mm, allen head, stainless steel 6 pieces
remoteqth.com_img_wiki-wx-station2-22.jpg M2 x 10mm, allen head, stainless steel 6 pieces
remoteqth.com_img_wiki-wx-station2-23.jpg Brass threaded rod M6 x 250mm 1 piece
remoteqth.com_img_wiki-wx-station2-24.jpg Stainless steel threaded rod M6 x 105mm 1 piece
remoteqth.com_img_wiki-wx-station2-79.jpg Screw M4 x50mm 1 piece
remoteqth.com_img_wiki-wx-station2-26.jpg Nut M4 1 piece
remoteqth.com_img_wiki-wx-station2-25.jpg Brass nut M6 3 pieces
remoteqth.com_img_wiki-wx-station2-26.jpg Stainless steel nut M6 1 piece
remoteqth.com_img_wiki-wx-station2-27.jpg Ball bearing 61802 (15/24x5mm) 2 pieces
remoteqth.com_img_wiki-wx-station2-28.jpg Neodymium magnet with dimensions 6 x 12 x 2 mm 2 pieces
remoteqth.com_img_wiki-wx-station2-29.jpg Neodymium magnet, cylinder with a diameter of 5 mm and a height of 3 mm 1 piece
remoteqth.com_img_wiki-wx-station2-30.jpg PCB board 1 piece
remoteqth.com_img_wiki-wx-station2-04.jpg Plastic binding belt, about 30 cm long 2 pieces
Universal transparent silicone sealant 50g


Allen key 1,5mm
Allen key 2,5mm
Key 10mm
3D printed part number 16, for pressing bearings

Assembly manual, step by step

  1. Carefully break off the two parts connected to the main PCB board via the bridge
  2. Break off the bridge with the help of pliers
  3. Place the 3D printed part number 3 on the main PCB and seal the upper gap with silicone sealant
  4. Place the 3D printed part number 4, push it downwards (to the left in the picture) and screw together with two M2 x10mm screws
    Be careful not to tighten too much, the screws are tightened into the conical holes in the plastic
  5. Now it will be necessary to press the bearing.
    First, screw a nut on a brass threaded rod about 50mm from the edge.
  6. Then put the smaller part of the 3D printed part number 16 on it.
  7. You thread the bearing
  8. Put on the 3D printed part number 5 according to the picture
  9. You thread the second (larger) 3d printed part number 16
  10. Screw in the brass nut
  11. Lightly tighten with a number 10 wrench until resistance begins to rise
  12. Disassemble the entire tool, the bearing should be pressed inside the part.
    The new bearings have considerable resistance. Over time, it will decrease during rotation.
    This process can be accelerated with a simple tool, with which we spin the bearing for a few minutes with a drill.
    1. Insert the M4 x50mm screw into the 3D printed part 18 and tighten from the other side with a nut
    2. Then clamp the screw in the chuck. Put a bearing on the plastic cone and let it spin at high speed for a few minutes.
      Attention, be careful and use gloves!
  13. Describe all magnets with north and south fields
    Field detection can be done in two ways
    1. Using the compass, or with other methods (hanging on a thread, floating on water…)
    2. By attaching a magnet to the hall probe on the main PCB WX of the station, the probe responds to the N pole
      1. Connect to the weather station using telnet
      2. By default, the sensor is in the RpmPin 1 state
      3. After attaching the magnet in the North direction to the sensor (see picture), it will switch to the state RpmPin 0.
        Note that you must press Enter in telnet to refresh the values
  14. We insert the rectangular magnet into the gap in the 3d printed part number 5 so that the N pole points towards the center
  15. We press the magnet so that it does not stick out
  16. Place part number 5 with bearing and pagnet on the main board and push it downwards (to the left in the picture)
  17. Place the 3D printed part number 7 and fasten with two M2 x10mm screws
  18. Press the bearing into the 3d printed part number 9 according to the instructions in point 5
  19. After removing the supports, insert the magnet into part 9 so that it is oriented with the North field up
  20. Place the part on the main board and gently push it so that the bearing fits onto the prepared cone
    remoteqth.com_img_wiki-wx-station2-51.jpg remoteqth.com_img_wiki-wx-station2-50.jpg
  21. Be very careful not to damage the hall probes at the end of the main board.
    Fit the round PCB and insert it into the connector in the main board.
    remoteqth.com_img_wiki-wx-station2-52.jpg remoteqth.com_img_wiki-wx-station2-53.jpg remoteqth.com_img_wiki-wx-station2-54.jpg
  22. Insert a brass threaded rod with a nut on the end into the 3D printed part.
  23. Push the threaded rod through the entire weather station and carefully slide the 3D printed part number 2 onto the main board.
    remoteqth.com_img_wiki-wx-station2-56.jpg remoteqth.com_img_wiki-wx-station2-57.jpg
  24. Seal the top end with a small amount of silicone sealant. Larger amounts could be pushed under the plate and prevent the part from turning underneath.
    remoteqth.com_img_wiki-wx-station2-58.jpg remoteqth.com_img_wiki-wx-station2-59.jpg
  25. Put on the 3D printed part number 10 and screw on the brass nut so that the screw does not protrude from the nut.
  26. Put on the 3d printed part number 12 and insulate the joints with silicone sealant.
  27. Gently tighten the nut on the underside of the weather station. Attention, strong tighten can deform the plastic parts.
  28. Press the cylindrical neodymium magnet into the 3D printed part number 11 so that it is oriented with the South field facing outwards.
  29. Using two M2 x10mm screws, attach the cradle to the main plate and plastic bracket number 12. The screws must remain loose so that the cradle can rotate freely. The ideal situation is when, by moving the cradle in the axis of rotation, the cradle does not touch either side (the PCB or the supporting plastic part.
    remoteqth.com_img_wiki-wx-station2-64.jpg remoteqth.com_img_wiki-wx-station2-65.jpg
  30. We verify the correct function of the cradle by tilting it, when the cradle always it flips over freely.
    remoteqth.com_img_wiki-wx-station2-67.jpg remoteqth.com_img_wiki-wx-station2-66.jpg
  31. Before putting on the 3D printed part number 13, we remove the strings from its inner part with the help of hot air. Strings are thin and hard to see, but they can prevent the cradle from tipping over inside. Then we screw the part to the main structure using four M3 x10mm screws. Attention, we do not tighten with force, the screws are only in conical plastic holes, without metal nuts.
    remoteqth.com_img_wiki-wx-station2-69.jpg remoteqth.com_img_wiki-wx-station2-68.jpg
  32. Place the 3D printed part number 1 in the lower part and secure it with a brass nut.
  33. Place the 3D-printed part number 8 in the rotating part, and insert it so that it does not protrude.
    The accuracy of the facing of 3D printed parts is given by the accuracy of printing without overshoot at the end and excessive extrusion.
    remoteqth.com_img_wiki-wx-station2-71.jpg remoteqth.com_img_wiki-wx-station2-72.jpg
  34. We screw in the stainless steel threaded rod from the opposite side until it starts to resist, which is the end of the plastic taper hole. Then we screw the stainless steel nut onto it, by screwing it along the threaded rod we balance it so that it remains in a horizontal position. Finally, secure the mother with a bit of silicone sealant.

  35. Place three 3D printed anemometer vanes (part number 6).
    The accuracy of the facing of 3D printed parts is given by the accuracy of printing without overshoot at the end and excessive extrusion.
    remoteqth.com_img_wiki-wx-station2-74.jpg remoteqth.com_img_wiki-wx-station2-75.jpg
  36. Before inserting the plastic binding tape into the 3D printed part number 2, bend the end of the tape twice so that it can be inserted through the hole that is bent into the washer ring.
  37. With the two straps, we attach the weather station to the mounting pipe.
  38. In order for the weather station to show the correct wind direction, it must be correctly oriented North - South. Turn the weather station according to the inscription on the outside of the printed part.
  39. The POE module is mounted in a 3d printed part made of transparent material so that the LED diode inside can be seen, which signals the interruption of the tube fuse in the power supply of the weather station. Insert the PCB joint into the 3d printed box according to the picture.
  40. Then close and screw with a two M3 x 10mm screws
  41. You can optionally continue
    1. Connect External thermometer DS18B20

Connection using telnet and settings

How to connect

Reading the access key

  1. You download the Arduino IDE
  2. Connect the weather station to the Ethernet, including the power supply via the POE module, see the picture above
  3. Connect the weather station with the USB-C cable to the computer
  4. In the Arduino IDE menu, select Tools/Port: your port
  5. Select the menu Tools/Serial monitor (or press Ctrl+Shift+M)
  6. In the bottom sheet of the monitor, choose the speed of 115200 baud and (CR)
  7. Place the cursor in the upper input line and press Enter
  8. The IP address and access key will be displayed, which you should copy and save safely.

Telnet connect

  • Download and install PuTTY
  • In menu Terminal preset CR/LF and line discipline by picture

  • In main menu Session select or set the following values

    • select Telnet
    • port 23
    • write IP address (saved from Reading the access key)
    • Sessions may be saved for next time
    • for connect press Open
  • Login confirm with press
  • Now answer four times the question of what character is on random selected position, in your key (key saved from Reading the access key). Key formated in groups of ten - FOR EXAMPLE
    Position  KEY
     1-10     pP75tf8qrF
    11-20     y4SK57dpnC
    21-30     fpag8x9eZ4
    31-40     IsueSv4jCY
    41-50     pX3lpK4UPD
    51-60     ij1bbLEQRu
    61-70     XRr9dfoJje
    71-80     44u5MYQdcm
    81-90     B68NpG7F0t
    91-100    5mD04pAE6s
  • if you enter wrong three times, login will be blocked for next ten minutes (It can be worked around by resetting the power supply to the weather station).
  • After login your IP address will be stored in the EEPROM and next key not will be required only if change your IP address
  • Now logged in to CLI (Command Line Interface) via telnet
  • for Logout press q


Telnet's CLI (Command Line Interface) consists of three parts:

  1. WX station status
    1. Network interface information (IP, MAC address)
    2. UTC time read from the NTP server (indicates a functional connection to the Internet)
    3. Uptime
    4. MQTT borker IP:port/topic
    5. Firmware and PCB revision
  2. Sensors (raw and resulting sensor values)
    1. RainPin - analog status on the input pin and recalculated values
    2. Wind direction - bit value of parallel converter and output values
    3. RpMPin - currently read digital input value (1 = without magnet) and length of the last pulse
      1. + statistics for the last period and the maximum historically measured value with a time stamp
    4. HTU21D - sensor values (in square brackets with added Temperature calibration shift value)
    5. Calculated dew point
    6. BMP280 - sensor values (pressure in square brackets converted to sea level)
    7. DS18B20 - sensor value
    Used to set the necessary values. Press the letter from the left column to call up the required menu

WiFi e-ink display connection

To display the values from the weather station on the WiFi e-ink display, use the tutorial on GitHub

Web interface

If you enter the IP address of your weather station in the web browser, it will be displayed

  1. MQTT wall - client connected to MQTT broker that displays received values every 5 minutes
  2. The page header displays basic information and important links
    1. APRS (if active) - link to the APRS map, where you can view the annual history of values, link to view the WX chart
    2. Upload FW - a link to the web interface of the weather station intended for updating the firmware, by uploading a .bin file
    3. Releases - link to GitHub for downloading the latest version of the firmware in .bin format
    4. html preview - a simple page showing values for the last 5 min cycle

Firmware compilation

  1. Install Arduino IDE
  2. Install ESP32 support from GitHub
    1. prefered via board manager
    1. WiFi, rev 2.0.0
    2. EEPROM, rev 2.0.0
    3. Ethernet, rev 2.0.0
    4. ESPmDNS, rev 2.0.0
    5. ArduinoOTA, rev 2.0.0
    6. Update, rev 2.0.0
    7. AsyncTCP, rev 1.1.1
    8. ESPAsyncWebServer, rev 1.2.3
    9. FS, rev 2.0.0
    10. AsyncElegantOTA, rev 2.2.5
    11. PubSubClient, rev 2.8
    12. Wire, rev 2.0.0
    13. Adafruit_Unified_Senso, rev 1.1.2
    14. Adafruit_BMP280_Library, rev 2.5.0
    15. Adafruit_BusIO, rev 1.9.8
    16. SPI, rev 2.0.0
    17. Adafruit_HTU21DF_Library, rev 1.0.4
    18. SD_MMC, rev 2.0.0
    19. OneWire, rev 2.3.6
    20. DallasTemperature, rev 3.9.0
    21. the current list can be found in source code
  3. Download firmware from GitHub
  4. Select menu Tools/Board:“OLIMEX ESP32-POE”
  5. Connect
    1. USB-C between WX station and PC (Select menu Tools/Port/YOUR-CONNECTED-PORT)
    2. or Network ports
  6. Upload firmware
    1. password for OTA upload is remoteqth

Running own services

MQTT broker

MQTT is a universal protocol that is used to communicate the WX station with other devices (WiFi e-ink display). The control node transmitting this information is the MQTT broker. The default settings of the WX station use the public MQTT broker of the Internet at the address In order to avoid dependence on an Internet connection or the availability of a public MQTT broker, we recommend that you install your own MQTT broker on a Raspberry PI or other device in the local network. For this you can use some of the public instructions like this one (without installing NodeRed).
After installation, change the settings of two items (MQTT broker IP and MQTT broker port) in the Setup section, according to the IP address of your local MQTT broker.

3d_print_aprs_wx_station.txt · Last modified: 2024/01/27 02:16 by ok1hra