The code will produce a status output via a serial link to a PC, which can be observed in a 'Serial Monitor' window in the Arduino IDE or which can be seen on a small OLED display the code controls via I2C.
The sketch ESP-12-Beacon.ino operates the m0xpd / Kanga ESP8266 - AD9834 board as a multi-mode beacon controller.The system will need access to your WiFi network (to get the time and - in so doing - demonstrate the WiFi functionality of the board).
The board will generate an RF signal (on any of the HF bands), which encodes WSPR, FSKCW and (QRQ) CW beacon messages, derived from personal details which you store in the software. On delivery, it is set to operate on 40m.
You must provide an amplifier to transmit the signal - the system is intended for use with the m0xpd / Kanga Tx shield, which simply plugs on top of the board, but you're encouraged to experiment with your own ideas for other transmitters.
Before you can compile and run this code, you will need to:
ESP-12-Beacon requires that your IDE has several libraries installed before compilation can be completed. These include:
The Adafruit libraries should be installed using the Library Manager (Sketch / Include Library / Manage Libraries).
which will open a list of libraries available for downoad - amongst which are the Adafruit libraries, such as the GFX graphics core, seen here:
The time libraries can be downloaded from here or they are available on the software page in the zipped folder 'Time-master'. Simply place the (un-zipped) Time-master folder in your /Arduino/libraries/ folder.
The WsprMessage class is distributed with the ESP-12-Beacon.ino sketch (in the files WsprMessage.h and WsprMessage.cpp). You should see these files as two tabs in the IDE, next to the ESP-12-Beacon source file if everything is set up correctly...
Personalize the Beacon
Before you use the beacon code, you'll need to personalize the message details to include your call, locator (six digit) and your WiFi network login details.
The code will use your callsign in the WSPR, FSKCW and CW messages - these could be different, so the code asks for your call three times (allowing you to send e.g. "g4esp/beacon" as your (QRQ) CW message and "g4esp" as the other two QRS messages - with apologies to anybody with the call 'g4esp')
The code will access your WiFi network to get the time - and to keep track of the correct time - so it needs your network ssid and password.
The WSPR message also includes information about transmitted power. The code has set this to 27dBm ( reflecting the power output expected with the m0xpd / Kanga Tx Shield) - you should change this if you're using anything significantly different.
As delivered, the code sets the beacon to transmit on default 40m frequencies for WSPR and the other QRSS modes. You may wish to alter the transmit frequencies to find a free spot on the grabbers.
Using the Beacon Code
Once you have the libraries in place and have set the personal data, you can compile, upload and test the code.
Try it first without a transmitter, monitoring for the correct operation of the timing framework (via the status reports on the serial outputs to a Serial Monitor window opened in the Arduino IDE or via the OLED display), presence of RF at the expected frequency at the DDS output and correct operation of the Tx keyline (D13).
The OLED display requires ground and (3v3) power lines and two connections for the I2C interface. These are detailed on the hardware page and one possible connection is shown below:
When you are happy the controller is working correctly, connect it a suitable PA and low pass filter and try the system on-air.
Here are the WSPR spots accumulated over 24 hours (to 09:00) on 23 November 2016, using the m0xpd / Kanga Tx Shield, reaching Luis, wp4mlx in Puerto Rico...
and here is the FSKCW signal, seen at Mikael, SA6BSS' QRSS Grabber in Sweden (JO68sc) at 08:25 (in the red box) and 08:35 (in the dashed red box)...
and here is a 24 hour average of 15-minute segments (a 'stack') of the signal (courtesy of Mikael on the KnightsQRSS mail list) ...
The ESP-12-Beacon code is intentionally basic.
You might like to explore how it can be developed, particularly to exploit 'Internet of Things' functionality such as location, remote control, etc.