WXLink - LoRa Wireless Data Link designed for the OurWeather kit, the WeatherRack and the WeatherBoard - Grove
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 WXLink?
The WXLink is a wireless LoRa link that can transmit up to 6000 meters in free air (you need a better antenna to go that far, like our Yagi antenna which has compatible connectors). 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 a WeatherRack westher sensor array to a Weather Board based system connected to an Arduino or Raspberry Pi computer. 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 comes preloaded with the software to support a WeatherRack and AM2315. See below for the source code. No soldering required.
The serial link is bi-Directional although the software currently just supports a uni-directional link.
This kit contains:
- Two Mini Pro LP Arduino Boards
- One DS3231 Real Time Clock
- One WXLinkWR Weather Rack Interface Board
- Two Grove 433MHz LoRa Boards
- 5 20 CM Cables
- Specification and Assembly Manual
- Receiver Software - https://github.com/switchdoclabs/SDL_Arduino_WXLink_LoRa_Rx
- Transmitter Software - https://github.com/switchdoclabs/SDL_Arduino_WXLink_LoRa_Tx
Wiring Diagram (no soldering!)
One of the inspirations for the WXLink 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.
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. More on this project in the next few weeks. Here is the complete project on a walkabout near the Spokane river. 433 meter (1,473 feet) range. Amazing for a little solar powered device!
Below is a picture of the Solar version of the WXLink.
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 DataThis data is from the Raspberry Pi DataLogger reading the 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 ----------- 32 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)