Hello,
is it possible to use the WH1080 wind sensors (direction and speed) with a custom-built weather station? Is there any technical information available about these sensors, like wiring diagrams and interface instructions?
Welcome to the Cumulus Support forum.
Latest Cumulus MX V3 release 3.28.6 (build 3283) - 21 March 2024
Cumulus MX V4 beta test release 4.0.0 (build 4019) - 03 April 2024
Legacy Cumulus 1 release 1.9.4 (build 1099) - 28 November 2014
(a patch is available for 1.9.4 build 1099 that extends the date range of drop-down menus to 2030)
Download the Software (Cumulus MX / Cumulus 1 and other related items) from the Wiki
Latest Cumulus MX V3 release 3.28.6 (build 3283) - 21 March 2024
Cumulus MX V4 beta test release 4.0.0 (build 4019) - 03 April 2024
Legacy Cumulus 1 release 1.9.4 (build 1099) - 28 November 2014
(a patch is available for 1.9.4 build 1099 that extends the date range of drop-down menus to 2030)
Download the Software (Cumulus MX / Cumulus 1 and other related items) from the Wiki
Using WH1080 wind sensors with custom weather station
-
- Posts: 363
- Joined: Thu 04 Feb 2010 12:22 pm
- Weather Station: 1wire-Cumulus & Fine Offset
- Operating System: Windows 7
- Location: Whitehorse, Yukon Territory, Canada
Re: Using WH1080 wind sensors with custom weather station
Yes it's possible, and all the information is here on the forum. Start with the search button. We'll be happy to help if you have questions.
- Werk_AG
- Posts: 198
- Joined: Sun 13 Jan 2013 8:04 pm
- Weather Station: WeatherDuino 4Pro
- Operating System: Windows 7
- Location: Cercal CDV - Portugal
- Contact:
Re: Using WH1080 wind sensors with custom weather station
Yes, it´s possible
In this link you will find the datasheet you asked: WH1080 datasheet
At this page you can find a nice piece of code for reading this sensors with an Arduino:
Sparkfun Weather Station
I have used this info to made my custum-built weather station: WeatherDuino Pro2.
It is working since some months wihout any major problem.
I have not implemented or tested the code for the rain gauge, because I'm using another type of rain gauge.
Hope this help
In this link you will find the datasheet you asked: WH1080 datasheet
At this page you can find a nice piece of code for reading this sensors with an Arduino:
Sparkfun Weather Station
I have used this info to made my custum-built weather station: WeatherDuino Pro2.
It is working since some months wihout any major problem.
I have not implemented or tested the code for the rain gauge, because I'm using another type of rain gauge.
Hope this help
-
- Posts: 4
- Joined: Mon 11 Nov 2013 11:29 am
- Weather Station: custom
- Operating System: OS X
- Location: Slovenia
Re: Using WH1080 wind sensors with custom weather station
Thank you for your replies. It's great to see there are already existing solutions so I won't have to start from scratch.
-
- Posts: 4
- Joined: Mon 11 Nov 2013 11:29 am
- Weather Station: custom
- Operating System: OS X
- Location: Slovenia
Re: Using WH1080 wind sensors with custom weather station
I have received the sensors (both wind sensors and the rain gauge as well) this week and started working on them. I have used the code provided here to read data from the sensors with an arduino:
However the serial readings are always the same, even if I manually turn the sensors which should trigger interrupts and change the internal resistance of the wind vane:
Can you help me finding possible bugs in the code? I am only a beginner in coding for arduino.
Code: Select all
// Set up the inputs and the interrupts
#define ANEMOMETER_PIN 3
#define ANEMOMETER_INT 1
#define VANE_PWR 4
#define VANE_PIN A0
#define RAIN_GAUGE_PIN 2
#define RAIN_GAUGE_INT 0
void setup() {
Serial.begin(9600);
}
void setupWeatherInts()
{
pinMode(ANEMOMETER_PIN,INPUT);
digitalWrite(ANEMOMETER_PIN,HIGH); // Turn on the internal Pull Up Resistor
pinMode(RAIN_GAUGE_PIN,INPUT);
digitalWrite(RAIN_GAUGE_PIN,HIGH); // Turn on the internal Pull Up Resistor
pinMode(VANE_PWR,OUTPUT);
digitalWrite(VANE_PWR,LOW);
attachInterrupt(ANEMOMETER_INT,anemometerClick,FALLING);
attachInterrupt(RAIN_GAUGE_INT,rainGageClick,FALLING);
interrupts();
}
// ---------------------
// Wind speed (anemometer)
#define WIND_FACTOR 2.4
#define TEST_PAUSE 60000
volatile unsigned long anem_count=0;
volatile unsigned long anem_last=0;
volatile unsigned long anem_min=0xffffffff;
double getUnitWind()
{
unsigned long reading=anem_count;
anem_count=0;
return (WIND_FACTOR*reading)/(TEST_PAUSE/1000);
}
double getGust()
{
unsigned long reading=anem_min;
anem_min=0xffffffff;
double time=reading/1000000.0;
return (1/(reading/1000000.0))*WIND_FACTOR;
}
void anemometerClick()
{
long thisTime=micros()-anem_last;
anem_last=micros();
if(thisTime>500)
{
anem_count++;
if(thisTime<anem_min)
{
anem_min=thisTime;
}
}
}
// ---------------------
// Wind direction (vane)
static const int vaneValues[] PROGMEM={66,84,92,127,184,244,287,406,461,600,631,702,786,827,889,946};
static const int vaneDirections[] PROGMEM={1125,675,900,1575,1350,2025,1800,225,450,2475,2250,3375,0,2925,3150,2700};
double getWindVane()
{
analogReference(DEFAULT);
digitalWrite(VANE_PWR,HIGH);
delay(100);
for(int n=0;n<10;n++)
{
analogRead(VANE_PIN);
}
unsigned int reading=analogRead(VANE_PIN);
digitalWrite(VANE_PWR,LOW);
unsigned int lastDiff=2048;
for (int n=0;n<16;n++)
{
int diff=reading-pgm_read_word(&vaneValues[n]);
diff=abs(diff);
if(diff==0)
return pgm_read_word(&vaneDirections[n])/10.0;
if(diff>lastDiff)
{
return pgm_read_word(&vaneDirections[n-1])/10.0;
}
lastDiff=diff;
}
return pgm_read_word(&vaneDirections[15])/10.0;
}
// ---------------------
// Rain gauge
#define RAIN_FACTOR 0.2794
volatile unsigned long rain_count=0;
volatile unsigned long rain_last=0;
double getUnitRain()
{
unsigned long reading=rain_count;
rain_count=0;
double unit_rain=reading*RAIN_FACTOR;
return unit_rain;
}
void rainGageClick()
{
long thisTime=micros()-rain_last;
rain_last=micros();
if(thisTime>500)
{
rain_count++;
}
}
// ---------------------
// Main loop
void loop() {
Serial.println(getUnitWind());
Serial.println(getGust());
Serial.println(getWindVane());
Serial.println(getUnitRain());
Serial.println(" ");
delay(10000);
}
Code: Select all
0.0
0.0
270.0
0.0
- Werk_AG
- Posts: 198
- Joined: Sun 13 Jan 2013 8:04 pm
- Weather Station: WeatherDuino 4Pro
- Operating System: Windows 7
- Location: Cercal CDV - Portugal
- Contact:
Re: Using WH1080 wind sensors with custom weather station
After a quick look at your code, you need at least init your weather instruments once.
Try call void setupWeatherInts() on setup section.
Try call void setupWeatherInts() on setup section.
-
- Posts: 4
- Joined: Mon 11 Nov 2013 11:29 am
- Weather Station: custom
- Operating System: OS X
- Location: Slovenia
Re: Using WH1080 wind sensors with custom weather station
Yes, I forgot to write an update for this. It can be solved with movng everything in "setupWeatherInts" to "setup".