====== 3D print APRS WX station (release 2023) ======
{{ https://remoteqth.com/img/wiki-wx-station2-78.jpg?300}}
Ethernet PoE weather station
* **[[https://remoteqth.com/order.php#wx|Order]]**
* [[https://remoteqth.com/3d-wx-station.php|Previous version web]]
* [[https://remoteqth.com/w/doku.php?id=3d_print_wx_station_obsolete|Previous version wiki]]
===== Source ======
* **Firmware**
* [[https://github.com/ok1hra/3D-print-WX-station/blob/master/wx.ino|Arduino source]]
* **3D print model**
* [[https://github.com/ok1hra/3D-print-WX-station/blob/master/3d-print/wx-station.scad|OpenScad source]]
* **[[https://github.com/ok1hra/3D-print-WX-station/tree/master/3d-print/stl-output|.STL and .3mf files]]**
* **[[https://remoteqth.com/download-count.php?Down=hw/SimpleRotatorInterfaceV-POE.stl|.STL for POE]]** injector
* **Electronics**
* [[https://remoteqth.com/download-count.php?Down=hw/wx-08b.pdf|.PDF]] schematics rev 8.
* [[https://remoteqth.com/download-count.php?Down=hw/wx-08b-ibom.html|iBOM.html]] rev 8.
* Optional **e-ink display**
* [[https://github.com/ok1hra/esp32-e-ink|GitHub]]
----
===== Measures values ======
- **Temperature** (inside not exactly), external in sunshield
- **Relative humidity**
- **Dew point** calculated
- **Pressure**
- **Wind speed** - with three blades
- **Wind direction**
- **Rain** with a resolution of 0.14 mm
===== Features ======
- **Ethernet** RJ45 connection
- Powered via passive **POE** with own adapter
- Single mounting point installation with simple mounting with two plastic binding tapes
- Design supports an **easy change** of the **diameter mounting tube,** by replacing one 3D printed part (number 2).
- **Simply replace** the vanes of the anemometer (if they are damaged) without disassembly
- **Simply replace** the paddle of wind direction (if they are damaged) without disassembly
- **No wiring,** just fit two PCBs
- **Open** design
- **Completely 3D printed**
- Publish data to **MQTT**
- Stores the maximum historically measured wind speed value with a time stamp to the eeprom
- Direct sending data to **aprs.fi** (if you have a radio amateur license)
- **Setup via IP Telnet,** with security using a hundred character security key
- Display of raw values of all internal sensors
- **USB-C** connector for read security key
- **OTA update** via web interface
- Web **MQTT wall,** for simple debugging
- Hardware expandable by (they are not implemented in firmware)
- **RFM96W-433S2 LoRa** module (PCB antenna designed on main board), or other pin compatible module
- **SHT30** sensor
- MS563702BA03 sensor
- ICP-10111 sensor
- Optional **external SD18B20 thermistor** with **[[Double sun shield for thermometer]]** - also 3D printed \\ {{https://remoteqth.com/img/wiki-wx-station2-12.jpg?100}}
- **Automatic detection** of connection of external thermometer DS18B20 and switch to its values
- Optional **[[https://github.com/ok1hra/esp32-e-ink|WiFi e-ink display]]** \\ {{https://remoteqth.com/img/wiki-wx-station2-19.jpg?100}} {{https://remoteqth.com/img/wiki-wx-station2-19.png?163}}
----
===== BOM =====
| {{https://remoteqth.com/img/wiki-wx-station2-20.png?100}} | **[[3d_print_wx_station#source|Printed parts]]** \\ **200g White PETG** filament \\ White due to reduced overheating from the sun light \\ \\ //After printing, remove the supports and remove the strings using hot air// | 4 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-21.png?100}} | **[[3d_print_wx_station#source|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// | 12 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-22.png?100}} | **[[3d_print_wx_station#source|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// | 1 piece |
| {{https://remoteqth.com/img/wiki-3d-rot1-57.jpg?100}} | M3 x 10mm, allen head, stainless steel | 6 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-22.jpg?100}} | M2 x 10mm, allen head, stainless steel | 6 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-23.jpg?100}} | Brass threaded rod M6 x 250mm | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-24.jpg?100}} | Stainless steel threaded rod M6 x 105mm | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-79.jpg?100}} | Screw M4 x50mm | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-26.jpg?100}} | Nut M4 | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-25.jpg?100}} | Brass nut M6 | 3 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-26.jpg?100}} | Stainless steel nut M6 | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-27.jpg?100}} | Ball bearing 61802 (15/24x5mm) | 2 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-28.jpg?100}} | Neodymium magnet with dimensions 6 x 12 x 2 mm | 2 pieces |
| {{https://remoteqth.com/img/wiki-wx-station2-29.jpg?100}} | Neodymium magnet, cylinder with a diameter of 5 mm and a height of 3 mm | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-30.jpg?100}} | PCB board | 1 piece |
| {{https://remoteqth.com/img/wiki-wx-station2-04.jpg?100}} | Plastic binding belt, about 30 cm long | 2 pieces |
| {{https://remoteqth.com/img/wiki-3d-rot1-68.png?100}} | Universal transparent silicone sealant | 50g |
===== Tools =====
| {{https://remoteqth.com/img/wiki-3d-rot1-69.png?100}} | Allen key 1,5mm |
| {{https://remoteqth.com/img/wiki-3d-rot1-69.png?100}} | Allen key 2,5mm |
| {{https://remoteqth.com/img/wiki-3d-rot1-70.png?100}} | Key 10mm |
| {{https://remoteqth.com/img/wiki-wx-station2-21b.png?100}} | 3D printed part number 16, for pressing bearings |
----
====== Assembly manual, step by step ======
- **Carefully break** off the two parts connected to the main PCB board via the bridge \\ {{https://remoteqth.com/img/wiki-wx-station2-31.jpg?250}} \\
- Break off the bridge with the help of pliers \\ {{https://remoteqth.com/img/wiki-wx-station2-32.jpg?250}} \\
- **Place the 3D printed part number 3** on the main PCB and seal the upper gap with silicone sealant \\ {{https://remoteqth.com/img/wiki-wx-station2-33.jpg?250}} \\
- **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 \\ {{https://remoteqth.com/img/wiki-wx-station2-34.jpg?250}} \\
- Now it will be necessary to press the bearing. \\ **First, screw** a nut on a brass threaded rod about 50mm from the edge. \\ {{https://remoteqth.com/img/wiki-wx-station2-35.jpg?250}} \\
- Then **put the smaller part** of the 3D printed part number 16 on it. \\ {{https://remoteqth.com/img/wiki-wx-station2-36.jpg?250}} \\
- You **thread the bearing** \\ {{https://remoteqth.com/img/wiki-wx-station2-37.jpg?250}} \\
- **Put** on the 3D printed **part number 5** according to the picture \\ {{https://remoteqth.com/img/wiki-wx-station2-38.jpg?250}} \\
- You thread the second (larger) 3d printed part number 16 \\ {{https://remoteqth.com/img/wiki-wx-station2-39.jpg?250}} \\
- Screw in the brass nut \\ {{https://remoteqth.com/img/wiki-wx-station2-40.jpg?250}} \\
- **Lightly tighten with a number 10 wrench** until resistance begins to rise \\ {{https://remoteqth.com/img/wiki-wx-station2-41.jpg?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-42.jpg?250}} \\
- Insert the M4 x50mm screw into the 3D printed part 18 and tighten from the other side with a nut \\ {{https://remoteqth.com/img/wiki-wx-station2-80.jpg?250}} \\
- 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!** \\ {{https://remoteqth.com/img/wiki-wx-station2-81.jpg?250}} \\
- **Describe all magnets** with north and south fields \\ Field detection can be done in two ways\\ {{https://remoteqth.com/img/wiki-wx-station2-43.jpg?250}}
- **Using the compass,** or {{https://www.google.com/search?q=how+to+find+north+pole+of+a+magnet|with other methods}} (hanging on a thread, floating on water...)
- **By attaching a magnet to the hall probe** on the main PCB WX of the station, the probe responds to the N pole
- Connect to the weather station [[#telnet_connect|using telnet]]
- By default, the sensor is in the **RpmPin 1** state
- 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 \\ {{https://remoteqth.com/img/wiki-wx-station2-83.png?150}}
- We **insert the rectangular magnet** into the gap in the 3d printed part number 5 so that the **N pole points towards the center** \\ {{https://remoteqth.com/img/wiki-wx-station2-44.jpg?250}} \\
- We press the magnet so that it does not stick out \\ {{https://remoteqth.com/img/wiki-wx-station2-45.jpg?250}} \\
- **Place part number 5** with bearing and pagnet on the main board and push it downwards (to the left in the picture) \\ {{https://remoteqth.com/img/wiki-wx-station2-46.jpg?250}} \\
- **Place** the 3D printed **part number 7** and fasten with two M2 x10mm screws \\ {{https://remoteqth.com/img/wiki-wx-station2-47.jpg?250}} \\
- **Press the bearing** into the 3d printed part number 9 according to the **instructions in point 5** \\ {{https://remoteqth.com/img/wiki-wx-station2-48.jpg?250}} \\
- After removing the supports, **insert the magnet** into part 9 so that it is **oriented with the North field up** \\ {{https://remoteqth.com/img/wiki-wx-station2-49.jpg?250}} \\
- Place the part on the main board and gently push it so that the bearing fits onto the prepared cone \\ {{https://remoteqth.com/img/wiki-wx-station2-51.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-50.jpg?250}} \\
- **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. \\ {{https://remoteqth.com/img/wiki-wx-station2-52.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-53.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-54.jpg?250}} \\
- **Insert a brass threaded rod** with a nut on the end into the 3D printed part. \\ {{https://remoteqth.com/img/wiki-wx-station2-55.jpg?250}} \\
- Push the threaded rod through the entire weather station and carefully **slide the 3D printed part number 2** onto the main board. \\ {{https://remoteqth.com/img/wiki-wx-station2-56.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-57.jpg?250}} \\
- **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. \\ {{https://remoteqth.com/img/wiki-wx-station2-58.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-59.jpg?250}} \\
- **Put** on the 3D printed **part number 10** and screw on the brass nut so that the screw does not protrude from the nut. \\ {{https://remoteqth.com/img/wiki-wx-station2-60.jpg?250}} \\
- **Put** on the 3d printed **part number 12** and insulate the joints with silicone sealant. \\ {{https://remoteqth.com/img/wiki-wx-station2-61.jpg?250}} \\
- **Gently tighten** the nut on the underside of the weather station. Attention, strong tighten can deform the plastic parts. \\ {{https://remoteqth.com/img/wiki-wx-station2-62.jpg?250}} \\
- **Press** the **cylindrical neodymium magnet** into the 3D printed part number 11 so that it is oriented **with the South field facing outwards.** \\ {{https://remoteqth.com/img/wiki-wx-station2-63.jpg?250}} \\
- **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. \\ {{https://remoteqth.com/img/wiki-wx-station2-64.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-65.jpg?250}} \\
- We **verify the correct function** of the cradle by tilting it, when the cradle always it flips over freely. \\ {{https://remoteqth.com/img/wiki-wx-station2-67.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-66.jpg?250}} \\
- **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. \\ {{https://remoteqth.com/img/wiki-wx-station2-69.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-68.jpg?250}} \\
- **Place the 3D printed part number 1** in the lower part and secure it with a brass nut. \\ {{https://remoteqth.com/img/wiki-wx-station2-70.jpg?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-71.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-72.jpg?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-73.png?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-74.jpg?250}} {{https://remoteqth.com/img/wiki-wx-station2-75.jpg?250}} \\
- **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. \\ {{https://remoteqth.com/img/wiki-wx-station2-76.jpg?250}} \\
- With the two straps, we **attach** the weather station to the mounting pipe. \\ {{https://remoteqth.com/img/wiki-wx-station2-77.jpg?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-78.jpg?250}} \\
- 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. \\ {{https://remoteqth.com/img/wiki-wx-station2-90.jpg?250}} \\
- Then close and **screw with a two M3** x 10mm screws \\ {{https://remoteqth.com/img/wiki-wx-station2-91.jpg?250}} \\
----
===== Connection using telnet and settings =====
==== How to connect ====
{{https://remoteqth.com/img/wiki-wx-station2-poe.png}}
==== Reading the access key ====
- You download the {{https://www.arduino.cc/en/Main/Software|Arduino IDE}}
- **Connect** the weather station **to the Ethernet, including the power supply via the POE module,** see the picture above
- **Connect** the weather station with the **USB-C** cable to the computer
- In the Arduino IDE menu, select **Tools/Port: your port**
- Select the menu **Tools/Serial monitor** (or press Ctrl+Shift+M)
- In the bottom sheet of the monitor, choose the speed of **115200 baud** and (CR)
- Place the cursor in the upper input line and **press Enter**
- The IP address and **access key** will be displayed, which you should copy and save safely. \\ {{https://remoteqth.com/img/wiki-wx-station2-key.png?400}}
==== Telnet connect ====
* Download and install [[https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html|PuTTY]]
* In menu Terminal preset CR/LF and line discipline by picture \\ {{https://remoteqth.com/img/wiki-ip-switch-esp32gateway-22.png?200}} \\
* In main menu Session select or set the following values \\ {{https://remoteqth.com/img/wiki-ip-switch-esp32gateway-23.png?200}} \\
* select **Telnet**
* port **23**
* write **IP address** (saved from [[#reading_the_access_key|Reading the access key]])
* Sessions may be saved for next time
* for connect press **Open**
* Login confirm with press y
* Now answer four times the question of what character is on random selected position, **in your key** (key saved from [[#reading_the_access_key|Reading the access key]]). Key formated in groups of ten - FOR EXAMPLEPosition 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 \\ {{https://remoteqth.com/img/wiki-wx-station2-telnet.png?400}}
* for **Logout** press **q** \\
==== Setup ====
Telnet's CLI (Command Line Interface) consists of three parts:
- WX station status
- **Network** interface information (IP, MAC address)
- **UTC** time read from the NTP server (indicates a functional connection to the Internet)
- **Uptime**
- **MQTT** borker IP:port/topic
- Firmware and PCB **revision**
- Sensors (raw and resulting sensor values)
- **RainPin** - analog status on the input pin and recalculated values
- **Wind direction** - bit value of parallel converter and output values
- **RpMPin** - currently read digital input value (1 = without magnet) and length of the last pulse
- + statistics for the last period and the maximum historically measured value with a time stamp
- **HTU21D** - sensor values (in square brackets with added Temperature calibration shift value)
- Calculated **dew point**
- **BMP280** - sensor values (pressure in square brackets converted to sea level)
- **DS18B20** - sensor value
- Menu \\ //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 **[[https://github.com/ok1hra/esp32-e-ink|GitHub]]** \\ {{https://remoteqth.com/img/wiki-wx-station2-19.jpg?250}}
----
===== Web interface =====
If you enter the IP address of your weather station in the web browser, it will be displayed
- **MQTT wall** - client connected to MQTT broker that displays received values every 5 minutes \\ {{https://remoteqth.com/img/wiki-wx-station2-mqtt.png?150}}
- The page header displays basic information and important links
- **APRS** (if active) - link to the APRS map, where you can view the annual history of values, link to view the WX chart \\ {{https://remoteqth.com/img/wiki-wx-station2-aprs.png?150}}
- **Upload FW** - a link to the web interface of the weather station intended for updating the firmware, by uploading a .bin file \\ {{https://remoteqth.com/img/wiki-wx-station2-ota.png?150}}
- **Releases** - link to GitHub for downloading the latest version of the firmware in .bin format
- **html preview** - a simple page showing values for the last 5 min cycle \\ {{https://remoteqth.com/img/wiki-wx-station2-wx.png?150}}
----
===== Firmware compilation =====
- Install [[https://www.arduino.cc/en/Main/Software|Arduino IDE]]
- Install ESP32 support from [[https://github.com/espressif/arduino-esp32|GitHub]]
- prefered via **[[https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md|board manager]]**
- Install [[https://www.arduino.cc/en/guide/libraries|Arduino libraries]]
- WiFi, rev 2.0.0
- EEPROM, rev 2.0.0
- Ethernet, rev 2.0.0
- ESPmDNS, rev 2.0.0
- ArduinoOTA, rev 2.0.0
- Update, rev 2.0.0
- AsyncTCP, rev 1.1.1
- ESPAsyncWebServer, rev 1.2.3
- FS, rev 2.0.0
- AsyncElegantOTA, rev 2.2.5
- PubSubClient, rev 2.8
- Wire, rev 2.0.0
- Adafruit_Unified_Senso, rev 1.1.2
- Adafruit_BMP280_Library, rev 2.5.0
- Adafruit_BusIO, rev 1.9.8
- SPI, rev 2.0.0
- Adafruit_HTU21DF_Library, rev 1.0.4
- SD_MMC, rev 2.0.0
- OneWire, rev 2.3.6
- DallasTemperature, rev 3.9.0
- the current list can be found in {{https://github.com/ok1hra/3D-print-WX-station/blob/master/wx.ino#L78|source code}}
- Download firmware from [[https://github.com/ok1hra/3D-print-WX-station|GitHub]]
- Select menu Tools/Board:"OLIMEX ESP32-POE"
- Connect
- USB-C between WX station and PC (Select menu Tools/Port/YOUR-CONNECTED-PORT)
- or Network ports \\ {{https://remoteqth.com/img/3d-wx-station-10.png?200}}
- Upload firmware
- 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 remoteqth.com.** 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 [[https://www.makeuseof.com/install-mqtt-server-node-red-raspberry-pi-home-automation/|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.