GPS LCD Data combining with Weather Station data

Print Friendly, PDF & Email

The two prior Posts learning can be added now  for developing a future “GPS based portable Weather Station” that may even be developed through from breadboard to perf board then PCB – if my old brain can handle getting there! It’s been an accidental development so far but very promising! Power is the issue – 3 sensors for the Nano USB 5V power to feed..? Hmmm..? May have to use the Uno in the final project. It could run off a 9V battery and charge via a portable solar panel…?
Here are the two current separate rigs:


You can’t run them both at the same time as the IDE sees the same Ser/USB ports in each sketch – maybe they will develop that in future?
For now, I just add the 3 wires of the DHT11 and bmp180 – A0, A4 and A5 to the GPS clock setup.
The Neo7 is already using SDA/SCL lines, so I don’t know if these will conflict in the Nano/library code even though the bmp180 is on A4 and A5 as SDL/SDA lines too…?
The Nano can handle feeding 5V to all 3 sensors, with PSU feeding 4V to the LCD.
Copying the DHT11 and bmp180 code sections into the GPS clock code works:
steve_station.ino

This gives tidy serialmon output. Dropped delays to 2 secs to speed up changes. Using my Alt and local pressure.
Note the alt diff of 10m between given and calculated alt because the pressure comes from the near sea level local station at Perrancoombe, Perranporth, Cornwall. They would have a higher local pressure than me, Perrancoombe being near sea level, practically. Their 1026.1 mb to my bmp180 absolute pressure of 1017.22 mb, so 9mb diff. Also I’m indoors in a greenhouse effect bedroom at least 5C warmer than outside temp.
I still don’t get why the Neo7 GPS data is so off showing 137m Alt compared to my phone App at 84 and other web data?
This can’t be a TinyGPS lib issue either, as that height is also given in ublox’s uCenter Windows software..Really annoying…unless the Neo7 is bad…? Which would you trust, web info/phone Apps or a sensor made in China..? Yet the lat/long is spot on..? Weird.Found this blog comment:
Re: Altitude GPS
#4
Sep 04, 2018, 04:20 pm Last Edit: Sep 04, 2018, 04:21 pm by jremington Altitude is much less well determined than horizontal position. Even under good conditions, horizontal position error might be +/-3 m, while altitude error could be +/-30 m and sometimes much worse. You might need to average values over an entire 24 hour period to get an accurate estimation of the altitude.
Local pressure and temp figures make a big diff to height too if you look at online calcs, and play with numbers, like:
https://www.mide.com/pages/air-pressure-at-altitude-calculator
15:52:43.151 -> Current humidity = 40.00% temperature = 26.00C
15:52:45.169 ->
15:52:45.169 -> provided altitude: 84 meters, 276 feet
15:52:45.202 -> temperature: 26.16 deg C, 79.09 deg F
15:52:45.235 -> absolute pressure: 1017.30 mb, 30.04 inHg
15:52:45.269 -> relative (sea-level) pressure: 1027.49 mb, 30.35 inHg
15:52:45.335 -> computed altitude: 74 meters, 244 feet
15:52:48.344 ->
15:52:48.344 -> Lat: 50.244876
15:52:48.344 -> Long: -5.262123
15:52:48.378 -> Alt: 449.15
15:52:48.378 -> Course: 349.20
15:52:48.411 -> Speed: 0.00
15:52:48.411 -> Date: 20/8/2019
15:52:48.477 -> Time: 14:52:42
15:52:50.562 -> Sats: 6
The next step is to get the new code with what data I want shown displayed in the LCD…

6/9/19: A much tidier code now.

Oops, forgot delay for bmp AbsPressure -its in the code above.
Just realised I need relative pressure, as bmp180 is very close to the weather stn value.
Here’s what SDA data looks like:


Next day:


Found out from www.rtl-sdr.com that the GPS ceramic antenna on the module are cap filtered (or not) to within 2MHz of GPS 1575 MHz freq and the module powers the appropriate active antennas, so a normal SDR aerial wont do! – :

So how is the pressure difference per meter working out?
I plotted 0m, 1m, 3m, 10m, 30m, 84m (me), and 100m ALTITUDE and loaded the program where 0m gives the bmp180 absolute pressure it is reading NOW, given those heights.
For figures at 25.7C:
0m – 1016.54 mb
1m – 1016.66 mb
3m – 1016.90 mb
10 m – 1017.77 mb
30m – 1020.18 mb
60m – 1023.89 mb
84m (me) – mb
100m – 1028.74 mb
This gives about 1028.74-1016.54 = 12.2 mb/100m or 0.122mb/m change in pressure with height.
For more accuracy you would use more decimals obviously, but a good rule of thumb = 0.1225/m.
It’s estimate of Relative Sea Pressure today then gives 1026.7 mb, and Perran Stn says:

Outside Temperature 19.3°C
Wind Chill 19.3°C
Heat Index 19.3°C
Dewpoint 16.2°C
Humidity 82%
Barometer 1025.5 mbar
Barometer Trend (3 hours) 0.1 mbar
Wind 1 mph from 255° (WSW)
Rain Rate 0.0 mm/hr
Inside Temperature 22.8°C
ET 0.0 mm
Solar Radiation 102 W/m²

Latitude: 50° 20.25′ N
Longitude: 005° 09.53′ W
Altitude: 20 meters
———————-
Subtract 20 x 0.1225 = 2.45 would make their sea level about  1025.5 + 2.45 = 1027.95.
A difference of only my 1026.7 RelSeaP to their RelSeaP cal’d of 1027.95 – 1026.7 =  1.25mb so about +/- 10m out depending on how accurate their elevation is stated and there is a 25-19C temp diff also..Weather can be very different too, 12 miles away. This is micro-climate Cornwall…!
So it’s clear what the complex log calc in the bmp180 datasheet, so the library, has to cater for, if you input alt in meters to your bmp180 and read it’s relative sea level pressure, then plot in Excel/Calc etc.:
Datasheet plot


To read the serial data from the IDE loaded prog in your linux term:
socat stdio /dev/ttyUSB0