Open Arduino IDE, go to "Tools" -> "Board", then select "Arduino Nano".
Connect the device to your computer via USB cable. Then, in the "Tools" -> "Port" menu, select the corresponding COM port.
After assembling the device, you can upload firmware for testing the hardware.
Note
This is an optional step, you can skip it. I recommend using this firmware if you encounter issues with the device's functionality when using the main wspr-beacon firmware.
This firmware checks the correctness of the LEDs initialization (visual inspection), SI5351 IC initialization, the correctness of the serial connection with the GPS module, and GPS data synchronization.
To get a report on the hardware functionality, upload the firmware, open the "Tools" -> "Serial Monitor" in the Arduino IDE, and turn on the device.
An example of an hardware test report:
By default, the SI5351 uses address 0x60 on the I2C bus. If necessary, you can change the I2C address of the SI5351 according to the datasheet of your instance:
#define SI5351_I2C_ADDRESS 0x60
For correct operation of the device you need to calibrate the SI5351 to calculate the difference between the uncalibrated actual frequency and the nominal output frequency.
Note
By default, the sketch for calibrating the SI5351 is set to operate with an output frequency of 10 MHz. If you do not have equipment that can operate at this frequency, you can use an SDR receiver like RTL-SDR.COM and a modified calibration sketch by changing the operating frequency to 28 MHz.
Upload this sketch into the device and perform the calibration. Calibration is performed once for each pair of SI5351 and TCXO. The resulting calibration value must be changed in the wspr-beacon-1.1.ino file:
#define SI5351_CAL_FACTOR 2000
Uncomment the line with the band on which you want to perform the WSPR message transmission:
// WSPR center frequency in Hz
// #define WSPR_DEFAULT_FREQ 137500ULL // 0.1375 MHz - 2200m
// #define WSPR_DEFAULT_FREQ 475700ULL // 0.4757 MHz - 600m
// #define WSPR_DEFAULT_FREQ 1838100ULL // 1.8381 MHz - 160m
// #define WSPR_DEFAULT_FREQ 3570100ULL // 3.5701 MHz - 80m
// #define WSPR_DEFAULT_FREQ 5288700ULL // 5.2887 MHz - 60m
// #define WSPR_DEFAULT_FREQ 7040100ULL // 7.0401 MHz - 40m
// #define WSPR_DEFAULT_FREQ 10140200ULL // 10.1402 MHz - 30m
// #define WSPR_DEFAULT_FREQ 14097100ULL // 14.0971 MHz - 20m
// #define WSPR_DEFAULT_FREQ 18106100ULL // 18.1061 MHz - 17m
// #define WSPR_DEFAULT_FREQ 21096100ULL // 21.0961 MHz - 15m
// #define WSPR_DEFAULT_FREQ 24926100ULL // 24.9261 MHz - 12m
#define WSPR_DEFAULT_FREQ 28126100ULL // 28.1261 MHz - 10m
// #define WSPR_DEFAULT_FREQ 50294500ULL // 50.2945 MHz - 6m
// #define WSPR_DEFAULT_FREQ 144490000ULL // 144.4900 MHz - 2m
Note
At this step you select the center frequency. Each transmission cycle is performed at a randomly selected frequency within a range of +/- 100 Hz from the center frequency.
Enter your amateur radio call sign to generate a correct WSPR message:
#define WSPR_CALL "XX0YYY"
There is no need to specify your QTH locator, it will be calculated automatically by void setQTHLocator() function based on actual GPS data.
Click the "Upload" button in the Arduino IDE to compile and upload firmware to the device.