rf22_pocsag

426 views
Skip to first unread message

Kristoff Bonne

unread,
Mar 30, 2014, 4:34:24 PM3/30/14
to rf22-a...@googlegroups.com
Hi all,


As already mentioned, in two different radioclubs here on the Belgian
coast, we are playing around with POCSAG (paging).


Today, I managed to iron out the last bugs from the code to send
POCSAG-messages from a RPi to a si4432-based ISM-module, using an
arduino (or in my case, the Atmega328p on the gertboard) as interface in
between these two.

The POCSAG-message is created on the RPi using a C-application and then
send to the AVR to be transmitted, using the serial interface inbetween
the Pi and the AVR.

The code is now on github:
https://github.com/on1arf/rf22_pocsag


The transceiver modules I am using are these:
http://www.dx.com/p/rf4432se-si4432-433mhz-wireless-rf-transceiver-module-155701

There are also modules that provide about 2 Watt of power.
http://www.dx.com/p/nrf905-2w-wireless-transmit-receive-module-green-155061

(But I have no experience with the RF22 library on these things).




As POCSAG does not provide an identification of the transmitting
station, I've added the option so transmit a "id-message", either as a
small FSK-packet in front of the POCSAG-messages or as a FM-modulated CW
id after the POCSAG-message.

This should make the code more in line with legislation for ham-radio in
most countries.



The POCSAG-message is encapsulated inside a RF22 packet, so this allows
POCSAG-messages to be send from RF22 node to another.
I will probably use that later on to transport POCSAG-messages from one
place (where the alarm-message is created) to a high-power


But, as the POCSAG-message inside the RF22-packet does contain a
complete POCSAG syncronisation-pattern, pagers who pick up the signal
will react to it.


This is still version 0.1.0. so quite rough around the edges.
The code is GPL-licensed.



Note that to transmit POCSAG-message on 439.9875 Mhz, you need a
ham-license.


Cheerio!
Kr. Bonne (ON1ARF)

Mike McCauley

unread,
Mar 30, 2014, 4:54:06 PM3/30/14
to rf22-a...@googlegroups.com
Hi Kristoff,

thanks for posting about your project. Looks interesting.

Im currently building a simililar library for RF69, such as Moteinoi:
http://lowpowerlab.com/moteino/

These are very compact Uno comnpatible with the RF69 on board: a very neat
package.
RF69 also supports AES encryption (though I know you dont need it)

Ill see if I can include 512 baud, FSK, 4.5 Khz fd config out of the box for
RF69.

Let me add your 512 baud, FSK, 4.5 Khz fd to RF22 too?


Cheers.
--
Mike McCauley VK4AMM mi...@airspayce.com
Airspayce Pty Ltd 9 Bulbul Place Currumbin Waters QLD 4223 Australia
http://www.airspayce.com
Phone +61 7 5598-7474 Fax +61 7 5598-7070

Kristoff Bonne

unread,
Mar 30, 2014, 7:13:15 PM3/30/14
to rf22-a...@googlegroups.com
Hi Mike,




(inline comments)


On 30-03-14 22:54, Mike McCauley wrote:
> Hi Kristoff,
>
> thanks for posting about your project. Looks interesting.
No issue. That is what open source is about, isn't it? :-)


I really like the idea of being able to combine pocsag pageing
technology with mesh technologie. This would mean it would be possible
to transport POCSAG pagine messages over a RF22-based network.



> Im currently building a simililar library for RF69, such as Moteinoi:
> http://lowpowerlab.com/moteino/
>
> These are very compact Uno comnpatible with the RF69 on board: a very neat
> package.
> RF69 also supports AES encryption (though I know you dont need it)
>
> Ill see if I can include 512 baud, FSK, 4.5 Khz fd config out of the box for
> RF69.
>
> Let me add your 512 baud, FSK, 4.5 Khz fd to RF22 too?
Well, according the english-language wikipedia page on POCSAG, there are
two standards: either a frequency deviation of 4.5 Khz or 2.5 Khz.
The first one is the original specification intended for a 25 Khz
bandwidth channel.
However, the FCC seams to have mandated 12.5 Khz channels for paging and
this reduces the fd to 2.5 Khz.

I do not know to what it makes sence to use 12.5 Khz channels on
low-power devices like ISM transceivers, but I guess it doesn't cost
anything to define both.




For some reason, on the RF4432SE modules I have, I must set the
frequency to 439.9625 Mhz to work on 439.9875.

Is this just "luck" that I happen to have a frequency offset of exactly
25 Khz, or am I missing something?




> Cheers.
Cheerio! Kr. Bonne.

Mike McCauley

unread,
Mar 30, 2014, 9:00:53 PM3/30/14
to rf22-a...@googlegroups.com, Kristoff Bonne
Hi Kristoff,

Hmm, your github code does not seem to set a value for register MC.reg_2e What
should it be?
Is there any data whitening or manchester in your modem config?


Your off frequency could be due to crystal error. Interesting to see if it
changes with temperature?

Kristoff Bonne

