PiicoDev Transceiver | Getting Started Guide

Michael just shared a new tutorial: “PiicoDev Transceiver | Getting Started Guide”

A radio transceiver is a device that can both transmit and receive radio signals, making it the perfect tool for communication on the go and remote projects! The PiicoDev Transceiver™ is a 915MHz radio that can send short messages up to 100m. …

Read more


What a great product !!
The PiicoDev range just keeps getting better and better.
This will be my future product of choice for any TX/RX projects.

I was look at an RC multi channel controller and RC receivers, but now I think this device is what I need.

Well done !!



I see this being a great idea for non-WiFi Pi Picos or Pi Zeros to communicate with other. Also great for projects where WiFi is unavailable, impractical or just plain unnecessary.

Can’t wait to see what’s next for Piicodev!


I have been working on a project where two Pi Pico W’s communicate via WiFi in a standalone manner. One is setup as a Hot Spot and the other connects to it to send sensor data every 15 minutes. In between it powers off.

The project is on test at the moment to see how long the LiPo will last (1100mAh). 43 days so far.

I am interested to compare the WiFi method to using the TX/RX modules. I imagine the transmission time for the TX/RX modules will be less because the WiFi connection takes time to establish. So, hopefully battery power will last longer.

Anyway, ordered 4 of these modules and probably more in the future.



Is there any way to change its range? More than 100 m?

In my understanding and experience of radio technology, the answer is neither yes or no.

The device is limited to 100mW power which is the legal level such a device can be used.
Higher power may get a longer range but would not meet Australian legislation requirements.

At 915MHz communication over a long distance needs to be line of site.
Obstacles in the way will absorb some of the power and reduce the range.

When you consider there a microwave links that work over many kilometres this may be the best way to increase range. The transmitting and receiving elements would need to be directional and very high gain. Like the dish antennas you see on microwave links. Micro wave links have a direct line of site, are place high above any obstacles and usually are in the kilowatts or megawatts power range. They have to be accurately aligned for optimum transmission. With only a 100mW power the range would not be as great due to atmospheric absorption.

In its current form the device would be lucky to get 100 Meters in my opinion. The specification is under absolutely ideal conditions. The built in antenna limits what you could attach. Mounting of the module would also greatly affect the range.

The device has been designed to be easy to use and provide useful communications in a limited range. This is how I intend to use it. I also want to compare the range of the device I used in the Smart Watering system (in the project area) which uses the same frequencies but was a lot harder to program. Also want to compare the RF modules with just WiFi from the Pi Pico W’s. I may be surprised.


PS There have been cases where someone has been able to extend WiFi over a number of kilometres with a specialised setup. WiFi is in the 2.4GHz and 5GHz range. Frequencies readily absorbed by water molecules in the air. Micro ovens work around 2.4GHz due to this absorption. But WiFi frequencies are better suited to bouncing around inside a building, especially 5GHz.


Received the TXRX modules a lot faster than I was expecting.
Set one up as a confidence check.

Note to others:
The unified library has changed. suppress_warnings has been added to the create I2C definition.

def create_unified_i2c(bus=None, freq=None, sda=None, scl=None, suppress_warnings=True):

Downloaded the new and it works like a charm.
Now to get two working TXRX back and forth.


1 Like

Hi James and All

Power has nothing to do with “atmospheric absorption” or free space attenuation. distance and frequency do. Power will ultimately affect signal strength at the other end.

Just got out my trusty microwave slide rule and for interest had a look. Used 1GHz as frequency (slide rule does not go lower than that) and started at 4 miles (American slide rule). Result 108db attenuation.
Normalising, using a reduction of 6db every time the distance is halved, yields an attenuation of 72db for 100 metres @ 1GHz. This is assuming line of sight with no obstructions. 900MHz would be a little better but not much so 1GHz would be a reasonable approximation

Increasing the power does not do as much as you might think. For instance doubling the power (with sheer power or antenna gain) will only increase the signal strength for a given distance by a factor of √2 or 1.41.

Increasing power with antenna gain (ERP) can be a bit cumbersome at these relatively low frequencies. 3db or 6db or so would be manageable but anything more gets a bit big. An example, some years ago I was involved in a Tropposcatter project using 900MHz. The antennas were Andrews grid pack parabolic dishes with a design gain of 30db, measured gain of 32db. These were of rectangular perimeter shape but were 6 metres wide and 5 metres high. Not quite your back yard installation. This may give you some idea of what is involved when looking for larger gain numbers.
Cheers Bob

