Weather Station

This is the forth generation weather station I built. For this build a decision was made to look at a more professional anemometer and wind direction instruments rather than using ones that I previously built. After doing some searching I found the OurWeather - Complete Weather Kit sold by SwitchDoc Labs. It is a complete kit that met most of my needs. When it arrived I was able to put the components together and had it running in about 20 minutes. The kit comes with a mini display that displays the data.

Looking at all documentation I found two potential issues that redirected my plans. Using the weather board that came with the kit I was supposed to be able to access the data stream by IP address of the board. I wrote a program to extract the data but ran into a problem after a few cycles when the weather board kept locking up. Reading the SwitchDocs forum I found that it was a common problem. The second issue was losing the Humidity reading. After a few minutes the Humidity sensor was displaying a NAN return.


Since my main goal was to read the data through a VB6 app, display the data and store it in a database, I needed to take a different approach. I purchased a new Arduino 2560 v3 board, an Ethernet shield and prototype board. The 2560 board would to most of the heavy work. Looking at the SwitchDoc Labs web site I found two boards that would work with the anemometer and wind direction instruments.

I purchased WeatherPiArdinuo V3 w/Grove (aka Weather Board) connectors and Grove/Pin Headers I2C 4 Channel Mux Extender/Expander Board. These two boards could interface the anemometer and wind direction to the Ardiuno with the multiplexor allowing additional I2C connections.

Another decision was made to go with hard wired Ethernet connections rather than wireless. The data transfer from the Ardunio boards would be through UPD. The location of my notebook running the VB6 app in the previous wireless build was not very reliable a hard wired connection was a must.

The photo below shows the layout of the components. I used a 12” x 12” x 6” electrical box. I constructed a mounting plate out of 3/32” ply wood so I could remove it for easy maintenance. Since the Arduino has limited connections for 5 volt and ground I made a custom header to provide the sensors with a central location for power. The Ardunio stack consists of the 2560 v3 board, the Ethernet shield and a custom prototype shield. I added prewired headers for the sound, light and vibration sensors.

The temperature/barometric pressure/humidity sensor that came with the kit had issues so I replaced it with an new sensor. The sensor was connected to the 4 Channel Mux board along with the LCD display.

An LCD display was added to the main case to display the sensor data.


Radar System

I have been playing with the HB100 Microwave Sensor Module for some time. I had the idea to see it it would pick up anything. After using it on the previous build with various results I decided to up the design with a fully 360 degree sensor. The design uses a slip ring that has 6 wires. Using a stepper motor with a 1 inch diameter gear it is connected to the slip ring with a matching gear. I needed for it to always start in the north position so a Hall Effects sensor was added. When power is applied to the Arduino controlling the system the system rotates until the Hall Effects sensor is triggered by rare earth magnets mounted in the slip ring shaft After a delay the program starts rotating in a set number of degrees. The position and radar signal is sent to the VB6 app though UDP for each degree moved.

Radar Operation Video

I am still playing with the amplifier and interpolation of the data so it is still a work in progress.


One issue that could have been a show stopper was the power source. For reasons that no one could explain the Arduino boards would not work with an external power supply. It would only work from the USB port connected to a computer. I have a 70 amp 12 volt power supply that even had issues powering the board. There was no reason for this since the power consumption for both systems was very low. I didn’t want to have to run two USB lines from my notebook to each of the Ardunio boards from inside the house. I took a chance and ordered a AmazonBasics 3-Outlet Surge Protector with 2 USB Ports to see if that would be able to power the systems. It worked. To power the radar system, which has its Ardunio board on top of its mast, I purchased a 50 foot HDE USB Extension Cable. I wasn’t sure if it would work but it did as well.



The Arduino code for the weather station was based on the SwitchDocs example code. I started out by stripping out the code that I didn’t need. Code was added to support the new T/BP/H sensor, LCD Display, sound, light and vibration. The 4 Channel Mux library code was added to detect if there are I2C sensors present. I will post the code after I do a little more clean up work.

The data was converted to English units and statements were added to send the data via UDP across the network specific port and IP address. The code speccifies a a specific local and remote port for the data to be streamed.

The Arduino code for the radar system was a bit more complicated. A standard stepper motor with a 1.8 degree per step was used. For a 360 degree rotation that should have converted to 200 steps per revolution. When the stepper motor code was run it would only travel about 1/4 of a revolution. I was using gearing to drive the rotation but the gearing on both the stepper motor and slip ring shaft were both 1” pitch diameter therefor canceling each other out.


