Make your own free website on
Page de Rémi Bilodeau     |     home
PSK31 beacon based on a PIC16F872
Back to Hamradio related project

Kit and programmed chip may be available through soon.
email me if you are interessed in ordering one of these product.

First prototype builded

Sorry for the english, but I am better with PIC and C programming than english language. ;-)

This picture taken from my prototype, 16 Mhz xtal are under the board and the two serie of resistor near processor can be replaced by resistor pack.

I have started the project when one of my best friend, Pascal(VE2WHZ) ask me if I can program the Scenix chip for the simple beacon software you can find on the net. I have search for some other PSK31 beacon project, I have find only three projects but none of these projects is perfect or work anyway. Easy project, serial programmable, but cannot drive SSB mic-input radio, the CPU do not output 1khz carrier necessary for radio. Good for LowFer beacon when you build yourself the transmitter around the processor. The better project because source code is availaible. But the message is not editable and must be burn-in into the chip. The programming of SX chip is a problem also, need to program a PIC to create a Scenix programmer. You can buy kit for this project. Two project on this page, PSK31 receiver and transmitter using LCD and PC keyboard. No source code, no hex file available. Maybe later. Use PIC18C252 chip

Project Description:
Beacon use a PIC16F872 processor, pin to pin compatible for PIC16F873 or PIC16F876, the PSK31 modulation is created via 8-bit R-2R resistor network(DAC) and output a fixed audio level modulation. Two control pin is available, PTT output for keying the radio and KEY output used in CW mode. KEY pin can be use to press PTT of FM radio for CW only beacon or for key input of radio. Anyway the PSK31 tone is at 1khz and CW dot and dah use the same audio tone at 1khz. This beacon can be programmed via serial port at 9600 bauds, beacon can combine PSK31 and CW transmission or just CW. Delay between transmission can be adjust from 0 to 255 seconds. I have created a Visual Basic application to program beacon, more on this later.

This is shematic Version 1.0,  have noted small harmonic at 2khz, maybe need some additional filtering.
This is PCB at 300dpi, Version 1.0 without any audio level ajust and filtering.

Programming the beacon:
Open serial port terminal at 9600 baud 1N8, no handshaking. If you whan to know if your setting is correct, the beacon send welcome string when power-on for test purpose. Type any key to enter configuration mode, if don't work, try several time, in the PIC16F872 version the serial port is emulated and some time the software do not catch first caracter when sending PSK31.

<power on the PIC>
PSK31 beacon for PIC, by VE2YAG
<type any key>
Config mode: ? for help

You have four command to control the beacon, do not use space between command and parameter:
B<text> (Enter beacon text)
Exx (Second to wait in hex)
R (Restart)
D (eeprom hex dump)

E command use hexadecimal notation without space. E05 for 5 seconds between transmission E10 for 16 seconds. B command have special command caracter: you can switch to CW mode using ^ caracter and created 1 second continous tone using ~, use space in CW to insert waiting silence. Type R to reset the beacon and begin transmission. D is using only with windows software to dump eeprom content.

BThis is VE2YAG beacon FN19ES^~ de ve2yag  ~~~

The first part of message is send in PSK31, 1 second tone at the end, little waiting, ve2yag sended in CW with 3 second tone at the end. The transmission restart after 10 seconds. R command reset the beacon.

I have created also small Visual basic 6.0 application to program beacon:

This is Visual Basic source code and executable.
You have to download dependent library to run executable. I have SETUP.EXE to install it, but I don't have the 4.78meg needed on my web site. This is Version 1.0.

Source code and rom image:
This is ScopeEdit source code: Version 1.1 You can download Interspector 2.17 to see it. This software is far the best editor I have seen, manage your source code like a HTML page, the creator of the software, Sebastien Demers is one of my friend. Interspector is the new replacing software, but I not use it for this time.

This is to C version for people use standard text editor(Can be little difficult to read because of lost ScopeEdit formatting): psk31.c
This is the compiled version in hex, ready to be programming into the chip: Psk31.hex ** see below for other processor.

Ask me if you whan the .AS of psk31.c (assembly file)

Future version and upgrade:

Please email me if you have idea for new option, or if you need some of my future upgrade.

-Support new processor, PIC16F873 and PIC16F876, more memory, flash upgradable and more rom space for more command.
-Convert NMEA string to PSK31 APRS for HF operation, GPS, PIC processor and radio is only needed for mobile APRS.
-Use digital input and analogic input AN0-AN4 to report voltage, current or temperature, can be useful to monitor solar repeater site or baloon lauch. this feature is on the way.

Example of new command for monitoring 0-15 volts with beacon 10-bit A/D converter(AN0 is analog input #0):
AN0min 0
AN0max 1500
AN0div 100

The beacon take 0-1023 value from A/D converter and display it withing the range specified, 0 to 1500 with decimal point at second digit (divide per 100) 0.00 to 15.00. the beacon text can be writted like this:

BRepeater VE2RBO emergency voltage is %AN0 Volt(s)
Result in PSK31: Repeater VE2RBO emergency voltage is 13.45 Volt(s)

For any comment please email to

Back to Hamradio related project