Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
Raspberry Pi Bareback LF/MF/HF/VHF WSPR Transmitter Makes a very simple WSPR beacon from your RasberryPi by connecting GPIO port to Antanna (and LPF), operates on LF, MF, HF and VHF bands from 0 to 250 MHz. In order to transmit legally, a HAM Radio License is REQUIRED for running this experiment. How to Use ========== 0) Install Raspbian (12) 1) Follow the instructions given in INSTALL to build and install the software 2) Connect bandpassfilter and antenna (cf. below) 3) Calibrate (cf. below) Filter and Antenna ================== Connect a low pass filter (9) to the PINs (2,11) 7 and 9 as described in wiring.png. The expected power output is 10mW (+10dBm) in a 50 Ohm load. This looks neglible, but when connected to a simple dipole antenna this may result in reception reports ranging up to several thousands of kilometers. DO NOT expose GPIO4 to voltages or currents that are above the specified Absolute Maximum limits. GPIO4 outputs a digital clock in 3V3 logic, with a maximum current of 16mA. As there is no current protection available and a DC component of 1.6V, DO NOT short-circuit or place a resistive (dummy) load straight on the GPIO4 pin, as it may draw too much current. Instead, use a decoupling capacitor to remove DC component when connecting the output dummy loads, transformers, antennas, etc. DO NOT expose GPIO4 to electro- static voltages or voltages exceeding the 0 to 3.3V logic range; connecting an antenna directly to GPIO4 may damage your RPi due to transient voltages such as lightning or static buildup as well as RF from other transmitters operating into nearby antennas. Therefore it is RECOMMENDED to add some form of isolation, e.g. by using a RF transformer, a simple buffer/driver/PA stage, two schottky small signal diodes back to back. Power Supply ============ As the Raspberry Pi does not attenuate ripple and noise components from the 5V USB power supply, it is RECOMMENDED to use a regulated supply that has sufficient ripple supression. Supply ripple might be seen as mixing products products centered around the transmit carrier typically at 100/120Hz. Software Description ==================== This software is using system time to determine the start of a WSPR transmissions, so keep the system time synchronised within 1sec precision, i.e. use NTP network time synchronisation or set time manually with date command. A WSPR broadcast starts on even minute and takes 2 minutes for WSPR-2 or starts at :00,:15,:30,:45 and takes 15 minutes for WSPR-15. It contains a callsign, 4-digit Maidenhead square locator and transmission power. Reception reports can be viewed on Weak Signal Propagation Reporter Network (10). Usage ===== sudo ./wspr <[prefix/]callsign[/suffix]> <locator> <power in dBm> [<frequency in Hz> ...] e.g.: sudo ./wspr PA/K1JT JO21 10 7040074 0 0 10140174 0 0 where 0 frequency represents a interval for which TX is disabled, wspr-2 or wspr-15 mode selection based on specified frequency. WSPR Frequencies (1) ==================== WSPR is used on the following frequencies (local restriction may apply): LF 137400 - 137600 137600 - 137625 (WSPR-15) MF 475600 - 475800 475800 - 475825 (WSPR-15) 160m 1838000 - 1838200 1838200 - 1838225 (WSPR-15) 80m 3594000 - 3594200 60m 5288600 - 5288800 40m 7040000 - 7040200 30m 10140100 - 10140300 20m 14097000 - 14097200 17m 18106000 - 18106200 15m 21096000 - 21096200 12m 24926000 - 24926200 10m 28126000 - 28126200 6m 50294400 - 50294600 4m 70092400 - 70092600 2m 144490400 -144490600 Calibration =========== Frequency calibration is REQUIRED to ensure that the WSPR-2 transmission occurs within the 200 Hz narrow band. The reference crystal on your RPi might have an frequency error (which in addition is temp. dependent -1.3Hz/degC @10MHz). To calibrate, the frequency might be manually corrected on the command line or by changing the F_XTAL value in the code. A practical way to calibrate is to tune the transmitter on the same frequency of a medium wave AM broadcast station or a CW transmitter at hand; keep tuning with USB or LSB until zero beat (the constant audio tone disappears when the transmitter is exactly on the same frequency as the broadcast station), and determine the frequency difference with the broadcast station. This is the frequency error that can be applied for correction while tuning on a WSPR frequency. Then you can do the math for the offset from your terminal using shell. If the offset is -1100 Hz and you want to tune to 10140200, then: ./wspr K1JT JO21da 10 $((10140200-1100)) NB: Do not overclock your RPi as it may make the clock unreliable due to a dynamic clocking feature. Check reception =============== CALLSIGN=W1AW wget http://wsprnet.org/drupal/wsprnet/activity -O - 2>&1 |grep -i $CALLSIGN && echo $CALLSIGN found on wsprnet.org Reference documentation =======================  WSPR Frequencies: http://wsprnet.org/drupal/node/218  http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf  http://www.scribd.com/doc/127599939/BCM2835-Audio-clocks  http://www.scribd.com/doc/101830961/GPIO-Pads-Control2  https://github.com/mgottschlag/vctools/blob/master/vcdb/cm.yaml  https://www.kernel.org/doc/Documentation/vm/pagemap.txt  http://www.gqrp.com/harmonic_filters.pdf  Raspberry Pi Foundation: http://www.raspberrypi.org/  Dobbs, G., G3RJV: A Complete Do-It-Yourself Kit... with just a few simple calculations. http://www.gqrp.com/harmonic_filters.pdf  WSPRnet: Weak Signal Propagation Reporter Network. http://wsprnet.org/drupal/  Raspi Pinout: http://elinux.org/RPi_Low-level_peripherals  Raspbian http://www.raspbian.org/ Code Quality ============ This is experimental code.