Reworking the calculations and some experimenting with some code changes I was able to come up with the proper settings. I am still not sure if the error was in the stepper motor library or if I was missing some else. With extended runs of the rotation I did notice that each 360 degree rotation was not as precise as it should be. It was falling a bit short of a full 360 degrees. When each rotation was completed, code was added to reset the north position and add a delay of 2 seconds before starting the rotation again. This guaranteed that the rotation was repeatable.

The current position and radar signal was sent via UDP across the network for a specific port and IP address. The code speccifies a specific local and remote port for the data to be streamed.

I used VB6 to handle the data coming in from the Arduino 2560. It has excellent and easy way of receiving UDP data. Two Winsock components were used. One which handles the data input stream from the weather station and one for the radar system. The Winsock ports listens for any data coming in on the assigned ports. If new data is received the data is converted to seperate variables. Data from the weather station is used to calculate additional values such as dew point, actual vapor pressure, saturated vapor pressure etc. The data is stored in an Access database once each minute. The main graph is also updated once per minute. The wind speed, wind gust, wind direction and radar are updated in real time.


A web page takes the data from both the weather and radar system using Ajax calls to update the screen with the current data. The web page will eventually be accesable to the general public once everyting is completed


Parts List

OurWeather - Complete Weather Kit

OurWeather is a connected weather station containing 7 different sensors that will teach about electronics, software and the weather. It contains all the sensors and wires to make a fully functional, WiFi weather station. No software programming is required, it works right out of the box. However, if you want to change the way OurWeather works, add your own software or do something entirely different, we have the Open Source software available. And what is one of the coolest features of OurWeather? Building the kit requires NO SOLDERING. It is all plug and play based building, with a full step-by-step photograph based instruction manual. It is a safe and educational way to learn about weather, electronics and science topics. You can watch our successful kickstarter video here: Now supports Blynk!
WeatherPiArdinuo V3 w/Grove (aka Weather Board) connectors - Interface board for Weather Instruments for Raspberry Pi/Arudino

WeatherPiArduino is an assembled board (includes BMP280 Barometer and DS3231 RTC) designed to interface Raspberry Pi's and Arduinos with the SwitchDoc Labs WeatherRack, the SparkFun Weather Meters and the Argent Data Systems Weather Sensors. It will connect an Anemometer, Wind Vane and Rain Bucket to your computer. It also supports a variety of I2C additional Sensors. Includes Grove Connectors. Also known as the Weather Board
Grove/Pin Headers I2C 4 Channel Mux Extender/Expander Board for Arduino and Raspberry Pi

The Grove I2C 4 Channel Mux Breakout Board is a TCA9545A based quad bidirectional I2C Expander and Multiplexor controlled via the I2C bus with GROVE connectors. The SCL/SDA controlling fans out to four downstream channels. It works for both the Arduino and Raspberry Pi. At SwitchDoc Labs, we love data. And we love I2C devices. We like to gather the data using lots of I2C devices on our computers and projects. We are always running into conflicts with addressing on the I2C device. Since there are no standards, sometimes multiple devices will have the same address, such as 0x70 and you are just out of luck in running both of them on the same I2C bus without a lot of jimmy rigging. You can have any combination of 3.3V and 5V I2C busses on this board. What is the solution for this? It’s an I2C controlled 4 I2C bus multiplexer! We have both Grove Connectors and traditional pin headers. Grove connectors make it easy to use with no soldering! SwitchDoc Labs is building all future products with Grove connectors and there are many manufacturers of Grove sensors. And we have the software drivers written for it for the Arduino and the Raspberry Pi on With the software and board, you are ready to go!
KEYESTUDIO Mega 2560 Board for Arduino +USB Cable

Keyestudio Mega (core to ATmega2560) is a development board (used with16MHz crystal oscillator ) of microcontroller. There are 54 I/O (input/output ) digital interfaces (of which 15 are PWM outputs), 16 analog inputs and 4 UART (hardwareserial ports). With its bootloader, program can be downloaded directly with USB and you don’t need to use other external programmer. It can be powered directly by USB, or AC-to-DC adapter and battery.
KEYESTUDIO W5100 Ethernet Shield for Arduino Mega 2560 UNO R3 Duemilanove, Easily Connects Arduino to Internet

Just plug this module onto your Arduino board, connect it to your network with an RJ45 cable (not included) and follow a few simple instructions to start controlling your world through the internet.
KEYESTUDIO MEGA Protoshield V3 for Arduino Mega 2560 with Mini Breadboard, and Easy to Use

