WSPR beacon

dav

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 orange.fr)
  • 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:

syno
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
reports_wspr
My last reports, not so bad with 0.1W

Schematics:

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.

pcb
A PCB was made to facilitate a setting in box.

Where can I find the project files ?

github
https://github.com/f4goh/WSPR

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.[

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

3 How to program a DDS ?

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

4 WSPR symbol generation

enc-wspr

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_gen
wspr.bat must be in the same directory as SWPRcode.exe

Edit symbols.txt file and select channel symbols

wspr_symbols

Replace space by comma using find and replace menu

wspr_replace

paste symbols in wsprSimple.ino file

enc-wspr-3
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
filter1
http://tonnesoftware.com/svcdownload.html
filter2
Adjust up or down as you want
dav
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:

filter3
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

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

On transmission, the led should blink every 0.6 s

Set in box

dav
Use 100x66x43 box

7 WSPR with GPS

Download last software :

https://github.com/f4goh/WSPR/archive/master.zip

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

dav

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

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

wspr_gps_config

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

wspr_gps_monitor

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

wspr_time_table

8 WSPR report web sites

wspr_web1
wsprnet.org
wspr_web2
wspr.aprsinfo.com
wspr_web3
wspr.fggs.de
wspr_web4
wspr.vk7jj.com

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 orange.fr

on6fs
ON6FS Freddy WSPR BOARD

630 m WSPR TX by F1FPL

tx-630m

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

tx-630m-schema


http://www.f6ciu.com/

630m WSPR BEACON by F6CIU

WSPR beacon by TED G3WBB with removable filters

0.1 Watt TX
ON7UF Roland

WSPR beacon

22 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.

    J’aime

  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.

    J’aime

  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 »

    J’aime

    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

      J’aime

  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.
    Regards
    Ted G3WBB

    J’aime

  5. TESTE Jean-Francois dit :

    Bonjour,
    Je voulais recompiler le projet (qui fonctionnait parfaitement il y a 3 ans) en utilisant le dernier IDE (2.0.3) et j’ai un échec :
    « Compilation error: ‘RTC’ was not declared in this scope »

    Pour quelle raison ?

    73
    Jeff, F5BCB

    J’aime

      1. Jeff dit :

        J’ai tenté avec l’IDE 1.8.13 et j’ai le même problème .
        Problème de librairies sans doute.
        73
        Jeff

        J’aime

Laisser un commentaire