OurWeather Extender Solar WXLink LoRa - Wireless Data Link



OurWeather Extender Solar WXLink LoRa - Wireless Data Link

NOTE:    The unit is shipped with a simple wire antenna on each LoRa transceiver.  This is good (depending on your environment, walls, etc) to about 30m.   Above 30m you may want to consider another antenna (although test it first.  You may be OK!) such as our Yagi Antenna.   You can add a Yagi at both ends to really blow out the range.   6000 meters or even further depending on the height of the antenna and environment.  You need to try it and see.

What is the OurWeather Extender Kit Solar WXLink LoRa?

The Solar WXLink is a solar powered wireless serial link that can transmit up to 6000 meters in free air, with the proper antenna (like our Yagi Antenna product). It is designed to connect up to any source of data from sensors connected to the Mini Pro LP Arduino compatible low power computer board. It was specifically designed to connect an WeatherRack weather sensor array and an AM2315 to a OurWeather Weather Kit. The receiver is read by the host computer through an I2C interface. Much easier and more available than a serial interface. And yes, it has Grove connectors throughout the system. The WXLink LoRa comes preloaded with the software to support a WeatherRack and AM2315 on the transmit side and OurWeather V031 and above supports the receiver. See below for the source code. No soldering required.

This design uses SunAirPlus which collects (and transmits the information back to the weather station) information on the power system (Solar Panel Voltage/Current, Load Voltage/Current, Battery Voltage/Current). A GREAT science project! Lots of data.

The serial link is bi-Directional although the software currently just supports a uni-directional link.

This kit contains:

  • Two 16MHz Mini Pro LP Arduino Boards
  • One DS3231 Real Time Clock
  • One WXLinkWR Weather Rack Interface Board
  • Two Grove 433MHz LoRa boards
  • 5 20 CM Grove Cables
  • SunAirPlus Solar Panel Controller / Data Collector (includes Pin Header to Grove Plug Cable)
  • USB Cable from SunAirPlus to Mini Pro LP Rx Arduino Board
  • Two 330mA/6V Solar Panels with JST-2 Plug for SunAirPlus


(Note: The second Solar Panel is for those locations with more than average cloud cover. It is optional to install. If you wish to install it, you will need to solder two wires from the positive (+) on one solar panel to the positive (+) on the other panel and the negative (-) on one solar panel to the negative (-) on the second panel as in the picture below.).


Or you can buy the inexpensive Multi Solar Panel Connector (for up to four panels).




 On OurWeather

Wiring Diagram



One of the inspirations for the WXLink LoRa was the previous kickstarter we did, "The Weather Board for the Raspberry Pi". One of the devices that the Weather Board connects to is the SwitchDoc Labs WeatherRack wind and rain sensor.

WeatherRack Wind and Rain SensorWeatherRack Wind and Rain Sensor

The issue is sometimes you don't want to run a wire all the way from the Weather Station to the wind and rain sensor. Like all the time. So, using the Mini Pro LP, we build a solar powered WeatherRack reader and then we use a transmitter to send it back to the station inside the lab. Did it on an average power of less than 5mA which made solar power easy to add. No power. No wires.   With A Yagi antenna on both ends, the range should be about 6000m or 6km.


Receiver Condition

Maximum Transmitter Distance

Behind 3 Interior / 1 Exterior Wall

220 meters / 720 feet

Behind 1 Exterior Wall

438 meters / 1437 feet

Yagi Antenna on Transmitter

1600 meters / 5200 feet

Solar Powered Mini Pro LP on a WalkaboutSolar Powered Mini Pro LP on a Walkabout. We have now boxed up the WXLink and it is out in the Sun. Running perfectly.


Below is a picture of the Solar version of the WXLink.



ResultsScreen Shot 2016-08-17 at 3.48.00 PM

We have been running the Mini Pro LP on solar power for over a week now. It is working perfectly for 5 days now. Not a single reboot. We have an external WatchDog Timer (see tutorial: http://www.switchdoc.com/2014/11/reliable-projects-watchdog-timers-raspberry-pi-arduinos/ ) installed to protect the system from brownouts (which we tested before we took the system outside). The data is great. This graph shows two days (captured by the Rx part of the WXLink with Mini Pro LP) and using the Raspberry Pi Datalogger to store and generate graphs (see tutorial: http://www.switchdoc.com/2016/06/datalogger-measuregraphlog-current-raspberry-pi/ ). You can see from these graphs the the battery on board is fully charged (when that happens SunAirPlus turns the charging circuitry off to protect the battery and the solar panel voltage climbs from 5V to about 7V. It turns on a bit during the day when the battery has discharged a bit again. The data from the last message is shown below the graph.

Latest Data

This data is from the Raspberry Pi DataLogger reading the Solar OurWeather WXLink. Block diagram and description below.
query= (SELECT timestamp, deviceid, Outdoor_Temperature, OutDoor_Humidity, Battery_Voltage, Battery_Current, Solar_Panel_Voltage, Solar_Panel_Current,  Load_Current, id FROM WXLINKTable ORDER BY id DESC LIMIT 2000) ORDER BY id ASC
('count of t=', 2000)
------WXLINKGraphPower finished now
readWXLINKData - The time is: 2016-08-17 16:52:52.423661-07:00
block 1
0xab 0x66 0x1 0xf9 0x71 0x53 0x13 0xe 0x1 0x33 0x33 0xb3 0x3f 0x23 0x0 0x0 0x0 0x7 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x30 0x42 0xcd 0xcc 0x3c
block 2
0x41 0xcb 0xa1 0x85 0x40 0x0 0x0 0xa0 0xc1 0x66 0x66 0xb6 0x41 0xf4 0xfd 0x94 0x40 0x66 0x66 0x5e 0x42 0x0 0x0 0x0 0x0 0x3e 0x3c 0x0 0x0 0x12 0xf1 0x0
header = ab 66
protocol = 1
timeSinceReboot = 324235769
windDirection = 270
averageWindSpeed =   1.40
windClicks = 35
totalRainClicks = 7
maximumWindGust =   0.00
outsideTemperature =  44.00
outsideHumidity =  11.80
batteryVoltage =   4.18
batteryCurrent = -20.00
loadCurrent =  22.80
solarPanelVoltage =   4.66
solarPanelCurrent =  55.60
auxA =   0.00
messageID = 15422
checksumHigh =0xf1
checksumLow =0x12
Tick! The time is: 2016-08-17 23:52:52.440441
writing SQLdata 
lastMessageID = 15420
query=INSERT INTO WXLINKTable (TimeStamp , deviceid , Protocol, Outdoor_Temperature , Outdoor_Humidity , Indoor_Temperature , Barometric_Pressure , Current_Wind_Speed , Current_Wind_Clicks , Current_Wind_Direction , Rain_Total_Clicks , Battery_Voltage , Battery_Current , Load_Current , Solar_Panel_Voltage , Solar_Panel_Current , MessageID , Time_Since_Reboot , AuxA) VALUES(CONVERT_TZ(UTC_TIMESTAMP(),"+00:00","-07:00"), 0, 1, 44.000, 11.800, 0.000, 0.000, 1.400, 35, 270, 7, 4.176, -20.000, 22.800, 4.656, 55.600, 15422, 324235769, 0.000)