Keyestudio ProtoShield is particularly designed for the MEGA 2560. It makes it easy for you to design custom circuits and solder electronics directly on it. For convenient use, there is a large prototyping space of both connected and unconnected spaced through-holes on the shield. There is also a soldering position reserved for SMD chip on the protoshield. You can easily solder SMD ICs on the prototyping area to test them with your Arduino board. It also extends out a row of power and ground through-holes, giving enough port resources. You can even stick a tiny 170-holes breadboard (included) on the prototyping area. You can weld elements on the shield directly or connect circuits with tiny breadboard.
For Arduino UNO R3 MEGA 2560, Longruner 20x4 LCD Display Module IIC/I2C/TWI Serial 2004 with Screen Panel Expansion Board White on Blue, 4 pin Jump Cables Wire Included LK51

Practical: LCD display module based on the popular HD44780 controller, works great with Arduino and other micro-controllers.
High display function: 20 characters display in one row, 4 rows can display 80 characters.
Convenient: Tutorials/instructions can be free by email.
Extra gifts: 4 pin male to female jump cables,4 Fixed LCD Panel nylon columns and 4 screws.
Specification: working voltage: 5V DC; Dimension: 60×99x22 mm. IIC/I2C interface; only takes two I/O ports. I2C Address: 0x27 or 0x3F.
Solu HB100 Microwave Sensor Module 10.525GHz Doppler Radar Motion Detector Arduino//HB100 microwave Doppler Wireless Radar Detectors Velocity Sensor M

HB100 microwave modules use the Doppler radar (Doppler Radar) design principles of the microwave moving object detector
Qunqi SW-420 Motion Sensor Module for Arduino EK125

Used to trigger the effect of various vibration, theft alarm, intelligent car, earthquake alarm, motorcycle alarm, etc
Waveshare BME280 Environmental Sensor Sensing Environmental Temperature Humidity and barometric Pressure for Raspberry Pi Arduino STM32 I2C and SPI Interfaces

A tiny sensor breakout with BME280 onboard, sensing environmental temperature, humidity, and barometric pressure. It supports both I2C and SPI interfaces, also is compatible with 3.3V/5V voltage levels.

Due to its ultra small form factor, low power consumption, high precision with stability, the BME280 Environmental Sensor is suited for applications such as environment monitoring, weather forecast, altimeter, and IoT projects, and so on.
Sound Detection Sensor Module Sensor Intelligent Vehicle Compatible With Arduino by Atomic Market

Main chip:LM393, Electret condenser microphone
Working voltage: DC 4-6V
The Maximum induction distance is 0.5M
High Quality Atomic Market Product
WINGONEER 5Pcs Hall Effect KY-003 Magnetic Sensor Module DC 5V For Arduino PIC AVR Smart Cars

Hall Switch Integrated Circuit Using hall Effect Principle
USES The Semiconductor Integrated Technology Manufacturing Magnetic Susceptibility of the Circuit
Its Input For the Magnetic Induction Intensity, the Output is a Digital Voltage Signal
KOOKYE 2 x 28BYJ-48 DC 5V Stepper Motor + ULN2003 Driver Test Module Board for Arduino

2pcs Drive Module Board ULN2003
2pcs 28BYJ-48 Stepper motor
AmazonBasics 3-Outlet Surge Protector with 2 USB Ports

Keep everyday electronic devices safely plugged in and fully charged with the AmazonBasics 3-Outlet Surge Protector Wall Tap with 2 USB Ports. The wall tap shields plugged-in devices from power spikes caused by storms and other unexpected surges, which can lead to damage and data loss. The wall tap makes a smart choice for smartphones, personal computers, modems, routers, printers, faxes, stereos, DVD players, and other similar or sensitive electronics.
HDE USB Extension Cable (USB 2.0 Type A Male to Female) High Speed Data and Power Extension Cable with Active Repeater (50 ft)

High-speed USB 2.0 extension cable with an active repeater is the best solution for your wired peripheral needs. With this cable, you can easily extend the working distance of your webcam, freely move your network adapter to a better location for your signal, connect your computer to a printer without needing proximity, and many other uses! Cable features a Male A connector on one end that plugs into your computer and a Female A connector on the other that connects to the cable you need extended. If your device requires 250mA or more, it will require its own power supply or powered USB 2.0 hub that gets connected to extension cable.
Mini Capsule Slip Ring 300Rpm 6-way 22mm 2A 360Rotation AWG28 by DHLink

Rotating contact surface for the gold - gold, precious metal contacts to ensure long working life
360 ° rotation may be smooth transmission of analog and digital signals compatible with the data bus protocol
Smooth operation, small size, low torque, low noise;