Add on:

That would be ERP (Effective Radiated Power) after antenna gain. The transmitter actual power is usually quite modest. For instance that Tropposcatter system mentioned above had I think from memory a transmitter of 10W. The 30db antenna gain made that look like 10kW. The old AWA ( and similar others) 7GHz Television microwave links had a TX power of 1W. The rest was antenna gain.


My RF is a little (maybe a lot) rusty. LOL
I understand the terms you have used @Robert93820, bring back memories from quite some years ago now.

Thinking about this later I realised I was probably wrong in what I had written.
But, in essence @Rooppoor212784 question about increasing range beyond 100m would require some good design work and an installation to suit the conditions. For the current product the answer is most likely NO. 100m is the best under ideal conditions.

Thanks for your words @Robert93820

Hi James

So is mine unfortunately
Over 20 years now since I have worked full time
Cheers Bob


Hi James
Brushing up a bit more.

Considering my numbers above (which may be completely wrong but I don’t think so) of a path loss of 72db. Add a bit for other losses like cable, connectors etc and say we use a round figure of 80db in losses.
Now 100mW is +20dbm. OK so far.
So now we have +20 - 80 which leaves us with -60dbm at the receiver with unity gain antennas.
Assume 50Ω RX input impedance. 0dbm = 223mV. -60dbm = 223µV input.
I think it would be a pretty deaf receiver that would not work well with that sort of input. I would even suggest that it would have a fair bit of head room but I don’t think RX sensitivity figures would be available. I have not looked but past performance re this sort of thing does not inspire one with too much confidence.

The above assumes everything is going right. I added 8db to the path loss as a general “fudge factor” and it also rounds up the numbers nicely so all the db and mV etc calculations I can do in my head.
Comes from years of dealing with these.

As a bit of trivia 0dbm in 75Ω is 275mV.
Cheers Bob

Add on
“I have not looked but past performance re this sort of thing does not inspire one with too much confidence.”
I will take that back in this case. The Americans are not too bad with info. I just checked the specs on that actual receiver device. Copy follows.
2. Features of RF Sub-Ghz Transceiver Module RFM69HCW:

● +20 dBm - 100 mW Power Output Capability

● High Sensitivity: down to -120 dBm at 1.2 kbps

● High Selectivity: 16-tap FIR Channel Filter

● Bullet-proof front end: IIP3 = -18 dBm, IIP2 = +35 dBm,80 dB Blocking Immunity, no Image

● Frequency response

● Low current: Rx = 16 mA, 100nA register retention

● Programmable Pout: -18 to +20 dBm in 1dB steps

● Constant RF performance over voltage range of module

● FSK Bit rates up to 300 kb/s

● Fully integrated synthesizer with a resolution of 61 Hz

● FSK, GFSK, MSK, GMSK and OOK modulations

● Built-in Bit Synchronizer performing Clock Recovery

● Incoming Sync Word Recognition

● 115 dB+ Dynamic Range RSSI

● Automatic RF Sense with ultra-fast AFC

● Packet engine with CRC-16, AES-128, 66-byte FIFO

● Built-in temperature sensor

● Module Size:16X16mm

Now -120dbm is 0.223µV which is pretty good so there seems to be quite a bit of head room. I don’t have any idea what the built in antennas are like so it could still be very likely only good for 100M or so. Experiment would tell more but to be meaningful you would have to be measuring things like bit error rates etc which would be beyond most home constructors.

I think the end comment would be if it works for you in your particular application then it works. If not it doesn’t work.

I just note that this unit has RSSI capability so some meaningful numbers may be possible.

1 Like

Initial Testing. (so far pretty impressed with this device)
Power can be set from -2 dBm to +20 dBm in 1 dB steps. +20dBm is the library default setting.

At +20 dBm the two Pico’s communicate anywhere in the house. I could not get them to error.
At -2dBm the range is much less reliable, sometimes get errors, sometimes get nil comms.

Two Pi Pico’s each with a PiicoDev OLED display using the library I wrote for the Smart Watering Controller. (3 lines of 8 characters) The Pico’s count send and receive messages and display the counts.

One echo’s whatever message it receives, this is mains powered.
The other sends a message when a switch is pressed and is battery powered.
It waits half a second for a reply, if no reply displays ‘NIL’.
If it gets a reply checks the send and receive messages and displays ‘OK’ if the same.
If not the same it displays ‘ERR’.