unread,
Mar 30, 2014, 9:20:12 PM3/30/14
to Mike McCauley, rf22-a...@googlegroups.com
Hi Mike,


I used the exell-sheet to determine the values to use for the registers.

The 2e register is only found in the list for OOK modulation (rx).
Does this value also need to be set for FSK TX?


Anycase, there is no manchester or data whitening applied.




Cheerio! Kr. Bonne.

Kristoff Bonne

unread,
May 1, 2014, 10:25:10 AM5/1/14
to rf22-a...@googlegroups.com

Hi All,


Just a small note that I have updated the rf22_pocsag code:


There are now two version of this application:
- "arduino+linux": this version (published the 30th of march) uses a
linux application to create the pocsag-message and sends it to an
arduino which interfaces with the si4432 module to broadcast the message

- "arduino" (new): this version uses the arduino to both create the
POCSAG-message and interface to the si4432.


The latest code would therefor allow any standalone arduino / AVR-based
device to create pocsag-paging messages and transmit them.



The source-code also contains quite a bit of information on the format
of alpha-numeric POCSAG messages.


Source-code
https://github.com/on1arf/rf22_pocsag


Next step:
- turn this all into an arduino class
- migrate to RadioHead


Have fun!


73
kristoff - ON1ARF

Mike McCauley

unread,
May 1, 2014, 7:13:00 PM5/1/14
to rf22-a...@googlegroups.com
Hello Kristoff,

thanks for your note.

Some minor comments:

The RF22 registers settings you use are identical to the ones in
RF22::FSK_Rb_512Fd2_5 in the latest version (also in RadioHead)
which according to you is for FSK Rb = 512bs, Fd = 2.5kHz. But the comment in
your code says its 512 baud, FSK, 4.5 Khz fd


In your call to rf22.setFrequency(freq, 0.00); you say you need to adjust for
the crystal frequency. Instead I suggest you use a sensible figure for the AFC
argument.

Cheers.

Kristoff Bonne

unread,
May 3, 2014, 9:50:55 AM5/3/14
to rf22-a...@googlegroups.com
Hi Mike,



On 02-05-14 01:13, Mike McCauley wrote:
> Hello Kristoff,
>
> thanks for your note.
>
> Some minor comments:
>
> The RF22 registers settings you use are identical to the ones in
> RF22::FSK_Rb_512Fd2_5 in the latest version (also in RadioHead)
> which according to you is for FSK Rb = 512bs, Fd = 2.5kHz. But the comment in
> your code says its 512 baud, FSK, 4.5 Khz fd

That is correct. Cleaning up that code is something I had om my todo
list when moving the code from RF22 to RadioHead.


> In your call to rf22.setFrequency(freq, 0.00); you say you need to adjust for
> the crystal frequency. Instead I suggest you use a sensible figure for the AFC
> argument.
Correct me if I am wrong, but isn't the AFC parameter something for
receiving data?
This code (or at least in this version) is only for transmitting
paging-messages. That is the reason I set AFC to 0.

Is there a reason to set AFC to a particular value? Does it affect the
transmitting frequency in a transmit-only senario?



> Cheers.
Cheerio! Kr. Bonne.

Mike McCauley

unread,
May 3, 2014, 6:18:32 PM5/3/14
to rf22-a...@googlegroups.com
Hi,

On Saturday, May 03, 2014 03:50:55 PM Kristoff Bonne wrote:
> Hi Mike,
>
> On 02-05-14 01:13, Mike McCauley wrote:
> > Hello Kristoff,
> >
> > thanks for your note.
> >
> > Some minor comments:
> >
> > The RF22 registers settings you use are identical to the ones in
> > RF22::FSK_Rb_512Fd2_5 in the latest version (also in RadioHead)
> > which according to you is for FSK Rb = 512bs, Fd = 2.5kHz. But the
> > comment in your code says its 512 baud, FSK, 4.5 Khz fd
>
> That is correct. Cleaning up that code is something I had om my todo
> list when moving the code from RF22 to RadioHead.

OK, so no changes required in RF22/RadioHead?

>
> > In your call to rf22.setFrequency(freq, 0.00); you say you need to adjust
> > for the crystal frequency. Instead I suggest you use a sensible figure
> > for the AFC argument.
>
> Correct me if I am wrong, but isn't the AFC parameter something for
> receiving data?

Yes.

> This code (or at least in this version) is only for transmitting
> paging-messages. That is the reason I set AFC to 0.

OK.

>
> Is there a reason to set AFC to a particular value? Does it affect the
> transmitting frequency in a transmit-only senario?

No.

Cheers.

>
> > Cheers.
>
> Cheerio! Kr. Bonne.

4is...@gmail.com

unread,
Nov 1, 2015, 5:20:46 PM11/1/15
to RF22-Arduino
Hi Kristoff,

try to playing with you code to send messages - without success. RF22 connected correctly, some examples from RF22 lib works well, I can see some signals via RTL-SDR.

how to use your code correctly to send "sample text" to 1111111 capcode aka RIC ? any examples?

thanks in advance!
Reply all
Reply to author
Forward
0 new messages