WSPR beacon


WSPR (pronounced « whisper ») stands for « Weak Signal Propagation Reporter ». It is a protocol, used for weak-signal radio communication. The protocol was designed, and a program written by Joe Taylor, K1JT. This project is a stand alone WSPR beacon complete  and a radio transmitter including low pass filters. The beacon, once configured, will run stand alone transmitting a WSPR sequence each even minute.

WSPR beacon features:

Arduino nano (atmega328P) based microcontroller :

  • Support Arduino IDE 1.0+ (OSX/Win/Linux)
  • Power via USB or External Source + 5v
  • Built-in USB
  • 2 I/O Pins (for GPS receiver)
  • Removable filter
  • AD9850 DDS
  • RTC DS3231
  • BS170 power amplifier 0.1W
  • Fit in Aluminium Instrument Box Enclosure Case 100x66x43
  • Status LED.
  • PCB available (f4goh at
  • diaporamas en français ici
  • wspr ebay links

1 Introduction

The idea is to learn how to build a transmitter without using an assembly ready to use. You will learn how to program a DDS, make filters and setting of the transmission frequency.

Main board description:

All the modules used

The wspr imposes a transmission every minute even. the simplest is to use a real-time clock instead GPS.

schema complet_bb
The transmitter can be wired on a breadboard
My last reports, not so bad with 0.1W


balise HF

schematics in hires

Two ways to use bs170:

– use QN (J2) DDS output and replace C7 capacitor by a strap. don’t put R3,C6,R4,L1, and left j8 open (this is the configuration i used). Adjust DDS 9850 trim to have a ~ « square wave » at the QN output. When transmission is OFF QN voltage should be 0V. Use any scope , you can find GND connection at PT5.

– use SINB(J2) and apply voltage polarization on BS170 gate. (put R3,C6,R4,L1 and strap J8) then apply analogWrite command on nano pin 6. (to adjust gain by software). if gain value is too high bs170 may be destroyed.

You can find a pad space to experiment your own stuff and change bs170 to another transistor.

J1 connector could be dedicated for GPS input. But it can be used for another things like external lowpass filter commutation.

Ds1820 is planned just for fun, to send temperature by RTTY or PSK modulation.

A PCB was made to facilitate a setting in box.

Where can I find the project files ?


2 I²C Bus:

I²C (Inter-Integrated Circuit), pronounced I-squared-C, is a synchronous, multi-master, multi-slave, packet switched, single-ended, serial computer bus invented in 1982 by Philips Semiconductor. I²C uses only two bidirectional open collector or open drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled up with resistors.[

The i²c bus saves microcontroler wires
Inside RTC DS3231
I²C logic analyzer with a saleae clone

3 How to program a DDS ?

We use serial data transmission bus (orange color pinout)
32 bits for DDS word and 8 bits for phase and control register
To find word dds, just apply a « rule of three »

4 WSPR symbol generation


Edit wspr.bat file : (find on my github or here)

WSPRcode « KB1GOH FN42 20 » > symbols.txt

  • change callsign
  • change locator
  • and finish by power (20 dBm for 0.1W)
  • save and run wspr.bat file
wspr.bat must be in the same directory as SWPRcode.exe

Edit symbols.txt file and select channel symbols


Replace space by comma using find and replace menu


paste symbols in wsprSimple.ino file

Paste on wsprSimple.ino, 162 elements generated previously
  • Copy the libraries into the directory C: \ Users \ [pc name] \ Documents \ Arduino \ libraries
  • Program the wsprSimple.ino file
  • Open the serial monitor, press the « h » key to update the clock in the following format: yy, m, d, h, m, s,
rtc adjust
Simple solution to update RTC

The program can be used with an oled display.

5 Build a low pass filter (40 meters, 7.2 Mhz)

  • use svcfilter designer
  • configure params as picture below
  • display responses
Adjust up or down as you want
let’s make some turns t30-2 (red) and ft37-43 for BS170 drain inductor

Use mini tore calculator software to check numbers of turns

and Check filter with a VNA analyser:

As you see, i use capacitors values i’ll found in my shack

I use separate PCB filter, like that, i could change to any HF band. If you always use one band, put the filter directly on the PCB.

6 Configure WSJT-X and beacon testing

Find wsjt-x on google
Download last version according to your OS
1 Setting menu
2 Configure your callsign and your Receiver
3 choose WSPR mode. Do NOT click Tx next, just listen your beacon.
Beacon signal must be on green selection (between 1400 and 1500 hertz on the waterfall)
if it doesn’t , adjust factor value

On transmission, the led should blink every 0.6 s

Set in box

Use 100x66x43 box

7 WSPR with GPS

Download last software :

Don’t forget to copy all libraries into myDocuments/Arduino/libraries folder


Check GPS Wiring on WSPR main board : (GPS must be TTL compatible 0/5V)

Use WSPR_Gps_encode.ino or WSPR_TinyGps_encode.ino software and configure your Callsign, power in dbm and GPS baudrate.


If debugDDS is enable, press w key on serial monitor to check locator calculation and TXing.


Change TX minutes in the time table (here is 9 txing per hour)


8 WSPR report web sites


Interested link form W3PM : Multifunction Project

9 Conclusion

It was a pleasure to study DDS and WSPR modulation. This project was designed essentially for makers. Adapt it as you want. I have made PSK, QPSK, RTTY, APRS modulation for AD9850 DDS since few year. I’ll write the software as soon as possible. If you have any questions : f4goh at


630 m WSPR TX by F1FPL


One BS170 on the main board (L3 inductor drain was 1mH) and change C10 by 470nF



WSPR beacon by TED G3WBB with removable filters

0.1 Watt TX
ON7UF Roland

WSPR beacon

17 réflexions sur “WSPR beacon

  1. Hello Anthony, I like it!

    One question for you : could you please explain why you put the filter after the small PA, and not before the PA? What is the advantage of doing like this?
    Thanks for your answer.


  2. Stéphane Lacroix dit :

    Excellent job. Thanks for the time you passed on it. Very clear description from beginning to end of project and well detailed.


  3. F5BCB dit :

    Those who build the beacon using the circuit board must change the LED pin
    Replace « #define LED 2 » with « #define LED 8 »


    1. for L4 and L5 i use t30-2 red for 40m and t30-2 blue for 80m.

      the drain inductor is L3 ft37-43.

      pictures on web site.

      for L2 i use a vk200. it is for blocking HF on VCC.

      if you don’t have it just few turns on ferrite


  4. Ted Avery dit :

    Anthony.. many thanks for all your hard work on this project and for answering my questions succinctly. It’s been working for many months now on three bands with different antennas and good results.
    Happy new year.
    Ted G3WBB


Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:


Vous commentez à l’aide de votre compte Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s