Pretty simple, but allows testing of distances and locations.
Communication through closed doors was ok at +20 dBm.

Will test longer distances tomorrow.



Hi James
some comparative RSSI would probably be useful. Absolute readings would not mean much but comparative figures taken at different distances apart could be useful for future planning.

I am not too sure how this one works. Most IC receivers I have come across make this available as a voltage variable relative to actual signal strength. It (whatever “it” is) is available at DIO 0 on pin 14 of the module. The RSSI seems to be used internally for AGC to the LNA and possibly other things but at first glance it is not obvious what is available to the outside world at pin 14.

I notice that the PicoDev unit uses this to drive a LED apparently to verify the signal is OK. I don’t know if the LED intensity changes to give some idea of signal strength or not. Just one of those mysteries I suppose. There is not much mention of this anywhere. Maybe these devices come with some sort of handbook which might explain but I wouldn’t hold my breath.

Anyway please keep us posted re your experiments to-morrow.
Cheers Bob

1 Like

The DIO pins are digital, 1 or 0.
The LED attached to DIO0 flashes when a message is received or when sent. It does not provide any indication of RSSI.

I don’t think the Python Library or the Firmware in the ATiny1616 provide any indication of RSSI.
Register 0x24 is labelled RegRssiValue in the datasheet, supposed to be the RSSI value in dBm.
Reading it provided no useful indication.
Register 0x23 is labelled RegRssiConfig; bit 0 and 1 are used to trigger RSSI measurement and provide an indication of when a result is available.

Trying to get these to work in a Python application provided no useful indication.
I think the firmware in the ATiny1616 would be a better place to do RSSI measurements.
The firmware is written in C++.

The Adafruit implementation of the RFM69HCW device provides an RSSI indication. It connects through the SPI interface of the chip. The Core Electronics implementation used the ATiny1616 to convert the I2C interface to SPI and to configure the RFM69HCW.

At this time I think it would be up to the Core Electronics developer to add RSSI functionality, if it was seen as necessary. For most users the device is very easy to use in Python and provides reliable communications over a reasonable distance. Certainly it will provide me with what I want for now.


EDIT: Did a few longer distance tests. To achieve 100m both devices would need to be in line of sight of each other. Also both devices are on breadboards, antenna in open space; if they were inside a case it would further limit the range.


Hi James
Thanks for going to all that trouble. I did not go that far down into the data sheet. I did however spot on a block diagram the RSSI used as AGC for the LNA but did not spot any obvious analog user output. As I said I have only seen this as an output that would be used in an analog fashion to provide directly an indication of signal strength or used to drive a traditional “S” meter. Without being calibrated it is meaningless anyway except for comparison purposed, one invaluable use it the alignment of directional antennas which is a fair pain using any digital indication.

That just about says it all. I agree that for its intended use the availability of RSSI would not be regarded as essential. It does the job you want or it doesn’t. Simple and I can understand Core not going to the expense of providing something that a good percentage of users don’t understand and would not use anyway.

If as you say the RSSI is available at the SPI point I daresay that someone in the near future will figure out a way to recover and use this information. Will await with interest as this device is an interesting beast.

I may have been looking at this from too much of a professional view. Where you have a transmitter and receiver, usually part of a system. You need to check the actual signal strength against the calculated signal strength and if you don’t come close there will be a reason. Task, find that reason and if possible do something about it. If unable to do so, back to the drawing board. To do this the receiver needs to have a calibrated RSSI. I might add here that this does not often happen as most suspect paths are extensively surveyed, both land and radio, before the event. Still requires some sort of calibrated RSSI though
Cheers Bob


Hi Michael
Is there an Arduino Library for the the Transceiver ?

1 Like

Hi Steve,

In short, there are no official PiicoDev drivers in Arduino - since the transceiver is a smart module (there is a microcontroller in between the radio and the I2C bus) its a unique module that would require a port to Arduino, no small effort!

Which development board were you using and what were you looking to use the transceiver to do?

There is a Arduino port for the RFM69 radio module though - so if you get your hands on this underlying part you can still use this radio technology. You’ll just have to use the SPI interface.

1 Like

Any future plans for 2.4Ghz LoRa SX1280 ?

1 Like

Hi Mark,

What were you looking to do with the 2.4GHz over 915MHz?
Core just release this one so I cant imagine there are any immediate plans

1 Like