Building an Outdoor Weather Station with Raspberry Pi 2 and ADS‑WS1
At Bloominglabs, our recent acquisition of an ADS‑WS1 weather station—a serial‑output capable unit—prompted a project to bring the data online using a Raspberry Pi 2. The station captures wind direction, speed, rainfall, temperature, and humidity. The Pi, powered via PoE and housed in a waterproof enclosure on the mast, reads the serial stream and publishes the data over the network.
Step 1: Parts List
- 1) ADS‑WS1 weather station (any serial‑output station works)
- 2) Raspberry Pi (any model; we used Pi 2)
- 3) Serial‑to‑USB adapter (e.g., FTDI)
- 4) Serial cable with at least one female DB9 connector
- 5) Ethernet cable long enough to reach the station
- 6) 5V power supply, 1–2 A
- 7) Weather‑proof enclosure
- 8) (Optional) Ethernet surge suppressor
- 9) (Optional) Power‑Over‑Ethernet (PoE) injector/adapters
The ADS‑WS1 draws only 50 mA, so it can be powered directly from the Pi or from the same supply. For additional documentation, visit the Argent Data wiki.
Step 2: Install an OS on the Raspberry Pi 2
Any Raspberry Pi‑compatible OS works; we used Raspbian 7.1 on an 8 GB SD card. Follow the official installation guide to flash the image, insert the card, and power up. A local HDMI display and USB keyboard are handy for initial setup. Raspbian typically obtains an IP via DHCP, but for a pole‑mounted device we recommend a static address.
After boot, connect the USB‑to‑serial adapter. Raspbian will auto‑detect it as /dev/ttyUSB0. Verify with ls /dev/ttyUSB* or lsusb.
[email protected] ~ $ ls /dev/ttyUSB* /dev/ttyUSB0
[email protected] ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Configure a static IP by editing /etc/network/interfaces:
iface eth0 inet static address 192.168.x.x netmask 255.255.255.0 gateway 192.168.x.x
Install required packages:
sudo apt-get install apache2 wget minicom weewx
Download the helper script weather.sh for testing:
wget -O weather.sh "https://server1.nuge.com/~weather/software/weather-…"
If that URL fails, fetch the latest from here. Add the Pi user to the dialout group to access the serial port: sudo usermod -a -G dialout pi.
Step 3: Install and Configure weewx
Weewx polls the serial port, parses data from various weather stations, and serves a web interface for graphs. Edit /etc/weewx/weewx.conf to reflect your station’s details. The file is self‑documented; modify location, WEEWX_ROOT, and other settings as needed.
Enable automatic start on boot:
sudo update-rc.d apache2 defaults 99 2 sudo update-rc.d weewx defaults 99 2
Now the Pi will launch Apache and weewx whenever it powers on.
Step 4: Wiring the Serial Cable and Power
Only three data wires and two power wires are required. Use the DB9 pins 2 (TX), 3 (RX), and 5 (GND) to connect to the station’s serial header. Strip the outer sheath and the inner wires (¼″). Verify pinout with a multimeter.
Power the station with a 5 V supply—either the Pi’s 5 V output or a separate 5 V/12 V supply. Connect the positive to the “DC in” terminal and ground to the lower GND input.
For outdoor deployment, we employed PoE adapters: the Pi and the weather station share a single 5 V line. Protect the connections with shrink tubing and place them inside a weather‑tight NEMA 4 enclosure. If the Pi supplies the 5 V, you can remove the microUSB connector and route the power through the PoE splitter.
Step 5: Verify Serial Data Reception
Power the Pi and station. Launch minicom to confirm serial communication. If the ADS‑WS1 firmware requires flashing, refer to the official command guide. Once the station emits regular data, run ./weather.sh to verify correct parsing.
Step 6: Prepare for Outdoor Use
Encapsulate the electronics in a weather‑proof enclosure. For accurate temperature and humidity readings, consider installing a Stevenson screen—a ventilated, shaded box that shields sensors from direct solar radiation. A simple PVC NEMA 4 enclosure works for now, though it may introduce a 10–15 °F bias and prevent humidity measurement. Future upgrades will incorporate a proper Stevenson screen.
For more detailed guidance, see the Raspberry Pi 2 Weather Station reference.
Manufacturing process
- DIY Solar‑Powered Weather Station with Raspberry Pi
- Build a Raspberry Pi Weather Station that Emails Daily Weather Data
- Remote Weather Monitoring with Raspberry Pi 3 and PubNub
- Advanced Weather Station v2.0: Real‑Time Temperature, Pressure, Humidity & Altitude Monitoring
- Real‑Time Weather Monitoring with Arduino & ThingSpeak IoT
- Arduino Nano Weather Station: Sensor Kit & OLED Display
- Build a Reliable Arduino Weather Station with DHT Sensors
- TensorFlow-Powered IoT Weather Station Accurately Predicts Rainfall Intensity
- Build a Simple Weather Station with Arduino UNO, BMP280 Sensor & LCD
- Arduino Wireless Weather Station: DIY Portable Weather Monitoring Kit