If you have been following my adventures, specifically with the Etherkit OpenBeacon, you will know that I was investigating a method of triggering WSPR transmissions without leaving it attached to a computer. My requirements were that it be Arduino based, since I am learning about that as well, and have a very stable time source as necessitated by WSPR.
The available options for stable time sources in the Arduino time library include NTP, RTC, and GPS sources, I decided to go a different direction!
While investigating time sources I ran across the WWVBClock Project on Github and thought WWVB would make an interesting time source for this project. The first step was to find a receiver, which are far less common from online shops than I expected, but I was able to find one at my local Wal-Mart in the form of a self setting alarm clock for the reasonable cost of $10.
As soon as I got home I opened it up to ensure that the module was not integrated into the main PCB as that would be of little use and to my delight it was a separate unit as shown below. It is the module on the left hand side of the larger PCB and the antenna is located at the top. A pair of cutters and one minute later, I had a WWVB receiver module.
Locating a datasheet for the module proved a little challenging, but I was able to locate the datasheet for IC used on the module, which is located here.
Having all of the necessary information, it was time to start playing. I breadboarded all of the components as show in the schematic and started hacking apart the code from the WWVB Clock Project.
My initial plan was to use the WWVB receiver and the Arduino time library to set the internal clock with hopes that it would keep accurate time when a WWVB signal wasn’t available. This proved to be a lost cause as it was 4 seconds behind after 90 minutes without a WWVB signal, far beyond the 2 seconds of accuracy required by WSPR.
The second, and current implementation, only transmits when a WWVB signal is available to guarantee accurate timing. The code by default will transmit at 4 minute intervals, but this value is configurable by manipulating the triggerInterval variable. During normal operations the code displays, via the serial port, each time an output signal is sent, enabling you to not only track transmissions, but also the availability of the WWVB signal in your area.
Here are the spots as reported on WSPR for the last 24 hours all of which have been triggered by this project.
This project has been a lot of fun and works quite well! A WWVB signal is consistently available here in Central Arkansas, in the Central time zone, from about 7PM through the 10AM, honestly much more than I expected. The code for the project is available on Github, so feel free to use it and experiment!