-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Anenometer only #8
Comments
H i Paul,
Apologies for the delay in answering this. I am going to assume you are
trying to use ArduinoWeatherOS
<https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use
multiple sensors and and to block any reporting until all the sensors
have been "heard" and sensible data collected from them. If you are only
after the wind data you will be able to cut a lot out of the program.
Check the lines in Red here, they do the blocking until all 3 main
sensors have been heard.
// Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext
temp, Int Temp, Int Pressure, Int Humidity
intHumi = (double)dht.readHumidity(); //DHT22 readings %Humidity
intTemp = (double)bmp.readTemperature(); //internal temperature
intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar
*//leave this check at 7 until the other readings are stabilized**
** if ((scan&7)==7) { //scan==15 means all 4 readings now
have a valid value, ready for output on Serial**
* //Battery/Signal status, OR in the the four status values for the
signal connections.
logTemp ;
if (logTemp>40){
batStat = batStat | 1;
}
logWind ;
if (logWind>40){
batStat = batStat | 2;
}
logRain ;
if (logRain>40){
batStat = batStat | 4;
}
logUV ;
if (logUV>40){
batStat = batStat | 8;
}
logExp ;
if (logExp>40){
batStat = batStat | 16;
}
//reset the batStat to 0 every 24hours
aday ;
if (aday>1440){
batStat=0;
aday=0;
}
// Order: Battery Status, Quadrant, Wind Gust, Rainfall,
Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar Power,
Lightning, UV Radiation
Serial.print(batStat,DEC); //Send out the number to indicate
if a sensor is not transmitting for maore than 20 mins. Low Battery or
other damage.
Serial.print(",");
Serial.print(quadrant); //0-15 in 22.5 degrees steps clockwise
Serial.print(",");
Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not
average windspeed (graphing over 10 samples gives Average)
Serial.print(",");
gustWindspeed = avWindspeed; //reset gust to average, then take
the larger next reading
Serial.print(rainTotal, 1); //currently considered to checked
for a good calibration to mm
Serial.print(",");
Serial.print(temperature, 2); // OS Temperature Centigrade
Serial.print(",");
Serial.print(intTemp, 2); //BMP085 temperature (used for
compensation reading) Centigrade
Serial.print(",");
Serial.print(intPres, 2); //BMP085 pressure reading milli-bars
Serial.print(",");
Serial.print(intHumi); //Digital DHT22 seems better than
the OS in Temp/Hum sensor % relative
Serial.print(",");
Serial.print(intSolar,DEC); //A reading from experimental
Solar Power sensor
Serial.print(",");
Serial.print(intLightning,DEC); //A reading from the nos of
Lightning Strikes
Serial.print(",");
Serial.print(intUV, DEC); //UV Sensor
Serial.println();
//Indicate the transmission of this one second data with a white
light set up R B G!!
digitalWrite(RedPin, 0); //White, all colours on, data has
been logged to the Server
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 0);
*}*
}
If you remove that IF clause then it should at least begin reporting
your wind data and just the initialising defaults for the other sensors.
Once you have that working you can owrk backwards to trim the program
back to what you need for your project.
Thank you for taking an interest in my project and communicating with me
about it.
Best wishes,
Rob
On 8/6/20 6:34 pm, pdbayes wrote:
Hi
Excellent well documented project. I only have the anenometer and want
to capture the data from that. I cannot seem to get any serial data
from it using your code except for the initial output. Were would I
need to remove code to only collect data from the anenometer.
Thanks
Paul
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#8>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A>.
--
*Rob Ward*
Lake Tyers Beach, 3909
Lake Tyers Beach Website <http://www.laketyersbeach.net.au>
Ubuntu Mate - A great OS <https://ubuntu-mate.org/>
|
Hi Rob
Thanks for getting back to me. I tried removing the If statement but I am
not having much success. I put in a load of debugging and thought I could
see 5 byte packets from the anemometer, but nothing ever gets analysed and
output.
I am now running your auto debug code to see what I get. I'll share a dump
of the output later to see if you can make any sense of it.
I am using an Arduino uno and an RXB6 receiver.
Thanks again for all the work you have put in to this.
Paul
…On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***> wrote:
H i Paul,
Apologies for the delay in answering this. I am going to assume you are
trying to use ArduinoWeatherOS
<https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use
multiple sensors and and to block any reporting until all the sensors
have been "heard" and sensible data collected from them. If you are only
after the wind data you will be able to cut a lot out of the program.
Check the lines in Red here, they do the blocking until all 3 main
sensors have been heard.
// Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext
temp, Int Temp, Int Pressure, Int Humidity
intHumi = (double)dht.readHumidity(); //DHT22 readings %Humidity
intTemp = (double)bmp.readTemperature(); //internal temperature
intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar
*//leave this check at 7 until the other readings are stabilized**
** if ((scan&7)==7) { //scan==15 means all 4 readings now
have a valid value, ready for output on Serial**
* //Battery/Signal status, OR in the the four status values for the
signal connections.
logTemp ;
if (logTemp>40){
batStat = batStat | 1;
}
logWind ;
if (logWind>40){
batStat = batStat | 2;
}
logRain ;
if (logRain>40){
batStat = batStat | 4;
}
logUV ;
if (logUV>40){
batStat = batStat | 8;
}
logExp ;
if (logExp>40){
batStat = batStat | 16;
}
//reset the batStat to 0 every 24hours
aday ;
if (aday>1440){
batStat=0;
aday=0;
}
// Order: Battery Status, Quadrant, Wind Gust, Rainfall,
Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar Power,
Lightning, UV Radiation
Serial.print(batStat,DEC); //Send out the number to indicate
if a sensor is not transmitting for maore than 20 mins. Low Battery or
other damage.
Serial.print(",");
Serial.print(quadrant); //0-15 in 22.5 degrees steps clockwise
Serial.print(",");
Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not
average windspeed (graphing over 10 samples gives Average)
Serial.print(",");
gustWindspeed = avWindspeed; //reset gust to average, then take
the larger next reading
Serial.print(rainTotal, 1); //currently considered to checked
for a good calibration to mm
Serial.print(",");
Serial.print(temperature, 2); // OS Temperature Centigrade
Serial.print(",");
Serial.print(intTemp, 2); //BMP085 temperature (used for
compensation reading) Centigrade
Serial.print(",");
Serial.print(intPres, 2); //BMP085 pressure reading milli-bars
Serial.print(",");
Serial.print(intHumi); //Digital DHT22 seems better than
the OS in Temp/Hum sensor % relative
Serial.print(",");
Serial.print(intSolar,DEC); //A reading from experimental
Solar Power sensor
Serial.print(",");
Serial.print(intLightning,DEC); //A reading from the nos of
Lightning Strikes
Serial.print(",");
Serial.print(intUV, DEC); //UV Sensor
Serial.println();
//Indicate the transmission of this one second data with a white
light set up R B G!!
digitalWrite(RedPin, 0); //White, all colours on, data has
been logged to the Server
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 0);
*}*
}
If you remove that IF clause then it should at least begin reporting
your wind data and just the initialising defaults for the other sensors.
Once you have that working you can owrk backwards to trim the program
back to what you need for your project.
Thank you for taking an interest in my project and communicating with me
about it.
Best wishes,
Rob
On 8/6/20 6:34 pm, pdbayes wrote:
>
> Hi
>
> Excellent well documented project. I only have the anenometer and want
> to capture the data from that. I cannot seem to get any serial data
> from it using your code except for the initial output. Were would I
> need to remove code to only collect data from the anenometer.
>
> Thanks
>
> Paul
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <#8>, or
> unsubscribe
> <
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>.
>
--
*Rob Ward*
Lake Tyers Beach, 3909
Lake Tyers Beach Website <http://www.laketyersbeach.net.au>
Ubuntu Mate - A great OS <https://ubuntu-mate.org/>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A>
.
|
i think I also have an issue that we have 433mhz oil tank level sensors. If
the signal from them is strong then the AGC is doing to crank down the
sensitivity and miss the Oregon bursts. Not sure how to deal with that.
…On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***> wrote:
H i Paul,
Apologies for the delay in answering this. I am going to assume you are
trying to use ArduinoWeatherOS
<https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use
multiple sensors and and to block any reporting until all the sensors
have been "heard" and sensible data collected from them. If you are only
after the wind data you will be able to cut a lot out of the program.
Check the lines in Red here, they do the blocking until all 3 main
sensors have been heard.
// Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext
temp, Int Temp, Int Pressure, Int Humidity
intHumi = (double)dht.readHumidity(); //DHT22 readings %Humidity
intTemp = (double)bmp.readTemperature(); //internal temperature
intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar
*//leave this check at 7 until the other readings are stabilized**
** if ((scan&7)==7) { //scan==15 means all 4 readings now
have a valid value, ready for output on Serial**
* //Battery/Signal status, OR in the the four status values for the
signal connections.
logTemp ;
if (logTemp>40){
batStat = batStat | 1;
}
logWind ;
if (logWind>40){
batStat = batStat | 2;
}
logRain ;
if (logRain>40){
batStat = batStat | 4;
}
logUV ;
if (logUV>40){
batStat = batStat | 8;
}
logExp ;
if (logExp>40){
batStat = batStat | 16;
}
//reset the batStat to 0 every 24hours
aday ;
if (aday>1440){
batStat=0;
aday=0;
}
// Order: Battery Status, Quadrant, Wind Gust, Rainfall,
Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar Power,
Lightning, UV Radiation
Serial.print(batStat,DEC); //Send out the number to indicate
if a sensor is not transmitting for maore than 20 mins. Low Battery or
other damage.
Serial.print(",");
Serial.print(quadrant); //0-15 in 22.5 degrees steps clockwise
Serial.print(",");
Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not
average windspeed (graphing over 10 samples gives Average)
Serial.print(",");
gustWindspeed = avWindspeed; //reset gust to average, then take
the larger next reading
Serial.print(rainTotal, 1); //currently considered to checked
for a good calibration to mm
Serial.print(",");
Serial.print(temperature, 2); // OS Temperature Centigrade
Serial.print(",");
Serial.print(intTemp, 2); //BMP085 temperature (used for
compensation reading) Centigrade
Serial.print(",");
Serial.print(intPres, 2); //BMP085 pressure reading milli-bars
Serial.print(",");
Serial.print(intHumi); //Digital DHT22 seems better than
the OS in Temp/Hum sensor % relative
Serial.print(",");
Serial.print(intSolar,DEC); //A reading from experimental
Solar Power sensor
Serial.print(",");
Serial.print(intLightning,DEC); //A reading from the nos of
Lightning Strikes
Serial.print(",");
Serial.print(intUV, DEC); //UV Sensor
Serial.println();
//Indicate the transmission of this one second data with a white
light set up R B G!!
digitalWrite(RedPin, 0); //White, all colours on, data has
been logged to the Server
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 0);
*}*
}
If you remove that IF clause then it should at least begin reporting
your wind data and just the initialising defaults for the other sensors.
Once you have that working you can owrk backwards to trim the program
back to what you need for your project.
Thank you for taking an interest in my project and communicating with me
about it.
Best wishes,
Rob
On 8/6/20 6:34 pm, pdbayes wrote:
>
> Hi
>
> Excellent well documented project. I only have the anenometer and want
> to capture the data from that. I cannot seem to get any serial data
> from it using your code except for the initial output. Were would I
> need to remove code to only collect data from the anenometer.
>
> Thanks
>
> Paul
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <#8>, or
> unsubscribe
> <
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>.
>
--
*Rob Ward*
Lake Tyers Beach, 3909
Lake Tyers Beach Website <http://www.laketyersbeach.net.au>
Ubuntu Mate - A great OS <https://ubuntu-mate.org/>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A>
.
|
The wind sensor repeats about every 14 seconds, so it should be able to get at least one burst in every now and then.
Are you sure your receiver is wired up ok? If you put an LED 220ohm resistor on the Tx output, and press reset on the wind sensor it should show z distinct burst of signal on the Rx straight away. Quite a few people who gave contacted me have found their Rx is the fault. I looked up your Rx and it looks very good quality. Maybe even your antenna needs checking, a simple whip of 170mm hook up wire is ok, especially at small distances.
Legally 433Mhz signals should only broadcast intermittent bursts. So the tank system should not swamp your Rx continually.
Rob
Cheers, RobW
…On 12 June 2020 7:07:44 pm AEST, pdbayes ***@***.***> wrote:
i think I also have an issue that we have 433mhz oil tank level
sensors. If>
the signal from them is strong then the AGC is doing to crank down the>
sensitivity and miss the Oregon bursts. Not sure how to deal with
that.>
>
On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***>
wrote:>
>
> H i Paul,>
>>
> Apologies for the delay in answering this. I am going to assume you
are>
> trying to use ArduinoWeatherOS>
> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use>
> multiple sensors and and to block any reporting until all the
sensors>
> have been "heard" and sensible data collected from them. If you are
only>
> after the wind data you will be able to cut a lot out of the
program.>
> Check the lines in Red here, they do the blocking until all 3 main>
> sensors have been heard.>
>>
> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext>
> temp, Int Temp, Int Pressure, Int Humidity>
> intHumi = (double)dht.readHumidity(); //DHT22 readings
%Humidity>
> intTemp = (double)bmp.readTemperature(); //internal temperature>
> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar>
> *//leave this check at 7 until the other readings are stabilized**>
> ** if ((scan&7)==7) { //scan==15 means all 4 readings
now>
> have a valid value, ready for output on Serial**>
> * //Battery/Signal status, OR in the the four status values for
the>
> signal connections.>
> logTemp ;>
> if (logTemp>40){>
> batStat = batStat | 1;>
> }>
> logWind ;>
> if (logWind>40){>
> batStat = batStat | 2;>
> }>
> logRain ;>
> if (logRain>40){>
> batStat = batStat | 4;>
> }>
> logUV ;>
> if (logUV>40){>
> batStat = batStat | 8;>
> }>
> logExp ;>
> if (logExp>40){>
> batStat = batStat | 16;>
> }>
> //reset the batStat to 0 every 24hours>
> aday ;>
> if (aday>1440){>
> batStat=0;>
> aday=0;>
> }>
> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>
> Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar
Power,>
> Lightning, UV Radiation>
> Serial.print(batStat,DEC); //Send out the number to
indicate>
> if a sensor is not transmitting for maore than 20 mins. Low Battery
or>
> other damage.>
> Serial.print(",");>
> Serial.print(quadrant); //0-15 in 22.5 degrees steps
clockwise>
> Serial.print(",");>
> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>
> average windspeed (graphing over 10 samples gives Average)>
> Serial.print(",");>
> gustWindspeed = avWindspeed; //reset gust to average, then
take>
> the larger next reading>
> Serial.print(rainTotal, 1); //currently considered to
checked>
> for a good calibration to mm>
> Serial.print(",");>
> Serial.print(temperature, 2); // OS Temperature Centigrade>
> Serial.print(",");>
> Serial.print(intTemp, 2); //BMP085 temperature (used for>
> compensation reading) Centigrade>
> Serial.print(",");>
> Serial.print(intPres, 2); //BMP085 pressure reading
milli-bars>
> Serial.print(",");>
> Serial.print(intHumi); //Digital DHT22 seems better
than>
> the OS in Temp/Hum sensor % relative>
> Serial.print(",");>
> Serial.print(intSolar,DEC); //A reading from experimental>
> Solar Power sensor>
> Serial.print(",");>
> Serial.print(intLightning,DEC); //A reading from the nos
of>
> Lightning Strikes>
> Serial.print(",");>
> Serial.print(intUV, DEC); //UV Sensor>
> Serial.println();>
>>
> //Indicate the transmission of this one second data with a white>
> light set up R B G!!>
> digitalWrite(RedPin, 0); //White, all colours on, data
has>
> been logged to the Server>
> digitalWrite(GrePin, 0);>
> digitalWrite(BluPin, 0);>
> *}*>
> }>
>>
> If you remove that IF clause then it should at least begin reporting>
> your wind data and just the initialising defaults for the other
sensors.>
>>
> Once you have that working you can owrk backwards to trim the
program>
> back to what you need for your project.>
>>
> Thank you for taking an interest in my project and communicating with
me>
> about it.>
>>
> Best wishes,>
>>
> Rob>
>>
> On 8/6/20 6:34 pm, pdbayes wrote:>
> >>
> > Hi>
> >>
> > Excellent well documented project. I only have the anenometer and
want>
> > to capture the data from that. I cannot seem to get any serial
data>
> > from it using your code except for the initial output. Were would
I>
> > need to remove code to only collect data from the anenometer.>
> >>
> > Thanks>
> >>
> > Paul>
> >>
> > —>
> > You are receiving this because you are subscribed to this thread.>
> > Reply to this email directly, view it on GitHub>
> > <#8>, or>
> > unsubscribe>
> > <>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A>
> >.>
> >>
> -->
>>
> *Rob Ward*>
> Lake Tyers Beach, 3909>
> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>
> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>
>>
> —>
> You are receiving this because you authored the thread.>
> Reply to this email directly, view it on GitHub>
>
<#8 (comment)>,>
> or unsubscribe>
>
<https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A>>
> .>
>>
>
>
-- >
You are receiving this because you commented.>
Reply to this email directly or view it on GitHub:>
#8 (comment)
|
Thanks again
I'm sure it is recieving data from somewhere as I do get consistent 5byte
blobs of data. I have found the info for decoding the depth sensor so I can
see if I am picking that up. Might be useful to have anyway. I get an I'd
of 1985 a lot. I thought the anenometer was either 1995 or 1994?
I can send a dump from the debug if you have time to take a look.
…On Fri, 12 Jun 2020, 11:29 Rob Ward, ***@***.***> wrote:
The wind sensor repeats about every 14 seconds, so it should be able to
get at least one burst in every now and then.
Are you sure your receiver is wired up ok? If you put an LED 220ohm
resistor on the Tx output, and press reset on the wind sensor it should
show z distinct burst of signal on the Rx straight away. Quite a few people
who gave contacted me have found their Rx is the fault. I looked up your Rx
and it looks very good quality. Maybe even your antenna needs checking, a
simple whip of 170mm hook up wire is ok, especially at small distances.
Legally 433Mhz signals should only broadcast intermittent bursts. So the
tank system should not swamp your Rx continually.
Rob
Cheers, RobW
On 12 June 2020 7:07:44 pm AEST, pdbayes ***@***.***> wrote:
>i think I also have an issue that we have 433mhz oil tank level
>sensors. If>
>the signal from them is strong then the AGC is doing to crank down the>
>sensitivity and miss the Oregon bursts. Not sure how to deal with
>that.>
>>
>On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***>
>wrote:>
>>
>> H i Paul,>
>>>
>> Apologies for the delay in answering this. I am going to assume you
>are>
>> trying to use ArduinoWeatherOS>
>> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use>
>> multiple sensors and and to block any reporting until all the
>sensors>
>> have been "heard" and sensible data collected from them. If you are
>only>
>> after the wind data you will be able to cut a lot out of the
>program.>
>> Check the lines in Red here, they do the blocking until all 3 main>
>> sensors have been heard.>
>>>
>> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext>
>> temp, Int Temp, Int Pressure, Int Humidity>
>> intHumi = (double)dht.readHumidity(); //DHT22 readings
>%Humidity>
>> intTemp = (double)bmp.readTemperature(); //internal temperature>
>> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar>
>> *//leave this check at 7 until the other readings are stabilized**>
>> ** if ((scan&7)==7) { //scan==15 means all 4 readings
>now>
>> have a valid value, ready for output on Serial**>
>> * //Battery/Signal status, OR in the the four status values for
>the>
>> signal connections.>
>> logTemp ;>
>> if (logTemp>40){>
>> batStat = batStat | 1;>
>> }>
>> logWind ;>
>> if (logWind>40){>
>> batStat = batStat | 2;>
>> }>
>> logRain ;>
>> if (logRain>40){>
>> batStat = batStat | 4;>
>> }>
>> logUV ;>
>> if (logUV>40){>
>> batStat = batStat | 8;>
>> }>
>> logExp ;>
>> if (logExp>40){>
>> batStat = batStat | 16;>
>> }>
>> //reset the batStat to 0 every 24hours>
>> aday ;>
>> if (aday>1440){>
>> batStat=0;>
>> aday=0;>
>> }>
>> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>
>> Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar
>Power,>
>> Lightning, UV Radiation>
>> Serial.print(batStat,DEC); //Send out the number to
>indicate>
>> if a sensor is not transmitting for maore than 20 mins. Low Battery
>or>
>> other damage.>
>> Serial.print(",");>
>> Serial.print(quadrant); //0-15 in 22.5 degrees steps
>clockwise>
>> Serial.print(",");>
>> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>
>> average windspeed (graphing over 10 samples gives Average)>
>> Serial.print(",");>
>> gustWindspeed = avWindspeed; //reset gust to average, then
>take>
>> the larger next reading>
>> Serial.print(rainTotal, 1); //currently considered to
>checked>
>> for a good calibration to mm>
>> Serial.print(",");>
>> Serial.print(temperature, 2); // OS Temperature Centigrade>
>> Serial.print(",");>
>> Serial.print(intTemp, 2); //BMP085 temperature (used for>
>> compensation reading) Centigrade>
>> Serial.print(",");>
>> Serial.print(intPres, 2); //BMP085 pressure reading
>milli-bars>
>> Serial.print(",");>
>> Serial.print(intHumi); //Digital DHT22 seems better
>than>
>> the OS in Temp/Hum sensor % relative>
>> Serial.print(",");>
>> Serial.print(intSolar,DEC); //A reading from experimental>
>> Solar Power sensor>
>> Serial.print(",");>
>> Serial.print(intLightning,DEC); //A reading from the nos
>of>
>> Lightning Strikes>
>> Serial.print(",");>
>> Serial.print(intUV, DEC); //UV Sensor>
>> Serial.println();>
>>>
>> //Indicate the transmission of this one second data with a white>
>> light set up R B G!!>
>> digitalWrite(RedPin, 0); //White, all colours on, data
>has>
>> been logged to the Server>
>> digitalWrite(GrePin, 0);>
>> digitalWrite(BluPin, 0);>
>> *}*>
>> }>
>>>
>> If you remove that IF clause then it should at least begin reporting>
>> your wind data and just the initialising defaults for the other
>sensors.>
>>>
>> Once you have that working you can owrk backwards to trim the
>program>
>> back to what you need for your project.>
>>>
>> Thank you for taking an interest in my project and communicating with
>me>
>> about it.>
>>>
>> Best wishes,>
>>>
>> Rob>
>>>
>> On 8/6/20 6:34 pm, pdbayes wrote:>
>> >>
>> > Hi>
>> >>
>> > Excellent well documented project. I only have the anenometer and
>want>
>> > to capture the data from that. I cannot seem to get any serial
>data>
>> > from it using your code except for the initial output. Were would
>I>
>> > need to remove code to only collect data from the anenometer.>
>> >>
>> > Thanks>
>> >>
>> > Paul>
>> >>
>> > —>
>> > You are receiving this because you are subscribed to this thread.>
>> > Reply to this email directly, view it on GitHub>
>> > <#8>, or>
>> > unsubscribe>
>> > <>
>>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>
>> >.>
>> >>
>> -->
>>>
>> *Rob Ward*>
>> Lake Tyers Beach, 3909>
>> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>
>> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>
>>>
>> —>
>> You are receiving this because you authored the thread.>
>> Reply to this email directly, view it on GitHub>
>>
><
#8 (comment)
>,>
>> or unsubscribe>
>>
><
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A
>>
>> .>
>>>
>>
>>
>-- >
>You are receiving this because you commented.>
>Reply to this email directly or view it on GitHub:>
>
#8 (comment)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A>
.
|
On Fri, 12 Jun 2020 at 11:29, Rob Ward ***@***.***> wrote:
The wind sensor repeats about every 14 seconds, so it should be able to
get at least one burst in every now and then.
Are you sure your receiver is wired up ok? If you put an LED 220ohm
resistor on the Tx output, and press reset on the wind sensor it should
show z distinct burst of signal on the Rx straight away. Quite a few people
who gave contacted me have found their Rx is the fault. I looked up your Rx
and it looks very good quality. Maybe even your antenna needs checking, a
simple whip of 170mm hook up wire is ok, especially at small distances.
Legally 433Mhz signals should only broadcast intermittent bursts. So the
tank system should not swamp your Rx continually.
Rob
Cheers, RobW
On 12 June 2020 7:07:44 pm AEST, pdbayes ***@***.***> wrote:
>i think I also have an issue that we have 433mhz oil tank level
>sensors. If>
>the signal from them is strong then the AGC is doing to crank down the>
>sensitivity and miss the Oregon bursts. Not sure how to deal with
>that.>
>>
>On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***>
>wrote:>
>>
>> H i Paul,>
>>>
>> Apologies for the delay in answering this. I am going to assume you
>are>
>> trying to use ArduinoWeatherOS>
>> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to use>
>> multiple sensors and and to block any reporting until all the
>sensors>
>> have been "heard" and sensible data collected from them. If you are
>only>
>> after the wind data you will be able to cut a lot out of the
>program.>
>> Check the lines in Red here, they do the blocking until all 3 main>
>> sensors have been heard.>
>>>
>> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext>
>> temp, Int Temp, Int Pressure, Int Humidity>
>> intHumi = (double)dht.readHumidity(); //DHT22 readings
>%Humidity>
>> intTemp = (double)bmp.readTemperature(); //internal temperature>
>> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar>
>> *//leave this check at 7 until the other readings are stabilized**>
>> ** if ((scan&7)==7) { //scan==15 means all 4 readings
>now>
>> have a valid value, ready for output on Serial**>
>> * //Battery/Signal status, OR in the the four status values for
>the>
>> signal connections.>
>> logTemp ;>
>> if (logTemp>40){>
>> batStat = batStat | 1;>
>> }>
>> logWind ;>
>> if (logWind>40){>
>> batStat = batStat | 2;>
>> }>
>> logRain ;>
>> if (logRain>40){>
>> batStat = batStat | 4;>
>> }>
>> logUV ;>
>> if (logUV>40){>
>> batStat = batStat | 8;>
>> }>
>> logExp ;>
>> if (logExp>40){>
>> batStat = batStat | 16;>
>> }>
>> //reset the batStat to 0 every 24hours>
>> aday ;>
>> if (aday>1440){>
>> batStat=0;>
>> aday=0;>
>> }>
>> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>
>> Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar
>Power,>
>> Lightning, UV Radiation>
>> Serial.print(batStat,DEC); //Send out the number to
>indicate>
>> if a sensor is not transmitting for maore than 20 mins. Low Battery
>or>
>> other damage.>
>> Serial.print(",");>
>> Serial.print(quadrant); //0-15 in 22.5 degrees steps
>clockwise>
>> Serial.print(",");>
>> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>
>> average windspeed (graphing over 10 samples gives Average)>
>> Serial.print(",");>
>> gustWindspeed = avWindspeed; //reset gust to average, then
>take>
>> the larger next reading>
>> Serial.print(rainTotal, 1); //currently considered to
>checked>
>> for a good calibration to mm>
>> Serial.print(",");>
>> Serial.print(temperature, 2); // OS Temperature Centigrade>
>> Serial.print(",");>
>> Serial.print(intTemp, 2); //BMP085 temperature (used for>
>> compensation reading) Centigrade>
>> Serial.print(",");>
>> Serial.print(intPres, 2); //BMP085 pressure reading
>milli-bars>
>> Serial.print(",");>
>> Serial.print(intHumi); //Digital DHT22 seems better
>than>
>> the OS in Temp/Hum sensor % relative>
>> Serial.print(",");>
>> Serial.print(intSolar,DEC); //A reading from experimental>
>> Solar Power sensor>
>> Serial.print(",");>
>> Serial.print(intLightning,DEC); //A reading from the nos
>of>
>> Lightning Strikes>
>> Serial.print(",");>
>> Serial.print(intUV, DEC); //UV Sensor>
>> Serial.println();>
>>>
>> //Indicate the transmission of this one second data with a white>
>> light set up R B G!!>
>> digitalWrite(RedPin, 0); //White, all colours on, data
>has>
>> been logged to the Server>
>> digitalWrite(GrePin, 0);>
>> digitalWrite(BluPin, 0);>
>> *}*>
>> }>
>>>
>> If you remove that IF clause then it should at least begin reporting>
>> your wind data and just the initialising defaults for the other
>sensors.>
>>>
>> Once you have that working you can owrk backwards to trim the
>program>
>> back to what you need for your project.>
>>>
>> Thank you for taking an interest in my project and communicating with
>me>
>> about it.>
>>>
>> Best wishes,>
>>>
>> Rob>
>>>
>> On 8/6/20 6:34 pm, pdbayes wrote:>
>> >>
>> > Hi>
>> >>
>> > Excellent well documented project. I only have the anenometer and
>want>
>> > to capture the data from that. I cannot seem to get any serial
>data>
>> > from it using your code except for the initial output. Were would
>I>
>> > need to remove code to only collect data from the anenometer.>
>> >>
>> > Thanks>
>> >>
>> > Paul>
>> >>
>> > —>
>> > You are receiving this because you are subscribed to this thread.>
>> > Reply to this email directly, view it on GitHub>
>> > <#8>, or>
>> > unsubscribe>
>> > <>
>>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>
>> >.>
>> >>
>> -->
>>>
>> *Rob Ward*>
>> Lake Tyers Beach, 3909>
>> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>
>> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>
>>>
>> —>
>> You are receiving this because you authored the thread.>
>> Reply to this email directly, view it on GitHub>
>>
><
#8 (comment)
>,>
>> or unsubscribe>
>>
><
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A
>>
>> .>
>>>
>>
>>
>-- >
>You are receiving this because you commented.>
>Reply to this email directly or view it on GitHub:>
>
#8 (comment)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A>
.
Debug Manchester Version GIT-Hub V03
Using a delay of 1/4 bitWaveform 200 uSecs 1/2 bitWaveform 400 uSecs
Positive Polarity lo->hi=1
10 bits expected for a valid header
All bits inside the Packet
80 initial timeout to detect wrong Polarity
P 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05 AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 90 22223333
sDelay =200
Nos Hits =0
sDelay =210
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010
1 58 01011000 91 10010001 20 00100000 F4 11110100 02 00000010
Nos Hits =3
sDelay =220
Nos Hits =0
sDelay =230
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
Nos Hits =1
sDelay =240
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
Nos Hits =6
sDelay =250
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 0D 00001101
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
Nos Hits =7
sDelay =260
1 58 01011000 91 10010001 20 00100000 F4 11110100 00 00000000
1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
1 5F 01011111 14 00010100 28 00101000 BB 10111011 01 00000001
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011
Nos Hits =8
sDelay =270
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 5F 01011111 14 00010100 28 00101000 BB 10111011 82 10000010
Nos Hits =4
sDelay =280
1 5F 01011111 14 00010100 28 00101000 BB 10111011 86 10000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111
1 5F 01011111 14 00010100 28 00101000 BB 10111011 89 10001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010
Nos Hits =9
sDelay =290
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 5F 01011111 14 00010100 28 00101000 BB 10111011 8C 10001100
Nos Hits =5
sDelay =300
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001
Nos Hits =5
sDelay =310
1 40 01000000 90 10010000 3E 00111110 C0 11000000 C4 11000100
Nos Hits =1
sDelay =320
Nos Hits =0
sDelay =330
Nos Hits =0
sDelay =340
Nos Hits =0
sDelay =350
Nos Hits =0
sDelay =360
Nos Hits =0
sDelay =370
Nos Hits =0
sDelay =380
Nos Hits =0
sDelay =390
Nos Hits =0
sDelay =400
Nos Hits =0
sDelay =410
Nos Hits =0
sDelay =420
Nos Hits =0
sDelay =430
Nos Hits =0
sDelay =440
Nos Hits =0
sDelay =450
Nos Hits =0
sDelay =460
Nos Hits =0
sDelay =470
Nos Hits =0
sDelay =480
Nos Hits =0
sDelay =490
Nos Hits =0
sDelay =500
Nos Hits =0
sDelay =510
Nos Hits =0
sDelay =520
Nos Hits =0
sDelay =530
Nos Hits =0
sDelay =540
Nos Hits =0
sDelay =550
Nos Hits =0
sDelay =560
Nos Hits =0
sDelay =570
|
Delay 280 is giving
1
58 01011000
91 10010001
20 00100000
F4 11110100
09 00001001
58 hex in OS reverse nibble is A1. Now I am away from home and can't check my code only on my phone, but I think that is station identification byte for the wind sensor. So I think that is good news. I am working from memory here. Check it in the program for me. It appears the Debug is only gathering the first five bytes. Wind packets have about 8 bytes I think (hazy memory).
When you press reset on it the second byte after that should change, but then stay stable until reset or battery change.
You appear to be getting reliable reception. Something to work with. I won't be back home until Tuesday next week. If you could attach the full weather station program as a .txt file for me I could check better what you could change.
Rob
Cheers, RobW
…On 12 June 2020 8:48:55 pm AEST, pdbayes ***@***.***> wrote:
On Fri, 12 Jun 2020 at 11:29, Rob Ward ***@***.***>
wrote:>
>
> The wind sensor repeats about every 14 seconds, so it should be able
to>
> get at least one burst in every now and then.>
>>
> Are you sure your receiver is wired up ok? If you put an LED
220ohm>
> resistor on the Tx output, and press reset on the wind sensor it
should>
> show z distinct burst of signal on the Rx straight away. Quite a few
people>
> who gave contacted me have found their Rx is the fault. I looked up
your Rx>
> and it looks very good quality. Maybe even your antenna needs
checking, a>
> simple whip of 170mm hook up wire is ok, especially at small
distances.>
>>
> Legally 433Mhz signals should only broadcast intermittent bursts. So
the>
> tank system should not swamp your Rx continually.>
>>
> Rob>
>>
> Cheers, RobW>
>>
> On 12 June 2020 7:07:44 pm AEST, pdbayes ***@***.***>
wrote:>
> >i think I also have an issue that we have 433mhz oil tank level>
> >sensors. If>>
> >the signal from them is strong then the AGC is doing to crank down
the>>
> >sensitivity and miss the Oregon bursts. Not sure how to deal with>
> >that.>>
> >>>
> >On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***>>
> >wrote:>>
> >>>
> >> H i Paul,>>
> >>>>
> >> Apologies for the delay in answering this. I am going to assume
you>
> >are>>
> >> trying to use ArduinoWeatherOS>>
> >> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to
use>>
> >> multiple sensors and and to block any reporting until all the>
> >sensors>>
> >> have been "heard" and sensible data collected from them. If you
are>
> >only>>
> >> after the wind data you will be able to cut a lot out of the>
> >program.>>
> >> Check the lines in Red here, they do the blocking until all 3
main>>
> >> sensors have been heard.>>
> >>>>
> >> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips,
Ext>>
> >> temp, Int Temp, Int Pressure, Int Humidity>>
> >> intHumi = (double)dht.readHumidity(); //DHT22 readings>
> >%Humidity>>
> >> intTemp = (double)bmp.readTemperature(); //internal temperature>>
> >> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to
mBar>>
> >> *//leave this check at 7 until the other readings are
stabilized**>>
> >> ** if ((scan&7)==7) { //scan==15 means all 4 readings>
> >now>>
> >> have a valid value, ready for output on Serial**>>
> >> * //Battery/Signal status, OR in the the four status values for>
> >the>>
> >> signal connections.>>
> >> logTemp ;>>
> >> if (logTemp>40){>>
> >> batStat = batStat | 1;>>
> >> }>>
> >> logWind ;>>
> >> if (logWind>40){>>
> >> batStat = batStat | 2;>>
> >> }>>
> >> logRain ;>>
> >> if (logRain>40){>>
> >> batStat = batStat | 4;>>
> >> }>>
> >> logUV ;>>
> >> if (logUV>40){>>
> >> batStat = batStat | 8;>>
> >> }>>
> >> logExp ;>>
> >> if (logExp>40){>>
> >> batStat = batStat | 16;>>
> >> }>>
> >> //reset the batStat to 0 every 24hours>>
> >> aday ;>>
> >> if (aday>1440){>>
> >> batStat=0;>>
> >> aday=0;>>
> >> }>>
> >> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>>
> >> Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar>
> >Power,>>
> >> Lightning, UV Radiation>>
> >> Serial.print(batStat,DEC); //Send out the number to>
> >indicate>>
> >> if a sensor is not transmitting for maore than 20 mins. Low
Battery>
> >or>>
> >> other damage.>>
> >> Serial.print(",");>>
> >> Serial.print(quadrant); //0-15 in 22.5 degrees steps>
> >clockwise>>
> >> Serial.print(",");>>
> >> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>>
> >> average windspeed (graphing over 10 samples gives Average)>>
> >> Serial.print(",");>>
> >> gustWindspeed = avWindspeed; //reset gust to average, then>
> >take>>
> >> the larger next reading>>
> >> Serial.print(rainTotal, 1); //currently considered to>
> >checked>>
> >> for a good calibration to mm>>
> >> Serial.print(",");>>
> >> Serial.print(temperature, 2); // OS Temperature Centigrade>>
> >> Serial.print(",");>>
> >> Serial.print(intTemp, 2); //BMP085 temperature (used for>>
> >> compensation reading) Centigrade>>
> >> Serial.print(",");>>
> >> Serial.print(intPres, 2); //BMP085 pressure reading>
> >milli-bars>>
> >> Serial.print(",");>>
> >> Serial.print(intHumi); //Digital DHT22 seems better>
> >than>>
> >> the OS in Temp/Hum sensor % relative>>
> >> Serial.print(",");>>
> >> Serial.print(intSolar,DEC); //A reading from experimental>>
> >> Solar Power sensor>>
> >> Serial.print(",");>>
> >> Serial.print(intLightning,DEC); //A reading from the nos>
> >of>>
> >> Lightning Strikes>>
> >> Serial.print(",");>>
> >> Serial.print(intUV, DEC); //UV Sensor>>
> >> Serial.println();>>
> >>>>
> >> //Indicate the transmission of this one second data with a white>>
> >> light set up R B G!!>>
> >> digitalWrite(RedPin, 0); //White, all colours on, data>
> >has>>
> >> been logged to the Server>>
> >> digitalWrite(GrePin, 0);>>
> >> digitalWrite(BluPin, 0);>>
> >> *}*>>
> >> }>>
> >>>>
> >> If you remove that IF clause then it should at least begin
reporting>>
> >> your wind data and just the initialising defaults for the other>
> >sensors.>>
> >>>>
> >> Once you have that working you can owrk backwards to trim the>
> >program>>
> >> back to what you need for your project.>>
> >>>>
> >> Thank you for taking an interest in my project and communicating
with>
> >me>>
> >> about it.>>
> >>>>
> >> Best wishes,>>
> >>>>
> >> Rob>>
> >>>>
> >> On 8/6/20 6:34 pm, pdbayes wrote:>>
> >> >>>
> >> > Hi>>
> >> >>>
> >> > Excellent well documented project. I only have the anenometer
and>
> >want>>
> >> > to capture the data from that. I cannot seem to get any serial>
> >data>>
> >> > from it using your code except for the initial output. Were
would>
> >I>>
> >> > need to remove code to only collect data from the anenometer.>>
> >> >>>
> >> > Thanks>>
> >> >>>
> >> > Paul>>
> >> >>>
> >> > —>>
> >> > You are receiving this because you are subscribed to this
thread.>>
> >> > Reply to this email directly, view it on GitHub>>
> >> > <#8>, or>>
> >> > unsubscribe>>
> >> > <>>
> >>>
> >>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A>
> >>
> >> >.>>
> >> >>>
> >> -->>
> >>>>
> >> *Rob Ward*>>
> >> Lake Tyers Beach, 3909>>
> >> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>>
> >> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>>
> >>>>
> >> —>>
> >> You are receiving this because you authored the thread.>>
> >> Reply to this email directly, view it on GitHub>>
> >>>
> ><>
>
#8 (comment)>
> >,>>
> >> or unsubscribe>>
> >>>
> ><>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A>
> >>>
> >> .>>
> >>>>
> >>>
> >>>
> >-- >>
> >You are receiving this because you commented.>>
> >Reply to this email directly or view it on GitHub:>>
> >>
>
#8 (comment)>
>>
> —>
> You are receiving this because you authored the thread.>
> Reply to this email directly, view it on GitHub>
>
<#8 (comment)>,>
> or unsubscribe>
>
<https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A>>
> .>
>>
>
Debug Manchester Version GIT-Hub V03>
Using a delay of 1/4 bitWaveform 200 uSecs 1/2 bitWaveform 400 uSecs >
Positive Polarity lo->hi=1>
10 bits expected for a valid header>
All bits inside the Packet>
80 initial timeout to detect wrong Polarity>
P 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05
AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 90 22223333>
sDelay =200>
Nos Hits =0>
sDelay =210>
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 02 00000010 >
Nos Hits =3>
sDelay =220>
Nos Hits =0>
sDelay =230>
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
Nos Hits =1>
sDelay =240>
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
Nos Hits =6>
sDelay =250>
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 0D 00001101 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
Nos Hits =7>
sDelay =260>
1 58 01011000 91 10010001 20 00100000 F4 11110100 00 00000000 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 01 00000001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
Nos Hits =8>
sDelay =270>
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 82 10000010 >
Nos Hits =4>
sDelay =280>
1 5F 01011111 14 00010100 28 00101000 BB 10111011 86 10000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 89 10001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >
Nos Hits =9>
sDelay =290>
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 5F 01011111 14 00010100 28 00101000 BB 10111011 8C 10001100 >
Nos Hits =5>
sDelay =300>
1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
Nos Hits =5>
sDelay =310>
1 40 01000000 90 10010000 3E 00111110 C0 11000000 C4 11000100 >
Nos Hits =1>
sDelay =320>
Nos Hits =0>
sDelay =330>
Nos Hits =0>
sDelay =340>
Nos Hits =0>
sDelay =350>
Nos Hits =0>
sDelay =360>
Nos Hits =0>
sDelay =370>
Nos Hits =0>
sDelay =380>
Nos Hits =0>
sDelay =390>
Nos Hits =0>
sDelay =400>
Nos Hits =0>
sDelay =410>
Nos Hits =0>
sDelay =420>
Nos Hits =0>
sDelay =430>
Nos Hits =0>
sDelay =440>
Nos Hits =0>
sDelay =450>
Nos Hits =0>
sDelay =460>
Nos Hits =0>
sDelay =470>
Nos Hits =0>
sDelay =480>
Nos Hits =0>
sDelay =490>
Nos Hits =0>
sDelay =500>
Nos Hits =0>
sDelay =510>
Nos Hits =0>
sDelay =520>
Nos Hits =0>
sDelay =530>
Nos Hits =0>
sDelay =540>
Nos Hits =0>
sDelay =550>
Nos Hits =0>
sDelay =560>
Nos Hits =0>
sDelay =570>
>
>
-- >
You are receiving this because you commented.>
Reply to this email directly or view it on GitHub:>
#8 (comment)
|
Thanks again Rob . I have a feeling I was only getting 5 bytes in the
weather script too, but I'll check. I will send the weather ino file as
text when I have a minute, I am home schooling 2 children so free time is
limited. A1 is the first byte your code looks for for the weather station
but I'm not sure about the second as documents I have looked over say 94 or
95.
…On Fri, 12 Jun 2020, 13:18 Rob Ward, ***@***.***> wrote:
Delay 280 is giving
1
58 01011000
91 10010001
20 00100000
F4 11110100
09 00001001
58 hex in OS reverse nibble is A1. Now I am away from home and can't check
my code only on my phone, but I think that is station identification byte
for the wind sensor. So I think that is good news. I am working from memory
here. Check it in the program for me. It appears the Debug is only
gathering the first five bytes. Wind packets have about 8 bytes I think
(hazy memory).
When you press reset on it the second byte after that should change, but
then stay stable until reset or battery change.
You appear to be getting reliable reception. Something to work with. I
won't be back home until Tuesday next week. If you could attach the full
weather station program as a .txt file for me I could check better what you
could change.
Rob
Cheers, RobW
On 12 June 2020 8:48:55 pm AEST, pdbayes ***@***.***> wrote:
>On Fri, 12 Jun 2020 at 11:29, Rob Ward ***@***.***>
>wrote:>
>>
>> The wind sensor repeats about every 14 seconds, so it should be able
>to>
>> get at least one burst in every now and then.>
>>>
>> Are you sure your receiver is wired up ok? If you put an LED
>220ohm>
>> resistor on the Tx output, and press reset on the wind sensor it
>should>
>> show z distinct burst of signal on the Rx straight away. Quite a few
>people>
>> who gave contacted me have found their Rx is the fault. I looked up
>your Rx>
>> and it looks very good quality. Maybe even your antenna needs
>checking, a>
>> simple whip of 170mm hook up wire is ok, especially at small
>distances.>
>>>
>> Legally 433Mhz signals should only broadcast intermittent bursts. So
>the>
>> tank system should not swamp your Rx continually.>
>>>
>> Rob>
>>>
>> Cheers, RobW>
>>>
>> On 12 June 2020 7:07:44 pm AEST, pdbayes ***@***.***>
>wrote:>
>> >i think I also have an issue that we have 433mhz oil tank level>
>> >sensors. If>>
>> >the signal from them is strong then the AGC is doing to crank down
>the>>
>> >sensitivity and miss the Oregon bursts. Not sure how to deal with>
>> >that.>>
>> >>>
>> >On Fri, 12 Jun 2020 at 00:19, Rob Ward ***@***.***>>
>> >wrote:>>
>> >>>
>> >> H i Paul,>>
>> >>>>
>> >> Apologies for the delay in answering this. I am going to assume
>you>
>> >are>>
>> >> trying to use ArduinoWeatherOS>>
>> >> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up to
>use>>
>> >> multiple sensors and and to block any reporting until all the>
>> >sensors>>
>> >> have been "heard" and sensible data collected from them. If you
>are>
>> >only>>
>> >> after the wind data you will be able to cut a lot out of the>
>> >program.>>
>> >> Check the lines in Red here, they do the blocking until all 3
>main>>
>> >> sensors have been heard.>>
>> >>>>
>> >> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips,
>Ext>>
>> >> temp, Int Temp, Int Pressure, Int Humidity>>
>> >> intHumi = (double)dht.readHumidity(); //DHT22 readings>
>> >%Humidity>>
>> >> intTemp = (double)bmp.readTemperature(); //internal temperature>>
>> >> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to
>mBar>>
>> >> *//leave this check at 7 until the other readings are
>stabilized**>>
>> >> ** if ((scan&7)==7) { //scan==15 means all 4 readings>
>> >now>>
>> >> have a valid value, ready for output on Serial**>>
>> >> * //Battery/Signal status, OR in the the four status values for>
>> >the>>
>> >> signal connections.>>
>> >> logTemp ;>>
>> >> if (logTemp>40){>>
>> >> batStat = batStat | 1;>>
>> >> }>>
>> >> logWind ;>>
>> >> if (logWind>40){>>
>> >> batStat = batStat | 2;>>
>> >> }>>
>> >> logRain ;>>
>> >> if (logRain>40){>>
>> >> batStat = batStat | 4;>>
>> >> }>>
>> >> logUV ;>>
>> >> if (logUV>40){>>
>> >> batStat = batStat | 8;>>
>> >> }>>
>> >> logExp ;>>
>> >> if (logExp>40){>>
>> >> batStat = batStat | 16;>>
>> >> }>>
>> >> //reset the batStat to 0 every 24hours>>
>> >> aday ;>>
>> >> if (aday>1440){>>
>> >> batStat=0;>>
>> >> aday=0;>>
>> >> }>>
>> >> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>>
>> >> Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar>
>> >Power,>>
>> >> Lightning, UV Radiation>>
>> >> Serial.print(batStat,DEC); //Send out the number to>
>> >indicate>>
>> >> if a sensor is not transmitting for maore than 20 mins. Low
>Battery>
>> >or>>
>> >> other damage.>>
>> >> Serial.print(",");>>
>> >> Serial.print(quadrant); //0-15 in 22.5 degrees steps>
>> >clockwise>>
>> >> Serial.print(",");>>
>> >> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>>
>> >> average windspeed (graphing over 10 samples gives Average)>>
>> >> Serial.print(",");>>
>> >> gustWindspeed = avWindspeed; //reset gust to average, then>
>> >take>>
>> >> the larger next reading>>
>> >> Serial.print(rainTotal, 1); //currently considered to>
>> >checked>>
>> >> for a good calibration to mm>>
>> >> Serial.print(",");>>
>> >> Serial.print(temperature, 2); // OS Temperature Centigrade>>
>> >> Serial.print(",");>>
>> >> Serial.print(intTemp, 2); //BMP085 temperature (used for>>
>> >> compensation reading) Centigrade>>
>> >> Serial.print(",");>>
>> >> Serial.print(intPres, 2); //BMP085 pressure reading>
>> >milli-bars>>
>> >> Serial.print(",");>>
>> >> Serial.print(intHumi); //Digital DHT22 seems better>
>> >than>>
>> >> the OS in Temp/Hum sensor % relative>>
>> >> Serial.print(",");>>
>> >> Serial.print(intSolar,DEC); //A reading from experimental>>
>> >> Solar Power sensor>>
>> >> Serial.print(",");>>
>> >> Serial.print(intLightning,DEC); //A reading from the nos>
>> >of>>
>> >> Lightning Strikes>>
>> >> Serial.print(",");>>
>> >> Serial.print(intUV, DEC); //UV Sensor>>
>> >> Serial.println();>>
>> >>>>
>> >> //Indicate the transmission of this one second data with a white>>
>> >> light set up R B G!!>>
>> >> digitalWrite(RedPin, 0); //White, all colours on, data>
>> >has>>
>> >> been logged to the Server>>
>> >> digitalWrite(GrePin, 0);>>
>> >> digitalWrite(BluPin, 0);>>
>> >> *}*>>
>> >> }>>
>> >>>>
>> >> If you remove that IF clause then it should at least begin
>reporting>>
>> >> your wind data and just the initialising defaults for the other>
>> >sensors.>>
>> >>>>
>> >> Once you have that working you can owrk backwards to trim the>
>> >program>>
>> >> back to what you need for your project.>>
>> >>>>
>> >> Thank you for taking an interest in my project and communicating
>with>
>> >me>>
>> >> about it.>>
>> >>>>
>> >> Best wishes,>>
>> >>>>
>> >> Rob>>
>> >>>>
>> >> On 8/6/20 6:34 pm, pdbayes wrote:>>
>> >> >>>
>> >> > Hi>>
>> >> >>>
>> >> > Excellent well documented project. I only have the anenometer
>and>
>> >want>>
>> >> > to capture the data from that. I cannot seem to get any serial>
>> >data>>
>> >> > from it using your code except for the initial output. Were
>would>
>> >I>>
>> >> > need to remove code to only collect data from the anenometer.>>
>> >> >>>
>> >> > Thanks>>
>> >> >>>
>> >> > Paul>>
>> >> >>>
>> >> > —>>
>> >> > You are receiving this because you are subscribed to this
>thread.>>
>> >> > Reply to this email directly, view it on GitHub>>
>> >> > <#8>, or>>
>> >> > unsubscribe>>
>> >> > <>>
>> >>>
>> >>
>>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>
>> >>
>> >> >.>>
>> >> >>>
>> >> -->>
>> >>>>
>> >> *Rob Ward*>>
>> >> Lake Tyers Beach, 3909>>
>> >> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>>
>> >> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>>
>> >>>>
>> >> —>>
>> >> You are receiving this because you authored the thread.>>
>> >> Reply to this email directly, view it on GitHub>>
>> >>>
>> ><>
>>
>
#8 (comment)
>
>> >,>>
>> >> or unsubscribe>>
>> >>>
>> ><>
>>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A
>
>> >>>
>> >> .>>
>> >>>>
>> >>>
>> >>>
>> >-- >>
>> >You are receiving this because you commented.>>
>> >Reply to this email directly or view it on GitHub:>>
>> >>
>>
>
#8 (comment)
>
>>>
>> —>
>> You are receiving this because you authored the thread.>
>> Reply to this email directly, view it on GitHub>
>>
><
#8 (comment)
>,>
>> or unsubscribe>
>>
><
https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A
>>
>> .>
>>>
>>
>Debug Manchester Version GIT-Hub V03>
>Using a delay of 1/4 bitWaveform 200 uSecs 1/2 bitWaveform 400 uSecs >
>Positive Polarity lo->hi=1>
>10 bits expected for a valid header>
>All bits inside the Packet>
>80 initial timeout to detect wrong Polarity>
>P 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05
>AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 90 22223333>
>sDelay =200>
>Nos Hits =0>
>sDelay =210>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 02 00000010 >
>Nos Hits =3>
>sDelay =220>
>Nos Hits =0>
>sDelay =230>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>Nos Hits =1>
>sDelay =240>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>Nos Hits =6>
>sDelay =250>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 0D 00001101 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>Nos Hits =7>
>sDelay =260>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 00 00000000 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 01 00000001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
>Nos Hits =8>
>sDelay =270>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 82 10000010 >
>Nos Hits =4>
>sDelay =280>
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 86 10000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 89 10001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >
>Nos Hits =9>
>sDelay =290>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 5F 01011111 14 00010100 28 00101000 BB 10111011 8C 10001100 >
>Nos Hits =5>
>sDelay =300>
>1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >
>1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >
>Nos Hits =5>
>sDelay =310>
>1 40 01000000 90 10010000 3E 00111110 C0 11000000 C4 11000100 >
>Nos Hits =1>
>sDelay =320>
>Nos Hits =0>
>sDelay =330>
>Nos Hits =0>
>sDelay =340>
>Nos Hits =0>
>sDelay =350>
>Nos Hits =0>
>sDelay =360>
>Nos Hits =0>
>sDelay =370>
>Nos Hits =0>
>sDelay =380>
>Nos Hits =0>
>sDelay =390>
>Nos Hits =0>
>sDelay =400>
>Nos Hits =0>
>sDelay =410>
>Nos Hits =0>
>sDelay =420>
>Nos Hits =0>
>sDelay =430>
>Nos Hits =0>
>sDelay =440>
>Nos Hits =0>
>sDelay =450>
>Nos Hits =0>
>sDelay =460>
>Nos Hits =0>
>sDelay =470>
>Nos Hits =0>
>sDelay =480>
>Nos Hits =0>
>sDelay =490>
>Nos Hits =0>
>sDelay =500>
>Nos Hits =0>
>sDelay =510>
>Nos Hits =0>
>sDelay =520>
>Nos Hits =0>
>sDelay =530>
>Nos Hits =0>
>sDelay =540>
>Nos Hits =0>
>sDelay =550>
>Nos Hits =0>
>sDelay =560>
>Nos Hits =0>
>sDelay =570>
>>
>>
>-- >
>You are receiving this because you commented.>
>Reply to this email directly or view it on GitHub:>
>
#8 (comment)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPRQBBTN2UUPRWB4P73RWIMKPANCNFSM4NYFFH7A>
.
|
The second byte is randomised each time reset is pressed to identify a particular wind sensor in case you have two in close proximity. So it will be any 8bit number.
Lovely to hear you are with you children. The virus is a pain, making hardwork for many
Good luck,
Rob
(Hehe, retired teacher!!! I feel for you!!!).
Cheers, RobW
…On 12 June 2020 10:24:05 pm AEST, pdbayes ***@***.***> wrote:
Thanks again Rob . I have a feeling I was only getting 5 bytes in the>
weather script too, but I'll check. I will send the weather ino file
as>
text when I have a minute, I am home schooling 2 children so free time
is>
limited. A1 is the first byte your code looks for for the weather
station>
but I'm not sure about the second as documents I have looked over say
94 or>
95.>
>
On Fri, 12 Jun 2020, 13:18 Rob Ward, ***@***.***> wrote:>
>
> Delay 280 is giving>
>>
> 1>
> 58 01011000>
> 91 10010001>
> 20 00100000>
> F4 11110100>
> 09 00001001>
>>
> 58 hex in OS reverse nibble is A1. Now I am away from home and can't
check>
> my code only on my phone, but I think that is station identification
byte>
> for the wind sensor. So I think that is good news. I am working from
memory>
> here. Check it in the program for me. It appears the Debug is only>
> gathering the first five bytes. Wind packets have about 8 bytes I
think>
> (hazy memory).>
>>
> When you press reset on it the second byte after that should change,
but>
> then stay stable until reset or battery change.>
>>
> You appear to be getting reliable reception. Something to work with.
I>
> won't be back home until Tuesday next week. If you could attach the
full>
> weather station program as a .txt file for me I could check better
what you>
> could change.>
>>
> Rob>
> Cheers, RobW>
>>
> On 12 June 2020 8:48:55 pm AEST, pdbayes ***@***.***>
wrote:>
> >On Fri, 12 Jun 2020 at 11:29, Rob Ward ***@***.***>>
> >wrote:>>
> >>>
> >> The wind sensor repeats about every 14 seconds, so it should be
able>
> >to>>
> >> get at least one burst in every now and then.>>
> >>>>
> >> Are you sure your receiver is wired up ok? If you put an LED >
> >220ohm>>
> >> resistor on the Tx output, and press reset on the wind sensor it>
> >should>>
> >> show z distinct burst of signal on the Rx straight away. Quite a
few>
> >people>>
> >> who gave contacted me have found their Rx is the fault. I looked
up>
> >your Rx>>
> >> and it looks very good quality. Maybe even your antenna needs>
> >checking, a>>
> >> simple whip of 170mm hook up wire is ok, especially at small>
> >distances.>>
> >>>>
> >> Legally 433Mhz signals should only broadcast intermittent bursts.
So>
> >the>>
> >> tank system should not swamp your Rx continually.>>
> >>>>
> >> Rob>>
> >>>>
> >> Cheers, RobW>>
> >>>>
> >> On 12 June 2020 7:07:44 pm AEST, pdbayes
***@***.***>>
> >wrote:>>
> >> >i think I also have an issue that we have 433mhz oil tank level>>
> >> >sensors. If>>>
> >> >the signal from them is strong then the AGC is doing to crank
down>
> >the>>>
> >> >sensitivity and miss the Oregon bursts. Not sure how to deal
with>>
> >> >that.>>>
> >> >>>>
> >> >On Fri, 12 Jun 2020 at 00:19, Rob Ward
***@***.***>>>
> >> >wrote:>>>
> >> >>>>
> >> >> H i Paul,>>>
> >> >>>>>
> >> >> Apologies for the delay in answering this. I am going to
assume>
> >you>>
> >> >are>>>
> >> >> trying to use ArduinoWeatherOS>>>
> >> >> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up
to>
> >use>>>
> >> >> multiple sensors and and to block any reporting until all the>>
> >> >sensors>>>
> >> >> have been "heard" and sensible data collected from them. If
you>
> >are>>
> >> >only>>>
> >> >> after the wind data you will be able to cut a lot out of the>>
> >> >program.>>>
> >> >> Check the lines in Red here, they do the blocking until all 3>
> >main>>>
> >> >> sensors have been heard.>>>
> >> >>>>>
> >> >> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips,>
> >Ext>>>
> >> >> temp, Int Temp, Int Pressure, Int Humidity>>>
> >> >> intHumi = (double)dht.readHumidity(); //DHT22 readings>>
> >> >%Humidity>>>
> >> >> intTemp = (double)bmp.readTemperature(); //internal
temperature>>>
> >> >> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to>
> >mBar>>>
> >> >> *//leave this check at 7 until the other readings are>
> >stabilized**>>>
> >> >> ** if ((scan&7)==7) { //scan==15 means all 4 readings>>
> >> >now>>>
> >> >> have a valid value, ready for output on Serial**>>>
> >> >> * //Battery/Signal status, OR in the the four status values
for>>
> >> >the>>>
> >> >> signal connections.>>>
> >> >> logTemp ;>>>
> >> >> if (logTemp>40){>>>
> >> >> batStat = batStat | 1;>>>
> >> >> }>>>
> >> >> logWind ;>>>
> >> >> if (logWind>40){>>>
> >> >> batStat = batStat | 2;>>>
> >> >> }>>>
> >> >> logRain ;>>>
> >> >> if (logRain>40){>>>
> >> >> batStat = batStat | 4;>>>
> >> >> }>>>
> >> >> logUV ;>>>
> >> >> if (logUV>40){>>>
> >> >> batStat = batStat | 8;>>>
> >> >> }>>>
> >> >> logExp ;>>>
> >> >> if (logExp>40){>>>
> >> >> batStat = batStat | 16;>>>
> >> >> }>>>
> >> >> //reset the batStat to 0 every 24hours>>>
> >> >> aday ;>>>
> >> >> if (aday>1440){>>>
> >> >> batStat=0;>>>
> >> >> aday=0;>>>
> >> >> }>>>
> >> >> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>>>
> >> >> Temperature, InternalTemp, Internal Pressure, Int Humidity,
Solar>>
> >> >Power,>>>
> >> >> Lightning, UV Radiation>>>
> >> >> Serial.print(batStat,DEC); //Send out the number to>>
> >> >indicate>>>
> >> >> if a sensor is not transmitting for maore than 20 mins. Low>
> >Battery>>
> >> >or>>>
> >> >> other damage.>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(quadrant); //0-15 in 22.5 degrees steps>>
> >> >clockwise>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>>>
> >> >> average windspeed (graphing over 10 samples gives Average)>>>
> >> >> Serial.print(",");>>>
> >> >> gustWindspeed = avWindspeed; //reset gust to average, then>>
> >> >take>>>
> >> >> the larger next reading>>>
> >> >> Serial.print(rainTotal, 1); //currently considered to>>
> >> >checked>>>
> >> >> for a good calibration to mm>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(temperature, 2); // OS Temperature Centigrade>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intTemp, 2); //BMP085 temperature (used for>>>
> >> >> compensation reading) Centigrade>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intPres, 2); //BMP085 pressure reading>>
> >> >milli-bars>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intHumi); //Digital DHT22 seems better>>
> >> >than>>>
> >> >> the OS in Temp/Hum sensor % relative>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intSolar,DEC); //A reading from experimental>>>
> >> >> Solar Power sensor>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intLightning,DEC); //A reading from the nos>>
> >> >of>>>
> >> >> Lightning Strikes>>>
> >> >> Serial.print(",");>>>
> >> >> Serial.print(intUV, DEC); //UV Sensor>>>
> >> >> Serial.println();>>>
> >> >>>>>
> >> >> //Indicate the transmission of this one second data with a
white>>>
> >> >> light set up R B G!!>>>
> >> >> digitalWrite(RedPin, 0); //White, all colours on, data>>
> >> >has>>>
> >> >> been logged to the Server>>>
> >> >> digitalWrite(GrePin, 0);>>>
> >> >> digitalWrite(BluPin, 0);>>>
> >> >> *}*>>>
> >> >> }>>>
> >> >>>>>
> >> >> If you remove that IF clause then it should at least begin>
> >reporting>>>
> >> >> your wind data and just the initialising defaults for the
other>>
> >> >sensors.>>>
> >> >>>>>
> >> >> Once you have that working you can owrk backwards to trim the>>
> >> >program>>>
> >> >> back to what you need for your project.>>>
> >> >>>>>
> >> >> Thank you for taking an interest in my project and
communicating>
> >with>>
> >> >me>>>
> >> >> about it.>>>
> >> >>>>>
> >> >> Best wishes,>>>
> >> >>>>>
> >> >> Rob>>>
> >> >>>>>
> >> >> On 8/6/20 6:34 pm, pdbayes wrote:>>>
> >> >> >>>>
> >> >> > Hi>>>
> >> >> >>>>
> >> >> > Excellent well documented project. I only have the
anenometer>
> >and>>
> >> >want>>>
> >> >> > to capture the data from that. I cannot seem to get any
serial>>
> >> >data>>>
> >> >> > from it using your code except for the initial output. Were>
> >would>>
> >> >I>>>
> >> >> > need to remove code to only collect data from the
anenometer.>>>
> >> >> >>>>
> >> >> > Thanks>>>
> >> >> >>>>
> >> >> > Paul>>>
> >> >> >>>>
> >> >> > —>>>
> >> >> > You are receiving this because you are subscribed to this>
> >thread.>>>
> >> >> > Reply to this email directly, view it on GitHub>>>
> >> >> > <#8>,
or>>>
> >> >> > unsubscribe>>>
> >> >> > <>>>
> >> >>>>
> >> >>>
> >>>
> >>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A>
> >>
> >> >>>
> >> >> >.>>>
> >> >> >>>>
> >> >> -->>>
> >> >>>>>
> >> >> *Rob Ward*>>>
> >> >> Lake Tyers Beach, 3909>>>
> >> >> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>>>
> >> >> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>>>
> >> >>>>>
> >> >> —>>>
> >> >> You are receiving this because you authored the thread.>>>
> >> >> Reply to this email directly, view it on GitHub>>>
> >> >>>>
> >> ><>>
> >>>
> >>
>
#8 (comment)>
> >>
> >> >,>>>
> >> >> or unsubscribe>>>
> >> >>>>
> >> ><>>
> >>>
> >>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A>
> >>
> >> >>>>
> >> >> .>>>
> >> >>>>>
> >> >>>>
> >> >>>>
> >> >-- >>>
> >> >You are receiving this because you commented.>>>
> >> >Reply to this email directly or view it on GitHub:>>>
> >> >>>
> >>>
> >>
>
#8 (comment)>
> >>
> >>>>
> >> —>>
> >> You are receiving this because you authored the thread.>>
> >> Reply to this email directly, view it on GitHub>>
> >>>
> ><>
>
#8 (comment)>
> >,>>
> >> or unsubscribe>>
> >>>
> ><>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A>
> >>>
> >> .>>
> >>>>
> >>>
> >Debug Manchester Version GIT-Hub V03>>
> >Using a delay of 1/4 bitWaveform 200 uSecs 1/2 bitWaveform 400 uSecs
>>
> >Positive Polarity lo->hi=1>>
> >10 bits expected for a valid header>>
> >All bits inside the Packet>>
> >80 initial timeout to detect wrong Polarity>>
> >P 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05>
> >AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 90 22223333>>
> >sDelay =200>>
> >Nos Hits =0>>
> >sDelay =210>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 02 00000010 >>
> >Nos Hits =3>>
> >sDelay =220>>
> >Nos Hits =0>>
> >sDelay =230>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >Nos Hits =1>>
> >sDelay =240>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >Nos Hits =6>>
> >sDelay =250>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0D 00001101 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >Nos Hits =7>>
> >sDelay =260>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 00 00000000 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 01 00000001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
> >Nos Hits =8>>
> >sDelay =270>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 82 10000010 >>
> >Nos Hits =4>>
> >sDelay =280>>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 86 10000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 89 10001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >>
> >Nos Hits =9>>
> >sDelay =290>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 8C 10001100 >>
> >Nos Hits =5>>
> >sDelay =300>>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
> >Nos Hits =5>>
> >sDelay =310>>
> >1 40 01000000 90 10010000 3E 00111110 C0 11000000 C4 11000100 >>
> >Nos Hits =1>>
> >sDelay =320>>
> >Nos Hits =0>>
> >sDelay =330>>
> >Nos Hits =0>>
> >sDelay =340>>
> >Nos Hits =0>>
> >sDelay =350>>
> >Nos Hits =0>>
> >sDelay =360>>
> >Nos Hits =0>>
> >sDelay =370>>
> >Nos Hits =0>>
> >sDelay =380>>
> >Nos Hits =0>>
> >sDelay =390>>
> >Nos Hits =0>>
> >sDelay =400>>
> >Nos Hits =0>>
> >sDelay =410>>
> >Nos Hits =0>>
> >sDelay =420>>
> >Nos Hits =0>>
> >sDelay =430>>
> >Nos Hits =0>>
> >sDelay =440>>
> >Nos Hits =0>>
> >sDelay =450>>
> >Nos Hits =0>>
> >sDelay =460>>
> >Nos Hits =0>>
> >sDelay =470>>
> >Nos Hits =0>>
> >sDelay =480>>
> >Nos Hits =0>>
> >sDelay =490>>
> >Nos Hits =0>>
> >sDelay =500>>
> >Nos Hits =0>>
> >sDelay =510>>
> >Nos Hits =0>>
> >sDelay =520>>
> >Nos Hits =0>>
> >sDelay =530>>
> >Nos Hits =0>>
> >sDelay =540>>
> >Nos Hits =0>>
> >sDelay =550>>
> >Nos Hits =0>>
> >sDelay =560>>
> >Nos Hits =0>>
> >sDelay =570>>
> >>>
> >>>
> >-- >>
> >You are receiving this because you commented.>>
> >Reply to this email directly or view it on GitHub:>>
> >>
>
#8 (comment)>
>>
> —>
> You are receiving this because you authored the thread.>
> Reply to this email directly, view it on GitHub>
>
<#8 (comment)>,>
> or unsubscribe>
>
<https://github.com/notifications/unsubscribe-auth/AN4GHPRQBBTN2UUPRWB4P73RWIMKPANCNFSM4NYFFH7A>>
> .>
>>
>
>
-- >
You are receiving this because you commented.>
Reply to this email directly or view it on GitHub:>
#8 (comment)
|
Hi Rob
Thanks. I've been lucky really in that my employer is paying me in full for
my time off as i am shielding a child with special needs. Hope you are
enjoying your retirement and after years of teaching I am sure you need it.
I wish I had more time to tinker with the code and get more into the
details myself, I have done protocol analysis in the past but a child with
special needs means no real spare time.
Thanks for helping. I have most of a weather station up and running, but am
relying on weathermap for wind details at the minute. You can have a look
if you wish here:
weather.tregrillfarmcottages.co.uk user name is 'public' password is
'onholiday'. ignore the UV reading as it is totally wrong as the sensor is
impossible to calibrate once under a window, so I am trialling another
type. I have this duplicated at home but with historical graphs and more
analysis. The online version is on a Digital Ocean Server and at home it
runs a Raspberry Pi. The data is collected using a BMP680 and an old wired
rain sensor I had connected to a Particle Photon MCU and pulled from the
Particle cloud by Node Red (which I love) which does some processing and
filtering and sends it to an Influx db database, the visualisation is then
done in Grafana which natively supports Influxdb.
I have attached a text copy of your code.
Thanks
Paul
On Fri, 12 Jun 2020 at 13:28, Rob Ward ***@***.***> wrote:
The second byte is randomised each time reset is pressed to identify a
particular wind sensor in case you have two in close proximity. So it will
be any 8bit number.
Lovely to hear you are with you children. The virus is a pain, making
hardwork for many
Good luck,
Rob
(Hehe, retired teacher!!! I feel for you!!!).
Cheers, RobW
On 12 June 2020 10:24:05 pm AEST, pdbayes ***@***.***>
wrote:
>Thanks again Rob . I have a feeling I was only getting 5 bytes in the>
>weather script too, but I'll check. I will send the weather ino file
>as>
>text when I have a minute, I am home schooling 2 children so free time
>is>
>limited. A1 is the first byte your code looks for for the weather
>station>
>but I'm not sure about the second as documents I have looked over say
>94 or>
>95.>
>>
>On Fri, 12 Jun 2020, 13:18 Rob Ward, ***@***.***> wrote:>
>>
>> Delay 280 is giving>
>>>
>> 1>
>> 58 01011000>
>> 91 10010001>
>> 20 00100000>
>> F4 11110100>
>> 09 00001001>
>>>
>> 58 hex in OS reverse nibble is A1. Now I am away from home and can't
>check>
>> my code only on my phone, but I think that is station identification
>byte>
>> for the wind sensor. So I think that is good news. I am working from
>memory>
>> here. Check it in the program for me. It appears the Debug is only>
>> gathering the first five bytes. Wind packets have about 8 bytes I
>think>
>> (hazy memory).>
>>>
>> When you press reset on it the second byte after that should change,
>but>
>> then stay stable until reset or battery change.>
>>>
>> You appear to be getting reliable reception. Something to work with.
>I>
>> won't be back home until Tuesday next week. If you could attach the
>full>
>> weather station program as a .txt file for me I could check better
>what you>
>> could change.>
>>>
>> Rob>
>> Cheers, RobW>
>>>
>> On 12 June 2020 8:48:55 pm AEST, pdbayes ***@***.***>
>wrote:>
>> >On Fri, 12 Jun 2020 at 11:29, Rob Ward ***@***.***>>
>> >wrote:>>
>> >>>
>> >> The wind sensor repeats about every 14 seconds, so it should be
>able>
>> >to>>
>> >> get at least one burst in every now and then.>>
>> >>>>
>> >> Are you sure your receiver is wired up ok? If you put an LED >
>> >220ohm>>
>> >> resistor on the Tx output, and press reset on the wind sensor it>
>> >should>>
>> >> show z distinct burst of signal on the Rx straight away. Quite a
>few>
>> >people>>
>> >> who gave contacted me have found their Rx is the fault. I looked
>up>
>> >your Rx>>
>> >> and it looks very good quality. Maybe even your antenna needs>
>> >checking, a>>
>> >> simple whip of 170mm hook up wire is ok, especially at small>
>> >distances.>>
>> >>>>
>> >> Legally 433Mhz signals should only broadcast intermittent bursts.
>So>
>> >the>>
>> >> tank system should not swamp your Rx continually.>>
>> >>>>
>> >> Rob>>
>> >>>>
>> >> Cheers, RobW>>
>> >>>>
>> >> On 12 June 2020 7:07:44 pm AEST, pdbayes
***@***.***>>
>> >wrote:>>
>> >> >i think I also have an issue that we have 433mhz oil tank level>>
>> >> >sensors. If>>>
>> >> >the signal from them is strong then the AGC is doing to crank
>down>
>> >the>>>
>> >> >sensitivity and miss the Oregon bursts. Not sure how to deal
>with>>
>> >> >that.>>>
>> >> >>>>
>> >> >On Fri, 12 Jun 2020 at 00:19, Rob Ward
***@***.***>>>
>> >> >wrote:>>>
>> >> >>>>
>> >> >> H i Paul,>>>
>> >> >>>>>
>> >> >> Apologies for the delay in answering this. I am going to
>assume>
>> >you>>
>> >> >are>>>
>> >> >> trying to use ArduinoWeatherOS>>>
>> >> >> <https://github.com/robwlakes/ArduinoWeatherOS>. It is set up
>to>
>> >use>>>
>> >> >> multiple sensors and and to block any reporting until all the>>
>> >> >sensors>>>
>> >> >> have been "heard" and sensible data collected from them. If
>you>
>> >are>>
>> >> >only>>>
>> >> >> after the wind data you will be able to cut a lot out of the>>
>> >> >program.>>>
>> >> >> Check the lines in Red here, they do the blocking until all 3>
>> >main>>>
>> >> >> sensors have been heard.>>>
>> >> >>>>>
>> >> >> // Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips,>
>> >Ext>>>
>> >> >> temp, Int Temp, Int Pressure, Int Humidity>>>
>> >> >> intHumi = (double)dht.readHumidity(); //DHT22 readings>>
>> >> >%Humidity>>>
>> >> >> intTemp = (double)bmp.readTemperature(); //internal
>temperature>>>
>> >> >> intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to>
>> >mBar>>>
>> >> >> *//leave this check at 7 until the other readings are>
>> >stabilized**>>>
>> >> >> ** if ((scan&7)==7) { //scan==15 means all 4 readings>>
>> >> >now>>>
>> >> >> have a valid value, ready for output on Serial**>>>
>> >> >> * //Battery/Signal status, OR in the the four status values
>for>>
>> >> >the>>>
>> >> >> signal connections.>>>
>> >> >> logTemp ;>>>
>> >> >> if (logTemp>40){>>>
>> >> >> batStat = batStat | 1;>>>
>> >> >> }>>>
>> >> >> logWind ;>>>
>> >> >> if (logWind>40){>>>
>> >> >> batStat = batStat | 2;>>>
>> >> >> }>>>
>> >> >> logRain ;>>>
>> >> >> if (logRain>40){>>>
>> >> >> batStat = batStat | 4;>>>
>> >> >> }>>>
>> >> >> logUV ;>>>
>> >> >> if (logUV>40){>>>
>> >> >> batStat = batStat | 8;>>>
>> >> >> }>>>
>> >> >> logExp ;>>>
>> >> >> if (logExp>40){>>>
>> >> >> batStat = batStat | 16;>>>
>> >> >> }>>>
>> >> >> //reset the batStat to 0 every 24hours>>>
>> >> >> aday ;>>>
>> >> >> if (aday>1440){>>>
>> >> >> batStat=0;>>>
>> >> >> aday=0;>>>
>> >> >> }>>>
>> >> >> // Order: Battery Status, Quadrant, Wind Gust, Rainfall,>>>
>> >> >> Temperature, InternalTemp, Internal Pressure, Int Humidity,
>Solar>>
>> >> >Power,>>>
>> >> >> Lightning, UV Radiation>>>
>> >> >> Serial.print(batStat,DEC); //Send out the number to>>
>> >> >indicate>>>
>> >> >> if a sensor is not transmitting for maore than 20 mins. Low>
>> >Battery>>
>> >> >or>>>
>> >> >> other damage.>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(quadrant); //0-15 in 22.5 degrees steps>>
>> >> >clockwise>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not>>>
>> >> >> average windspeed (graphing over 10 samples gives Average)>>>
>> >> >> Serial.print(",");>>>
>> >> >> gustWindspeed = avWindspeed; //reset gust to average, then>>
>> >> >take>>>
>> >> >> the larger next reading>>>
>> >> >> Serial.print(rainTotal, 1); //currently considered to>>
>> >> >checked>>>
>> >> >> for a good calibration to mm>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(temperature, 2); // OS Temperature Centigrade>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intTemp, 2); //BMP085 temperature (used for>>>
>> >> >> compensation reading) Centigrade>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intPres, 2); //BMP085 pressure reading>>
>> >> >milli-bars>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intHumi); //Digital DHT22 seems better>>
>> >> >than>>>
>> >> >> the OS in Temp/Hum sensor % relative>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intSolar,DEC); //A reading from experimental>>>
>> >> >> Solar Power sensor>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intLightning,DEC); //A reading from the nos>>
>> >> >of>>>
>> >> >> Lightning Strikes>>>
>> >> >> Serial.print(",");>>>
>> >> >> Serial.print(intUV, DEC); //UV Sensor>>>
>> >> >> Serial.println();>>>
>> >> >>>>>
>> >> >> //Indicate the transmission of this one second data with a
>white>>>
>> >> >> light set up R B G!!>>>
>> >> >> digitalWrite(RedPin, 0); //White, all colours on, data>>
>> >> >has>>>
>> >> >> been logged to the Server>>>
>> >> >> digitalWrite(GrePin, 0);>>>
>> >> >> digitalWrite(BluPin, 0);>>>
>> >> >> *}*>>>
>> >> >> }>>>
>> >> >>>>>
>> >> >> If you remove that IF clause then it should at least begin>
>> >reporting>>>
>> >> >> your wind data and just the initialising defaults for the
>other>>
>> >> >sensors.>>>
>> >> >>>>>
>> >> >> Once you have that working you can owrk backwards to trim the>>
>> >> >program>>>
>> >> >> back to what you need for your project.>>>
>> >> >>>>>
>> >> >> Thank you for taking an interest in my project and
>communicating>
>> >with>>
>> >> >me>>>
>> >> >> about it.>>>
>> >> >>>>>
>> >> >> Best wishes,>>>
>> >> >>>>>
>> >> >> Rob>>>
>> >> >>>>>
>> >> >> On 8/6/20 6:34 pm, pdbayes wrote:>>>
>> >> >> >>>>
>> >> >> > Hi>>>
>> >> >> >>>>
>> >> >> > Excellent well documented project. I only have the
>anenometer>
>> >and>>
>> >> >want>>>
>> >> >> > to capture the data from that. I cannot seem to get any
>serial>>
>> >> >data>>>
>> >> >> > from it using your code except for the initial output. Were>
>> >would>>
>> >> >I>>>
>> >> >> > need to remove code to only collect data from the
>anenometer.>>>
>> >> >> >>>>
>> >> >> > Thanks>>>
>> >> >> >>>>
>> >> >> > Paul>>>
>> >> >> >>>>
>> >> >> > —>>>
>> >> >> > You are receiving this because you are subscribed to this>
>> >thread.>>>
>> >> >> > Reply to this email directly, view it on GitHub>>>
>> >> >> > <#8>,
>or>>>
>> >> >> > unsubscribe>>>
>> >> >> > <>>>
>> >> >>>>
>> >> >>>
>> >>>
>> >>
>>
>
https://github.com/notifications/unsubscribe-auth/ABWNZZOBJXJEKZGXZ4UGFLLRVSPDBANCNFSM4NYFFH7A
>
>> >>
>> >> >>>
>> >> >> >.>>>
>> >> >> >>>>
>> >> >> -->>>
>> >> >>>>>
>> >> >> *Rob Ward*>>>
>> >> >> Lake Tyers Beach, 3909>>>
>> >> >> Lake Tyers Beach Website <http://www.laketyersbeach.net.au>>>>
>> >> >> Ubuntu Mate - A great OS <https://ubuntu-mate.org/>>>>
>> >> >>>>>
>> >> >> —>>>
>> >> >> You are receiving this because you authored the thread.>>>
>> >> >> Reply to this email directly, view it on GitHub>>>
>> >> >>>>
>> >> ><>>
>> >>>
>> >>
>>
>
#8 (comment)
>
>> >>
>> >> >,>>>
>> >> >> or unsubscribe>>>
>> >> >>>>
>> >> ><>>
>> >>>
>> >>
>>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPRALH5DV5O4CVOVZSDRWFQ6NANCNFSM4NYFFH7A
>
>> >>
>> >> >>>>
>> >> >> .>>>
>> >> >>>>>
>> >> >>>>
>> >> >>>>
>> >> >-- >>>
>> >> >You are receiving this because you commented.>>>
>> >> >Reply to this email directly or view it on GitHub:>>>
>> >> >>>
>> >>>
>> >>
>>
>
#8 (comment)
>
>> >>
>> >>>>
>> >> —>>
>> >> You are receiving this because you authored the thread.>>
>> >> Reply to this email directly, view it on GitHub>>
>> >>>
>> ><>
>>
>
#8 (comment)
>
>> >,>>
>> >> or unsubscribe>>
>> >>>
>> ><>
>>
>
https://github.com/notifications/unsubscribe-auth/AN4GHPX6KAKEFGYH2RUK77LRWH7SPANCNFSM4NYFFH7A
>
>> >>>
>> >> .>>
>> >>>>
>> >>>
>> >Debug Manchester Version GIT-Hub V03>>
>> >Using a delay of 1/4 bitWaveform 200 uSecs 1/2 bitWaveform 400 uSecs
>>>
>> >Positive Polarity lo->hi=1>>
>> >10 bits expected for a valid header>>
>> >All bits inside the Packet>>
>> >80 initial timeout to detect wrong Polarity>>
>> >P 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05>
>> >AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 90 22223333>>
>> >sDelay =200>>
>> >Nos Hits =0>>
>> >sDelay =210>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 02 00000010 >>
>> >Nos Hits =3>>
>> >sDelay =220>>
>> >Nos Hits =0>>
>> >sDelay =230>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >Nos Hits =1>>
>> >sDelay =240>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >Nos Hits =6>>
>> >sDelay =250>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0D 00001101 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >Nos Hits =7>>
>> >sDelay =260>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 00 00000000 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 06 00000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 01 00000001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
>> >Nos Hits =8>>
>> >sDelay =270>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 03 00000011 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 82 10000010 >>
>> >Nos Hits =4>>
>> >sDelay =280>>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 86 10000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 89 10001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 0A 00001010 >>
>> >Nos Hits =9>>
>> >sDelay =290>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 05 00000101 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 5F 01011111 14 00010100 28 00101000 BB 10111011 8C 10001100 >>
>> >Nos Hits =5>>
>> >sDelay =300>>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 06 00000110 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 01 00000001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 07 00000111 >>
>> >1 58 01011000 91 10010001 20 00100000 F4 11110100 09 00001001 >>
>> >Nos Hits =5>>
>> >sDelay =310>>
>> >1 40 01000000 90 10010000 3E 00111110 C0 11000000 C4 11000100 >>
>> >Nos Hits =1>>
>> >sDelay =320>>
>> >Nos Hits =0>>
>> >sDelay =330>>
>> >Nos Hits =0>>
>> >sDelay =340>>
>> >Nos Hits =0>>
>> >sDelay =350>>
>> >Nos Hits =0>>
>> >sDelay =360>>
>> >Nos Hits =0>>
>> >sDelay =370>>
>> >Nos Hits =0>>
>> >sDelay =380>>
>> >Nos Hits =0>>
>> >sDelay =390>>
>> >Nos Hits =0>>
>> >sDelay =400>>
>> >Nos Hits =0>>
>> >sDelay =410>>
>> >Nos Hits =0>>
>> >sDelay =420>>
>> >Nos Hits =0>>
>> >sDelay =430>>
>> >Nos Hits =0>>
>> >sDelay =440>>
>> >Nos Hits =0>>
>> >sDelay =450>>
>> >Nos Hits =0>>
>> >sDelay =460>>
>> >Nos Hits =0>>
>> >sDelay =470>>
>> >Nos Hits =0>>
>> >sDelay =480>>
>> >Nos Hits =0>>
>> >sDelay =490>>
>> >Nos Hits =0>>
>> >sDelay =500>>
>> >Nos Hits =0>>
>> >sDelay =510>>
>> >Nos Hits =0>>
>> >sDelay =520>>
>> >Nos Hits =0>>
>> >sDelay =530>>
>> >Nos Hits =0>>
>> >sDelay =540>>
>> >Nos Hits =0>>
>> >sDelay =550>>
>> >Nos Hits =0>>
>> >sDelay =560>>
>> >Nos Hits =0>>
>> >sDelay =570>>
>> >>>
>> >>>
>> >-- >>
>> >You are receiving this because you commented.>>
>> >Reply to this email directly or view it on GitHub:>>
>> >>
>>
>
#8 (comment)
>
>>>
>> —>
>> You are receiving this because you authored the thread.>
>> Reply to this email directly, view it on GitHub>
>>
><
#8 (comment)
>,>
>> or unsubscribe>
>>
><
https://github.com/notifications/unsubscribe-auth/AN4GHPRQBBTN2UUPRWB4P73RWIMKPANCNFSM4NYFFH7A
>>
>> .>
>>>
>>
>>
>-- >
>You are receiving this because you commented.>
>Reply to this email directly or view it on GitHub:>
>
#8 (comment)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPWYJ52UKOEDC25B2JTRWINPJANCNFSM4NYFFH7A>
.
/*
Oregon Scientific Weather Station and Manchester Decoding, (reading by delay rather than interrupt)
Rob Ward 2015
This example code is in the public domain.
Use at your own risk, I will take no responsibility for any loss whatsoever for its deployment.
Visit https://github.com/robwlakes/ArduinoWeatherOS for the latest version and
documentation. Filename: MainWeather_09.ino
Main_Weather, 24 Dec 2017 (works with Protocol Version 3.0)
The aim of this version is use the new Manchester decoding routine and incorporate detection
of a Oregon compatible sensor built to cover novel environmental sensors.
For example we could have remote temperature sampling, bat detectors, lightning detectors,
solar power detectors, and earthquake detectors, all reporting back to the WWW server.
The advantage is that by using the Oregon Scientific Protocol a person can incorporate
their excellent weather sensors into the overall design and largely keep the Arduino Rx software
design relatively simple, ie also use their Manchester implementation for our own sensors.
It may seem this program is encouraging people to build their own replacements for the
Oregon Scientific sensors, however it is quite the reverse. The program is designed
encourage people to purchase the Oregon gear to get the basic wind, temperature, rain
and humidity sensors and then extend the range with original designs as suggested above.
If the Oregon sensors are not used, then it does not make sense to use their protocol,
and any RF other protocol could be as good, or maybe even better in some circumstances.
Before I discovered the Oregon products, and designed a receiver for it, I was seriously
considering building my own basic weather sensors. Now I am glad I did not try as the
quality and price of the Oregon sensors are a very good economic and reliable alternative.
Have we made the Oregon base station with the LCD redundant? Well no, not at all. I have
it in the kitchen and it used by members of the family from day to day and does not take
anything extra to have it performing a useful monitoring job as well. However if you want to
build a system that uses weather data, and combines that with other sensors, and then performs
other tasks such as switching pumps, or moving blinds then adding an Arduino based 433MHz Rx
makes an incredibly versatile platform to work with.
Have we made the Oregon USB to PC models redundant? Again no, unless you want to take a long time
writing your own logging and graphing routines. This program does not even begin to replace
that level of functionality.
Have we made the Anywhere OS Internet connection system redundant? Finally, again no!
This simple Arduino system does not report live to the internet and it would also take a lot
of effort to even go close to include the features of the OS internet connection system.
I would encourage anyone looking for a weather sensor based project to consider the Oregon
Scientific products as they produce a wide range of economically priced but solidly built
weather sensors. The mechanical engineering is very good and hard to replicate by the "Geek
in the Street". However the scope to extend the usefulness of this data in our designs, by
combining it with our own sensors (eg soil moisture, or dew point sensors) is truly amazing.
Have a look here: http://www.oregonscientificstore.com/
So get some OS gear, an Arduino and get into it :-)
NB: This program only works with Protocol 3.0 sensors.
Reference Material:
Thanks to these authors, they all helped in some way, especially the last one Brian!!!!
http://wmrx00.sourceforge.net/Arduino/OregonScientific-RF-Protocols.pdf (1)
http://jeelabs.net/projects/cafe/wiki/Decoding_the_Oregon_Scientific_V2_protocol (2)
https://github.com/phardy/WeatherStation (3)
http://lucsmall.com/2012/04/27/weather-station-hacking-part-1/ (4)
http://lucsmall.com/2012/04/29/weather-station-hacking-part-2/ (5)
http://lucsmall.com/2012/04/29/weather-station-hacking-part-2/ (6)
http://www.mattlary.com/2012/06/23/weather-station-project/(7)
https://github.com/lucsmall/WH2-Weather-Sensor-Library-for-Arduino (8)
http://www.lostbyte.com/Arduino-OSV3/ (9) [email protected]
Most of all thanks to Oregon Scientific, who have produced an affordable, high quality product.
I can now have my LCD Home Base in the kitchen to enjoy, with the Arduino in the garage also
capturing data for WWW Weather pages. Lovely!!!! http://www.oregonscientific.com
Very Highly recommended equipment. Rob Ward
The Oregon Scientific UV Detector UVN-800 has been added into to this code as a sensor.
It appears to have power problems and does not seem to connect as easy as the other sensors.
However I was foreced to buy it as I could not find a UV transparent material for a window
to use a cheaper Adafruit sensor (Analog UV Light Sensor Breakout-GUVA-S12SD). Otherwise
I was not able to protect the circuit.
SI1145 Digital UV Index / IR / Visible Light Sensor could also be useful as it reports SPI
and can actually give predicted UV levels by measuring Visible light and IR.
Special thanks to Darko in Italy who corrected an error when decoding negative temperatures. Grazie ragazzi!!!
The Future:
The Solar Power sensor (a silicon cell's open voltage under sunlight) has been added
A lightning strike detector has been added with nos of strikes per 45 seconds
*/
#include "DHT.h"
#include <Wire.h>
#include <Adafruit_BMP085.h>
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define DHTPIN 2 // what pin we're connected to
Adafruit_BMP085 bmp;
DHT dht(DHTPIN, DHTTYPE);
//Interface Definitions
int RxPin = 8; //The number of signal from the Rx
int ledPin = 13; //The number of the onboard LED pin
int RedPin = 7; //The Red LED, turn on for a valid Temp sensor packet
int GrePin = 6; //The Green LED, turn on for a valid Wind sensor packet
int BluPin = 5; //The Blue LED, turn on for a valid Rain sensor packet
// Variables for Manchester Receiver Logic:
word sDelay = 250; //Small Delay about 1/4 of bit duration try like 250 to 500
word lDelay = 500; //Long Delay about 1/2 of bit duration try like 500 to 1000, 1/4 1/2 = 3/4
byte polarity = 1; //0 for lo->hi==1 or 1 for hi->lo==1 for Polarity, sets tempBit at start
byte tempBit = 1; //Reflects the required transition polarity
byte discards = 0; //how many leading "bits" need to be dumped, usually just a zero if anything eg discards=1
byte discNos = 0; //Counter for the Discards
boolean firstZero = false; //has it processed the first zero yet? This a "sync" bit.
boolean noErrors = true; //flags if signal does not follow Manchester conventions
//variables for Header detection
byte headerBits = 15; //The number of ones expected to make a valid header
byte headerHits = 0; //Counts the number of "1"s to determine a header
//Variables for Byte storage
byte dataByte = 0; //Accumulates the bit information
byte nosBits = 0; //Counts to 8 bits within a dataByte
byte maxBytes = 9; //Set the bytes collected after each header. NB if set too high, any end noise will cause an error
byte nosBytes = 0; //Counter stays within 0 -> maxBytes
//Bank array for packet (at least one will be needed)
byte manchester[12]; //Stores manchester pattern decoded on the fly
//Oregon bit pattern, causes nibble rotation to the right, ABCDabcd becomes DCBAdcba
byte oregon[] = {
16, 32, 64, 128, 1, 2, 4, 8
};
byte csIndex = 0; //counter for nibbles needed for checksum
//Weather Variables
byte quadrant = 0; //used to look up 16 positions around the compass rose
double avWindspeed = 0.0;
double gustWindspeed = 0.0; //now used for general anemometer readings rather than avWindspeed
float rainTotal = 0.0;
float rainRate = 0.0;
double temperature = 0.0;
int humidity = 0;
double intTemp = 0;
double intHumi = 0;
double intPres = 0;
byte intSolar = 0; //eg Solar power
byte intLightning = 0; //eg Lightning Strikes
byte intUV = 0; //eg UV Light Levels
const char windDir[16][4] = {
"N ", "NNE", "NE ", "ENE", "E ", "ESE", "SE ", "SSE", "S ", "SSW", "SW ", "WSW", "W ", "WNW", "NW ", "NNW"
};
byte scan = 0; // &7!=0 means that all three sensors has been detected, so it reports all three with meaningful figures first up (not the latest addition though)
byte seconds = 0; // Counter to trigger the 60 seconds worth of data.
byte batStat = 0; // bit1= temp, bit2=wind bit3=rain, bit4=exp if true then that sensor has not been logged for 20 minutes, its battery probably getting flat
byte logTemp = 0; // Counter for number of minutes a sensor reading is missed
byte logWind = 0; // Counter for number of minutes a sensor reading is missed
byte logRain = 0; // Counter for number of minutes a sensor reading is missed
byte logUV = 0; // Counter for number of minutes a sensor reading is missed
byte logExp = 0; // Counter for number of minutes a sensor reading is missed
int aday = 0; // Counts the number of minutes in a day and clears battery status every 24hrs
void setup() {
Serial.begin(115200);
pinMode(RxPin, INPUT);
pinMode(ledPin, OUTPUT);
//Strobe colours in to indicate a reboot, TriColour LED is Common Anode, so requires active low to trigger.
pinMode(RedPin, OUTPUT);
pinMode(GrePin, OUTPUT);
pinMode(BluPin, OUTPUT);
//make the RGB LED flash a signature heartbeat on start up
digitalWrite(RedPin, 1);
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 0); //Flash Cyan
delay(1000);
digitalWrite(RedPin, 0);
digitalWrite(GrePin, 0); //Flash Yellow
digitalWrite(BluPin, 1);
delay(1000);
digitalWrite(RedPin, 0);
digitalWrite(GrePin, 1);
digitalWrite(BluPin, 0); //Flash Purple
delay(1000);
digitalWrite(BluPin, 1); //all off
digitalWrite(RedPin, 1);
delay(1000);
/*
// Enable these if attempting to debug the program or the circuit
Serial.println("Debug Manchester Version 18");
Serial.print("Using a delay of 1/4 bitWaveform ");
Serial.print(sDelay,DEC);
Serial.print(" uSecs 1/2 bitWaveform ");
Serial.print(lDelay,DEC);
Serial.println(" uSecs ");
if (polarity){
Serial.println("Negative Polarity hi->lo=1");
}
else{
Serial.println("Positive Polarity lo->hi=1");
}
Serial.print(headerBits,DEC);
Serial.println(" bits expected for a valid header");
if (discards){
Serial.print(discards,DEC);
Serial.println(" leading bits discarded from Packet");
}
else{
Serial.println("All bits inside the Packet");
}
Serial.println("D 00 00001111 01 22223333 02 44445555 03 66667777 04 88889999 05 AAAABBBB 06 CCCCDDDD 07 EEEEFFFF 08 00001111 09 22223333 0A 44445555");
*/
//Tutorial on using the BMP05 Press/Temp transducer https://www.sparkfun.com/tutorials/253
bmp.begin(); //start the barometer and temp packages
// Initialize Timer1 for a 1 second interrupt
// Thanks to http://www.engblaze.com/ for this section, see their Interrupt Tutorial
cli(); // disable global interrupts
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0; // same for TCCR1B
// set compare match register to desired timer count:
OCR1A = 15624;
// turn on CTC mode:
TCCR1B |= (1 << WGM12);
// Set CS10 and CS12 bits for 1024 prescaler:
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS12);
// enable timer compare interrupt:
TIMSK1 |= (1 << OCIE1A);
// enable global interrupts:
sei();
}
//Routine Driven by Interrupt, trap 1 second interrupts, and output every minute
ISR(TIMER1_COMPA_vect) {
seconds ;
if (seconds == 60) { //make 60 for each output
seconds = 0;
//Serial.print("One second ...");
usbData();//comment this out to temporarily disable data every minute for debug
}
} //end of interrupt routine
// Main routines, find header, then sync in with it, get a packet, and decode data in it, plus report any errors.
void loop() {
tempBit = polarity ^ 1;
noErrors = true;
firstZero = false;
headerHits = 0;
nosBits = 0;
maxBytes = 15; //too big for any known OS signal
nosBytes = 0;
discNos = discards;
manchester[0] = 0;
digitalWrite(ledPin, 0);
while (noErrors && (nosBytes < maxBytes)) {
while (digitalRead(RxPin) != tempBit) {
}
delayMicroseconds(sDelay);
if (digitalRead(RxPin) != tempBit) {
noErrors = false;
}
else {
byte bitState = tempBit ^ polarity;
delayMicroseconds(lDelay);
if (digitalRead(RxPin) == tempBit) {
tempBit = tempBit ^ 1;
}
if (bitState == 1) {
if (!firstZero) {
headerHits ;
if (headerHits == headerBits) {
//digitalWrite(ledPin,1);
}
}
else {
add(bitState);
}
}
else {
if (headerHits < headerBits) {
noErrors = false;
}
else {
if ((!firstZero) && (headerHits >= headerBits)) {
firstZero = true;
//digitalWrite(ledPin,1);
}
add(bitState);
}
}
}
}
digitalWrite(ledPin, 0);
}
void add(byte bitData) {
if (discNos > 0) {
discNos--;//discard bits before real data
}
else {
//the incoming bitstream has bytes placed in reversed nibble order on the fly, then the CS is done.
if (bitData) {
//if it is a '1' OR it in, others leave at a '0'
manchester[nosBytes] |= oregon[nosBits];//places the reversed low nibble, with hi nibble, on the fly!!!
}
//Oregon Scientific sensors have specific packet lengths
//Maximum bytes for each sensor must set once the sensor has been detected.
if (manchester[0] == 0xA2) {
maxBytes = 11; //rain
csIndex = 19;
}
if (manchester[0] == 0xA1) {
maxBytes = 10; //wind
csIndex = 18;
}
if (manchester[0] == 0xAF) {
maxBytes = 9; //temp
csIndex = 16;
}
if (manchester[0] == 0xAD) {
maxBytes = 8; //UV Light Detector
csIndex = 14; //CS byte begins at 14 nibble
}
if (manchester[0] == 0xA3) {
maxBytes = 10; //experimental, Solar,Strikes,UV
csIndex = 18; //CS byte begins at 18 nibble
}
nosBits ;
//Pack the bits into 8bit bytes
if (nosBits == 8) {
nosBits = 0;
nosBytes ;
manchester[nosBytes] = 0; //next byte to 0 to accumulate data
}
//Check the bytes for a valid packet once maxBytes received
if (nosBytes == maxBytes) {
//hexBinDump();
digitalWrite(ledPin, 1);
//Check Checksum first
if (ValidCS(csIndex)) {
//Process the byte array into Human readable numbers
analyseData();
}
noErrors = false; //make it begin again from the start
}
}
}
//Useful to invoke to debug the byte Array
void hexBinDump() {
//Serial.println("T A3 10100011 07 00000111 02 00000010 AA 10101010 F0 11110000 06 00000110 FF 11111111 07 00000111 33 00110011 60 01100000");
Serial.print("D ");
for ( int i = 0; i < maxBytes; i ) {
byte mask = B10000000;
if (manchester[i] < 16) {
Serial.print("0");
}
Serial.print(manchester[i], HEX);
Serial.print(" ");
for (int k = 0; k < 8; k ) {
if (manchester[i] & mask) {
Serial.print("1");
}
else {
Serial.print("0");
}
mask = mask >> 1;
}
Serial.print(" ");
}
Serial.println();
}
//Support Routines for Nybbles and CheckSum
// http://www.lostbyte.com/Arduino-OSV3/ (9) [email protected]
// Directly lifted, then modified from Brian's work. Now nybble's bits are pre-processed into standard order, ie MSNybble LSNybble
// CS = the sum of nybbles, 1 to (CSpos-1), then compared to CSpos nybble (LSNybble) and CSpos 1 nybble (MSNybble);
// This sums the nybbles in the packet and creates a 1 byte number, and this is compared to the two nybbles beginning at CSpos
// Note that Temp 9 bytes and anemometer 10 bytes, but rainfall uses 11 bytes per packet. (NB Rainfall CS spans a byte boundary)
bool ValidCS(int CSPos) {
boolean ok = false;
byte cs = 0;
for (int x = 1; x < CSPos; x ) {
byte test = nyb(x);
cs = test;
}
//do it by nybbles as some CS's cross the byte boundaries eg rainfall
byte check1 = nyb(CSPos);
byte check2 = nyb(CSPos 1);
byte check = (check2 << 4) check1;
/*
if (manchester[0]==0xA2){
Serial.print(check1,HEX); //dump out the LSNybble Checksum
Serial.print("(LSB), ");
Serial.print(check2,HEX); //dump out the MSNybble Checksum
Serial.print("(MSB), ");
Serial.print(check,HEX); //dump out the Rx'ed predicted byte Checksum
Serial.print("(combined), calculated = ");
Serial.println(cs,HEX); //dump out the calculated byte Checksum
//Serial.print(" "); //Space it out for the next printout
}
*/
if (cs == check) {
ok = true;
}
return ok;
}
// Get a nybble from manchester bytes, short name so equations elsewhere are neater :-)
// Enables the byte array to be indexed as an array of nybbles
byte nyb(int nybble) {
int bite = nybble / 2; //DIV 2, find the byte
int nybb = nybble % 2; //MOD 2 0=MSB 1=LSB
byte b = manchester[bite];
if (nybb == 0) {
b = (byte)((byte)(b) >> 4);
}
else {
b = (byte)((byte)(b) & (byte)(0xf));
}
return b;
}
//enable debug dumps if formatted data required
void analyseData() {
if (manchester[0] == 0xaf) { //detected the Thermometer and Hygrometer (every 53seconds)
scan = scan | 1;
logTemp = 0; //reset missing reads to zero
thermom();
//dumpThermom();
digitalWrite(RedPin, 0); //Temperature is Red
digitalWrite(GrePin, 1);
digitalWrite(BluPin, 1);
}
if (manchester[0] == 0xa1) { //detected the Anemometer and Wind Direction (every 14seconds)
scan = scan | 2;
logWind = 0;//reset missing reads to zero
anemom();
//dumpAnemom();
digitalWrite(RedPin, 1);
digitalWrite(GrePin, 0); //Wind is Green
digitalWrite(BluPin, 1);
}
if (manchester[0] == 0xa2) { //detected the Rain Gauge (every 47seconds)
scan = scan | 4;
logRain = 0;//reset missing reads to zero
rain();
//dumpRain();
digitalWrite(RedPin, 1);
digitalWrite(GrePin, 1);
digitalWrite(BluPin, 0); //Rain is Blue
}
if (manchester[0] == 0xad) { //detected the UV Light Sensor (every 73seconds)
scan = scan | 8; //not checked at the moment
logUV = 0;//reset missing reads to zero
UV();
//dumpUV();
digitalWrite(RedPin, 0);
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 1); //UV is Yellow
}
if (manchester[0] == 0xa3) { //detected an original Sensor designed by Us every 45 seconds!!!
//totally experimental
scan = scan | 8; //not checked at the moment
logExp=0;//reset missing reads to zero
totExp();
//This code is not used by the three sensors in the WMR86 product. It may clash with other
//other OS Sensors and a different value chosen in the Tx and then Rx
digitalWrite(RedPin, 0);
digitalWrite(GrePin, 1);
digitalWrite(BluPin, 0); //Experimental is Purple!!! or Magenta???
}
//Serial.println(scan,DEC);
eraseManchester();
}
//Calculation Routines
/*The following bit has been identified by Xander Zimmerman as a 'battery low' indicator
He used a variable voltage power supply to test signals from rainfall, temp/hum and anemometer eg
- no more messages: < 2.1 V
- switch to low < 2.6 V
- only 1 Bit used: Byte 4; Bit 6: high => Bat low (Nyb8, Bit 2)
This aligns with the nybble I suspected contained the Battery level indicator
However it does not tally with my experiments. However I used resistors to lower the voltage to the sensor,
rather than a precise and steady voltage. I am inclined to accept Xander's opinion here but reluctant
to change my present strategy of notification if the sensor is not detected at all for 20 minutes.
This strategy allows for instant collapse of the sensor whether it be low batteries, or the cold, or phyiscal damage
or the transmitter suddenly being shielded or a lightning strike or any other quick demise. The Oregon LCD base console
does not have icons that signal a low battery, or the absence of a signal. So if the "low battery" transmissions are
missed then the sensor can drop out before action is taken.
In the case of some batteries, I have them go "low" overnight when it has been very cold only to act normal again the next
day as the air temperature rose. Some sort of flag system in the server code would need to capture and reain that status.
However I am sure if you see value in using the "battery low" bit, then it will be easy enough to incorporate.
Xander is also a fan of http://www.openhab.org/ for organising his home systems and also https://github.com/wfrog/wfrog
for rendering the Oregon information into graphs etc.
*/
/* PCR800 Rain Gauge Sample Data:
// 0 1 2 3 4 5 6 7 8 9 A
// A2 91 40 50 93 39 33 31 10 08 02
// 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5
// 10100010 10010001 01000000 01010000 10010011 00111001 00110011 00110001 00010000 00001000 00000010
// -------- ------- bbbb--- RRRRRRRR 88889999 AAAABBBB CCCCDDDD EEEEFFFF 00001111 2222CCCC cccc
// byte(0)_byte(1) = Sensor ID?????
// bbbb = Battery indicator??? (7) My investigations on the anemometer would disagree here. (However check above for Xander's contribution).
// After exhaustive low battery tests these bbbb bits did not change
// RRRRRRRR = Rolling Code Byte
// 222211110000.FFFFEEEEDDDD = Total Rain Fall (inches)
// CCCCBBBB.AAAA99998888 = Current Rain Rate (inches per hour)
// ccccCCCC = 1 byte Checksum cf. sum of nybbles
// Message length is 20 nybbles so working in inches
Three tips caused the following
1 tip=0.04 inches or 1.1mm (observed off the LCD)
My experiment
Personally I don't like this value. I think mult by 25 and divide by 1000 IS closer to return mm directly.
0.127mm per tip??? It looks close the above. Again can't vouch 100% for this, any rigorous assistance would be appreciated.
Over the last 6 months this has proved to be Ok
*/
void rain() {
rainTotal = float(((nyb(18) * 100000) (nyb(17) * 10000) (nyb(16) * 1000) (nyb(15) * 100) (nyb(14) * 10) nyb(13)) * 25) / 1000.0;
//Serial.println((nyb(18)*100000) (nyb(17)*10000) (nyb(16)*1000) (nyb(15)*100) (nyb(14)*10) nyb(13),DEC);
rainRate = float(((nyb(8) * 10000) (nyb(9) * 1000) (nyb(10) * 100) (nyb(11) * 10) nyb(12)) * 25) / 1000.0;
//Serial.println((nyb(8)*10000) (nyb(9)*1000) (nyb(10)*100) (nyb(11)*10) nyb(12),DEC);
}
void dumpRain() {
Serial.print("Total Rain ");
Serial.print(rainTotal);
Serial.print(" mm, ");
Serial.print("Rain Rate ");
Serial.print(rainRate);
Serial.println(" mm/hr ");
}
//UVN800 UV Light Sensor
// D AD 10101101 87 10000111 41 01000001 AB 10101011 00 00000000 00 00000000 70 01110000 D3 11010011
// D AD 10101101 87 10000111 41 01000001 AB 10101011 00 00000000 0A 00001010 70 01110000 74 01110100
void UV() {
//maximum readings appear ot be about 130-140 units (not sure how they rate them)
intUV = int((nyb(9)*16) nyb(11));
}
void dumpUV() {
Serial.print("UV Level ");
Serial.println(intUV);
}
// WGR800 Wind speed sensor
// Sample Data:
// 0 1 2 3 4 5 6 7 8 9
// A1 98 40 8E 00 0C 70 04 00 34
// 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3
// 10100001 10011000 01000000 10001110 00000000 00001100 01110000 00000100 00000000 00110100
// -------- -------- bbbb---- NRRRRRRR xxxx9999 xxxxxxxx CCCCDDDD xxxxFFFF 0000---- CCCCcccc
// Av Speed 0.4000000000m/s Gusts 0.7000000000m/s Direction: N
// byte(0)_byte(1) = Sensor ID?????
// bbbb = Battery indicator??? (7) My investigations would disagree here. After exhaustive low battery tests these bits did not change
// NRRRRRRR = Rolling Code Byte, the N bit is set to 1 for 64 cycles to indicate it is reset or new to the Rx box
// 9999 = Direction
// DDDD.CCCC = Gust Speed (m per sec)
// 0000.FFFF = Avg Speed(m per sec)
// multiply by 3600/1000 for km/hr
// ccccCCCC = 1 byte checksum cf. sum of nybbles
// packet length is 20 nybbles
void anemom() {
//D A1 98 40 8E 08 0C 60 04 00 A4
avWindspeed = ((nyb(16) * 10) nyb(15)) * 3.6 / 10;
double gust = ((nyb(13) * 10) nyb(12)) * 3.6 / 10;
// after every minute, reset gustWindspeed to avWindspeed and then take the highest gust after that (approx4 readings a minute)
if (gust > gustWindspeed) {
gustWindspeed = gust;
}
quadrant = nyb(9) & 0xF;
}
void dumpAnemom() {
Serial.print("Av Speed ");
Serial.print(avWindspeed);
Serial.print(" km/hr, Gusts ");
Serial.print(gustWindspeed);
Serial.print(" km/hr, Direction: ");
Serial.print(quadrant);
Serial.print(" -> ");
Serial.println(windDir[quadrant]);
}
// THGN800 Temperature and Humidity Sensor
// 0 1 2 3 4 5 6 7 8 9 Bytes
// 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 nybbles
// 01011111 00010100 01000001 01000000 10001100 10000000 00001100 10100000 10110100 01111001 Bits
// -------- -------- bbbbcccc RRRRRRRR 88889999 AAAABBBB SSSSDDDD EEEE---- CCCCcccc -------- Explanation
// byte(0)_byte(1) = Sensor ID?????
// bbbb = Battery indicator??? (7), My investigations on the anemometer would disagree here. After exhaustive low battery tests these bits did not change
// RRRRRRRR = Rolling code byte
// nybble(5) is channel selector c (Switch on the sensor to allocate it a number)
// BBBBAAAA.99998888 Temperature in BCD
// SSSS sign for negative (- is !=0)
// EEEEDDDD Humidity in BCD
// ccccCCCC 1 byte checksum cf. sum of nybbles
// Packet length is 18 nybbles and indeterminate after that
// H 00 01 02 03 04 05 06 07 08 09 Byte Sequence
// D AF 82 41 CB 89 42 00 48 85 55 Real example
// Temperature 24.9799995422 degC Humidity 40.0000000000 % rel
void thermom() {
temperature = (double)((nyb(11) * 100) (nyb(10) * 10) nyb(9)) / 10; //accuracy to 0.1 degree seems unlikely
//The following line has been corrected by Darko in Italy, thank you, Grazie ragazzi!!!
if (nyb(12) == 8) { // Trigger a negative temperature
temperature = -1.0 * temperature;
}
humidity = (nyb(14) * 10) nyb(13);
}
void dumpThermom() {
Serial.print("Temperature ");
Serial.print(temperature);
Serial.print(" degC, Humidity ");
Serial.print(humidity);
Serial.println("% Rel");
}
//The novel added extra sensors, extracting and applying any necessary conversions
void totExp() {
//No complicated conversions required here
intSolar = byte(manchester[2]); //EG To apply a Solar Cell to the input?
intLightning = byte(manchester[3]); //EG Lightning Strikes
}
void dumpExp() {
Serial.print("Solar Power =");
Serial.println(intSolar, DEC);
Serial.print("Lightning Strikes =");
Serial.println(intLightning, DEC);
}
// Formating routine for interface to host computer, output once a minute once all three sesnors have been detected
void usbData() {
// Stn Id, Packet Type, Wind Quadrant, Wind Speed, Rain Tips, Ext temp, Int Temp, Int Pressure, Int Humidity
intHumi = (double)dht.readHumidity(); //DHT22 readings %Humidity
intTemp = (double)bmp.readTemperature(); //internal temperature
intPres = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar
//leave this check at 7 until the other readings are stabilized
if ((scan&7)==7) { //scan==15 means all 4 readings now have a valid value, ready for output on Serial
//Battery/Signal status, OR in the the four status values for the signal connections.
logTemp ;
if (logTemp>40){
batStat = batStat | 1;
}
logWind ;
if (logWind>40){
batStat = batStat | 2;
}
logRain ;
if (logRain>40){
batStat = batStat | 4;
}
logUV ;
if (logUV>40){
batStat = batStat | 8;
}
logExp ;
if (logExp>40){
batStat = batStat | 16;
}
//reset the batStat to 0 every 24hours
aday ;
if (aday>1440){
batStat=0;
aday=0;
}
// Order: Battery Status, Quadrant, Wind Gust, Rainfall, Temperature, InternalTemp, Internal Pressure, Int Humidity, Solar Power, Lightning, UV Radiation
Serial.print(batStat,DEC); //Send out the number to indicate if a sensor is not transmitting for maore than 20 mins. Low Battery or other damage.
Serial.print(",");
Serial.print(quadrant); //0-15 in 22.5 degrees steps clockwise
Serial.print(",");
Serial.print(gustWindspeed, 1); //Gust windspeed km/hr, not average windspeed (graphing over 10 samples gives Average)
Serial.print(",");
gustWindspeed = avWindspeed; //reset gust to average, then take the larger next reading
Serial.print(rainTotal, 1); //currently considered to checked for a good calibration to mm
Serial.print(",");
Serial.print(temperature, 2); // OS Temperature Centigrade
Serial.print(",");
Serial.print(intTemp, 2); //BMP085 temperature (used for compensation reading) Centigrade
Serial.print(",");
Serial.print(intPres, 2); //BMP085 pressure reading milli-bars
Serial.print(",");
Serial.print(intHumi); //Digital DHT22 seems better than the OS in Temp/Hum sensor % relative
Serial.print(",");
Serial.print(intSolar,DEC); //A reading from experimental Solar Power sensor
Serial.print(",");
Serial.print(intLightning,DEC); //A reading from the nos of Lightning Strikes
Serial.print(",");
Serial.print(intUV, DEC); //UV Sensor
Serial.println();
//Indicate the transmission of this one second data with a white light set up R B G!!
digitalWrite(RedPin, 0); //White, all colours on, data has been logged to the Server
digitalWrite(GrePin, 0);
digitalWrite(BluPin, 0);
}
}
void eraseManchester(){
for( int i=0; i < 15; i ){
manchester[i]=0;
}
}
|
I have checked out your site and it looks very impressive. Circular dials on digital machines is always a good challenge.
I haven't been able to edit the program in this firm on the phone. So next Tuesday will be the earliest I can look at it.
Being a teacher is a very hard job, but compassion was the dominant trait I found in the teachers I liked most. Getting kids to first love learning was the big challenge and then the topic came after that. I hope your child has appreciated your contribution in these difficult times. Students here are only just going back in reasonable numbers.
Let me know if you have made progress.
Cheers, RobW
|
Thanks Rob.
Rotary dials are easy in Grafana, someone else has done all the hard work,
you just have to get your data there.
My children do not want to do any home schooling. There are too many other
things in the house they would rather do. My eldest has severe mental
impairment and not being in the school environment and doing school work do
not go together in his brain, this causes major behaviour issues. All very
challenging. I am beginning to think the Checksum may be the issue, I'll
keep trying things until I get there. I think I have removed every thing
not needed just for the anenometer but haven't had time to try it yet.
I'll keep you posted.
…On Sat, 13 Jun 2020, 10:07 Rob Ward, ***@***.***> wrote:
I have checked out your site and it looks very impressive. Circular dials
on digital machines is always a good challenge.
I haven't been able to edit the program in this firm on the phone. So next
Tuesday will be the earliest I can look at it.
Being a teacher is a very hard job, but compassion was the dominant trait
I found in the teachers I liked most. Getting kids to first love learning
was the big challenge and then the topic came after that. I hope your child
has appreciated your contribution in these difficult times. Students here
are only just going back in reasonable numbers.
Let me know if you have made progress.
Cheers, RobW
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPUBBEF5SCEM7NNSLITRWM6T5ANCNFSM4NYFFH7A>
.
|
Hi Rob
Good news, it's working well. Bit sporadic at times but plenty of valid
results. I started from the original again and deleted everything I thought
I didn't need. I guess first time I did that I missed something and it was
blocking the dumping of data.
Next step is to move it to a WiFi enabled board and get the data into the
cloud.
It's great work you have done and I am grateful for your help. The debug
auto really helped find the optimal timings too.
Keep safe
Paul
…On Sat, 13 Jun 2020, 10:07 Rob Ward, ***@***.***> wrote:
I have checked out your site and it looks very impressive. Circular dials
on digital machines is always a good challenge.
I haven't been able to edit the program in this firm on the phone. So next
Tuesday will be the earliest I can look at it.
Being a teacher is a very hard job, but compassion was the dominant trait
I found in the teachers I liked most. Getting kids to first love learning
was the big challenge and then the topic came after that. I hope your child
has appreciated your contribution in these difficult times. Students here
are only just going back in reasonable numbers.
Let me know if you have made progress.
Cheers, RobW
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#8 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN4GHPUBBEF5SCEM7NNSLITRWM6T5ANCNFSM4NYFFH7A>
.
|
Cheers Paul,
So glad you are on top of it.
The Oregon Scientific is great year, I wish my designs were as good.
I hope that my software actually promotes their sales.
Best wishes,
Rob
Cheers, RobW
…On 14 June 2020 7:29:39 pm AEST, pdbayes ***@***.***> wrote:
Hi Rob>
>
Good news, it's working well. Bit sporadic at times but plenty of
valid>
results. I started from the original again and deleted everything I
thought>
I didn't need. I guess first time I did that I missed something and it
was>
blocking the dumping of data.>
Next step is to move it to a WiFi enabled board and get the data into
the>
cloud.>
It's great work you have done and I am grateful for your help. The
debug>
auto really helped find the optimal timings too.>
>
Keep safe>
Paul>
>
On Sat, 13 Jun 2020, 10:07 Rob Ward, ***@***.***> wrote:>
>
> I have checked out your site and it looks very impressive. Circular
dials>
> on digital machines is always a good challenge.>
>>
> I haven't been able to edit the program in this firm on the phone. So
next>
> Tuesday will be the earliest I can look at it.>
>>
> Being a teacher is a very hard job, but compassion was the dominant
trait>
> I found in the teachers I liked most. Getting kids to first love
learning>
> was the big challenge and then the topic came after that. I hope your
child>
> has appreciated your contribution in these difficult times. Students
here>
> are only just going back in reasonable numbers.>
>>
> Let me know if you have made progress.>
>>
>>
> Cheers, RobW>
>>
> —>
> You are receiving this because you authored the thread.>
> Reply to this email directly, view it on GitHub>
>
<#8 (comment)>,>
> or unsubscribe>
>
<https://github.com/notifications/unsubscribe-auth/AN4GHPUBBEF5SCEM7NNSLITRWM6T5ANCNFSM4NYFFH7A>>
> .>
>>
>
>
-- >
You are receiving this because you commented.>
Reply to this email directly or view it on GitHub:>
#8 (comment)
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi
Excellent well documented project. I only have the anenometer and want to capture the data from that. I cannot seem to get any serial data from it using your code except for the initial output. Were would I need to remove code to only collect data from the anenometer.
Thanks
Paul
The text was updated successfully, but these errors were encountered: