This is only a preview of the August 2026 issue of Practical Electronics. You can view 0 of the 80 pages in the full issue. Items relevant to "USB-C Power Monitor, part one":
Articles in this series:
Articles in this series:
Articles in this series:
Articles in this series:
Articles in this series:
Articles in this series:
|
Teach-In 2026
by Mike Tooley
World of Wireless – An Introduction
to Radio and Wireless Technology, part 12.10
Short-range RF devices
L
ast month, we took a
deep dive into RF sources, explaining the architecture and
operation of some typical low-cost
phase-locked loop (PLL) and direct
digital synthesis (DDS) devices.
This month, our focus shifts to
short-range wireless devices (SRD).
These versatile chips and modules
enable data transmission and reception between remote devices without requiring a wired connection.
For good measure, our Hands-On
constructional project features a
simple RF field strength indicator
that can be used for relative measurements up to 450MHz.
Short-range wireless applications
A growing number of electronic
applications are now using wireless technology to transmit data
from remote sensors or between
distributed sites. These inexpensive wireless systems eliminate the
need for physical wiring, providing
fast and reliable communication
between distant devices.
Establishing data connections
requires only a pair of wireless
transceivers placed at each end.
Depending on factors that include
device configuration, data rate, antenna type and transmission path,
wireless systems can easily achieve
working ranges of several kilometres. Fig.10.1 shows a selection of
low-cost wireless modules suitable
for short-range applications.
SRD devices operate with low
radiated power and consequently
have limited range, so they are unlikely to interfere with other radio
services using the same frequency.
Because of this, they’re generally
subject to less strict regulations
compared with most radio communications equipment.
Many SRDs operate licencefree, but developers must ensure
compliance with rules from national authorities like Ofcom (UK),
ACMA (Australia) and the FCC
(USA).
Typical applications for wireless-connected SRDs include:
• access control (including door
and gate openers)
• control and regulatory systems
• cordless audio devices
• intruder and other alarms
• local area networks (LANs)
• lighting control
• medical devices and implants
• metering devices
• motion detectors
• radio-frequency identification
(RFID)
• remote control systems
• telematics
• wireless microphones
Typical frequency ranges for
SRD include the ‘sub-GHz’ bands
at 433MHz, 868MHz and 917MHz,
as well as the popular 2.4GHz band
already used extensively for Wi-Fi
and Bluetooth devices. Frequency
ranges and effective radiated power
(ERP) limits in the UK as well as
most of Europe are:
• 433.05-434.79MHz: +10dBm
• 868-870MHz: +10dBm
• 2400-2483.5MHz: +20dBm
It’s important to recognise that
frequency allocations are subject
to the policies established by
individual national regulatory
authorities. The bands listed are
further subdivided and allocated
to designated services, including
‘non-specific’ categories. Limits
apply to individual applications,
modes of operation, duty cycles
and maximum permitted ERP.
The industrial, scientific and
medical (ISM) bands, particularly
at 2.4GHz, are used for purposes
other than telecommunications
and broadcasting. These bands
permit high-power emissions that
can potentially disrupt other lowpower services.
Fig.10.1: a variety of
low-cost SRD wireless
modules.
18
Practical Electronics | August | 2026
Table 10.1: 2.4GHz Wi-Fi channels
Channel
Frequency
1
2.412GHz
2
2.417GHz
3
2.422GHz
4
2.427GHz
5
2.432GHz
6
2.437GHz
7
2.442GHz
8
2.447GHz
9
2.452GHz
10
2.457GHz
11
2.462GHz
12
2.467GHz*
13
2.472GHz*
congestion and interference, especially in densely populated areas.
Many readers will already be
aware of the need to find unoccupied
channels when configuring their
own Wi-Fi networks but despite potential interference, the licence-free
2.4GHz ISM band can be a great place
to start experimenting with SRD. The
technology is well understood and
the hardware is cheap!
The nRF24 wireless module
14
2.484GHz**
* channels 12 & 13 restricted in the USA
** channel 14 is only currently available
in Japan and is the only band not 5MHz
from the previous band
Such applications include RF
heating and microwave ovens, so
the use of the ISM bands is made
conditional on users being willing
to tolerate interference generated
by such equipment.
The 2.4GHz frequency band
The 2.4GHz band extends from
2.400GHz to 2.4835GHz (sometimes higher) and it has become
immensely popular in a wide variety of domestic and commercial
short-range license-free applications. The band is used worldwide
for services such as Bluetooth and
limited-range wireless networks
that provide local internet access.
The various Wi-Fi channels are
listed in Table 10.1.
While most of the world has
access to channels 1-11 (2.422.462GHz), restrictions can apply
to the use of bands 12, 13 and 14
in some countries.
The increased popularity of WiFi, Bluetooth and other services
has led to a significant amount of
The nRF24L01 from Nordic
Semiconductor is a single-chip
2.4GHz transceiver that incorporates an embedded protocol engine
to handle the transfer of data to/
from a microcontroller. It is ideal
for a wide range of low-cost, lowpower wireless applications. It is
designed for operation in the globally available 2.4GHz ISM band.
There are several members of the
NRF24 family. The latest device
(nRF24L01+) is pin-compatible
with the nRF24L01 and on-air
compatible with the nRF2401A,
nRF2402, nRF24E1 and nRF24E2.
The nRF24L01+ offers significantly better performance than its
predecessor (notably intermodulation and wideband blocking). The
addition of internal filtering in
the latest version of the chip has
improved the margins for meeting national and international RF
regulatory standards.
The simplified internal schematic of the nRF24L01 is shown
in Fig.10.2. We’ve divided it into
six functional blocks:
1. Low-power 2.4GHz RF transmitter
2. Sensitive 2.4GHz RF receiver
3. RF synthesiser, to generate the
required 2.4GHz channels from
a stable quartz crystal-controlled
reference oscillator
4. First-in, first-out (FIFO) registers for storing transmitted and
received data (which is sent serially) together with a protocol
RF Transmitter
Transmit
filter
PA
GFSK
modulator
ANT1
Receive
filter
LNA
XC2
Transmit FIFOs
Transmit FIFOs
Transmit FIFOs
SPI
CSn
SCK
MOSI
MISO
Enhanced Shockburst
Baseband Engine
ANT2
XC1
engine, general-purpose registers
and a serial peripheral interface
(SPI) linked via an internal data
bus
5. Radio control logic for the RF
section
6. Power management logic that
provides several power-saving
modes
The chip’s SPI interface makes it
easy to interface with a microcontroller. This interface provides access to the chip’s internal registers
so it can be configured to operate
in various ways.
The RF front end uses Gaussian
frequency-shift keying (GFSK).
This is more efficient than conventional frequency-shift keying
(FSK) and is the same method of
digital modulation that’s used by
Bluetooth devices.
The chip’s operating parameters,
such as channel/frequency, output
power and transmitted data rate,
are all user-programmable. Its embedded baseband protocol engine
is based on conventional packet
communication techniques.
The nRF24L01 can be programmed for operation in 125
channels within the 2.4GHz ISM
band. These channels extend from
2.400GHz to 2.525GHz with a channel spacing of 1MHz. The selected
channel needs to comply with the
regulations in your country.
For example, in the USA, the
Federal Communications Commission (FCC) permits operation
from 2.400GHz to 2.4835GHz,
which is equivalent to the first 84
channels (numbers 0 to 83) for the
nRF24L01. For best performance,
it’s important to avoid heavily used
and adjacent Wi-Fi channels in
your locality (see Table 10.1).
The range that can be achieved using typical low-power 2.4GHz wireless modules is usually between
10m (inside a building) up to about
100m on a line-of-sight path. With
higher power output and an external
RF Synthesiser
GFSK
demodulator
Register
Set
Transmit FIFOs
Transmit FIFOs
Receive FIFOs
Radio Control
Power Management
VSS
VDD
VDD_PA
Fig.10.2: the simplified internal schematic of an nRF24L01 wireless transceiver chip.
Practical Electronics | August | 2026
19
Fig.10.3: high-power versions of
the nRF24L01 wireless module
fitted with external antennas.
antenna
(Fig.10.3),
the range can
be increased
to about 50m
inside a
building and well over 1km if an
unobstructed path exists between
the transmitter and receiver.
The nRF24L01 transmitter output
power is programmable to 0dBm,
-6dBm, -12dBm or -18dBm. dBm
means decibels relative to 1mW so
0dBm corresponds to 1mW, -6dBm
to about 250µW, -12dBm to about
62.5mW and -18dBm to about 16mW.
When the output power is configured
to its maximum (0dBm), the chip
needs a supply current of about 11mA;
lower at reduced output levels.
The transmission data rate (sometimes referred to as the ‘air data rate’)
is the modulated signalling rate the
nRF24L01 uses when the RF front
end is transmitting or receiving data.
It can be 250kbps, 1Mbps or 2Mbps.
Fig.10.5: an
inexpensive
DHT22 temperature
and humidity sensor.
Although a
lower air data
rate gives better
receiver sensitivity, the average
current consumption
goes up and there’s an
increased probability of on-air
collisions.
The channel, data rate and power
can be easily set by writing values
to the chip’s internal registers. The
transmitter and a receiver must be
programmed with the same data rate
and channel to be able to communicate with each other!
When implementing a data link
between two microcontrollers, one
needs to be configured as a server
whilst the other must be configured as
a client. Fig.10.4 shows how this can
be done using two nRF24L01 modules
and two Arduino microcontrollers.
Interfacing remote sensors
Let’s look at an application that uses
nRF24L01 modules to send data from
a remote sensor, receiving it using
another nRF24L01 wireless module.
We’ve used compact and inexpensive
Arduino Nano microcontrollers.
At the transmitter, we’ve included
an inexpensive DHT22 temperature
and humidity sensor (Fig.10.5). It
uses a simple three-wire interface to
the Arduino Nano. For the receiver,
we’ve used a second nRF24L01 module and Nano with the data displayed
on a host computer (this can be the
same computer used for programming
the two Nano microcontrollers).
The circuits for the transmitter and
receiver are shown in Figs.10.6 &
10.7, respectively.
In both the transmitter and receiver, the nRF24L01 wireless modules
are interfaced to their respective
controllers using the Nano’s serial
peripheral interface (SPI). The pin
connections for the nRF24L01 are
shown in Fig.10.8, while the signals
are listed together with their function in Table 10.2. The pin connections for an Arduino Nano are shown
in Fig.10.9.
We’ve used the microcontroller’s
USB port for programming and also
as the 5V power source.
Using the NRF library
An NRF24 library can be used to
simplify interfacing with the wireless
module. While several are available,
we’ve used the RadioHead library
from www.airspayce.com/mikem/
arduino/RadioHead/
This library consists of two main
classes: Drivers and Managers. Drivers
provide low-level access to a range of
different packet radio chips (and other
devices designed for transporting data
in packet form), while Managers provide high-level message sending and
receiving facilities.
The code will have an instance of a
Driver to provide access to the radio
and a Manager that uses the specified
driver to send and receive messages
for your application. Your code needs
to instantiate the Driver and Manager;
it also needs to initialise the Manager.
The Manager can then be used to send
and receive messages.
The NRF24 libraries are easy to use.
For example, to set the RF channel,
you could use a statement of the form:
nrf24.setChannel(9);
The channel parameter should be
a value between 0 and 83. Values
outside this range will be outside the
approved ISM band in most countries
(including the UK); 66 should be the
highest channel used in the USA.
To set the data rate and transmit
Fig.10.4: a simple wireless data link based on the nRF24L01.
20
Practical Electronics | August | 2026
Antenna
Antenna
1
2
3
4
nRF24L01
6
7
1
2
3
4
nRF24L01
6
7
1
2
3
6
7
1
2
3
6
7
Arduino Nano
USB
Power/data
GND +3.3V D8
D10 SCK MOSI MISO
VIN
+
D2
OUT DHT22
GND
-
USB
Power/data
Fig.10.6: a remote temperature/humidity transmitter based on the nRF24L01.
power, you can use a statement like:
nrf24.setRF(
RH_NRF24::DataRate2Mbps,
RH_NRF24::TransmitPower0dBm);
There are two parameters here: one
sets the data rate, while the other sets
the transmission power. The data rate
can take values of 2Mbps, 1Mbps and
250kbps whilst the transmit power
can take values of 18mBm (-18dBm),
m12dBm (-12dBm), m6dBm (-6dBm)
or 0dBm.
As a further example, to set the data
rate to 1Mbps and a transmit power of
-6dBm, you would use:
nrf24.setRF(
RH_NRF24::DataRate1Mbps,
RH_NRF24::TransmitPowerm6dBm);
USB PORT
The chip can be set to transmit or
receive mode using statements like:
nrf24.setRF(
RH_NRF24::setModeRx());
nrf24.setRF(
RH_NRF24::setModeTx());
Transmitter code
The remote temperature/humidity
transmitter code is shown in Listing
10.1. This requires including four library header files: Arduino.h, DHT_
Async.h, SPI.h and RH_NRF24.h.
#include <Arduino.h>
#include "DHT_Async.h"
#include <SPI.h>
#include <RH_NRF24.h>
RH_NRF24 nrf24;
/* Uncomment for different sensors */
//#define DHT_SENSOR_TYPE DHT_TYPE_11
//#define DHT_SENSOR_TYPE DHT_TYPE_21
#define DHT_SENSOR_TYPE DHT_TYPE_22
4
5
D10 SCK MOSI MISO
Arduino Nano
Fig.10.7: a receiver for the remote
temperature/humidity sensor.
VCC
CSN
MOSI
IRQ
5
2 4 6 8
1 3 5 7
GND
CE
SCK
MISO
GND +3.3V D8
4
Fig.10.8: the pinout of the nRF24L01.
Listing 10.1: the code for
the remote temperature/
humidity transmitter.
The listings and libraries
in this article can be
downloaded from
https://pemag.au/link/
acby
static const int DHT_SENSOR_PIN = 2;
DHT_Async dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SCK
3.3V
REF
A0
A1
A2
A3
A4
A5
A6
A7
VIN
RST
GND
VIN
MISO
MOSI
SS
D9
D8
D7
D6
D5
D4
D3
D2
GND
RST
D1/RXD
D0/TXD
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
Top view
Fig.10.9: the pinout of the Arduino Nano.
Practical Electronics | August | 2026
/* Initialize the serial port and wireless module */
void setup() {
nrf24.init();
nrf24.setChannel(1);
nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm);
}
/* Obtain a reading from the DHT sensor */
static bool measure_environment(float *temperature, float *humidity) {
static unsigned long measurement_timestamp = millis();
/* Get readings at five second intervals */
if (millis() - measurement_timestamp > 5000ul) {
if (dht_sensor.measure(temperature, humidity)) {
measurement_timestamp = millis();
return (true);
}
}
return (false);
}
/* Main program loop */
void loop() {
float temperature;
float humidity;
if (measure_environment(&temperature, &humidity)) {
// Send data via the NRF24
byte data[4]; // Four bytes of data
data[0] = ((int(temperature) >> 8) & 0xFF);
data[1] = (int(temperature) & 0xFF);
data[2] = ((int(humidity) >> 8) & 0xFF);
data[3] = (int(humidity) & 0xFF);
nrf24.send(data, sizeof(data));
}
}
21
Table 10.2: nRF24L01 signals
Pin Signal
Function
1
GND
0V common
2
VCC
+3.3V supply
3
CE
Active-high chip
enable
4
CSN
Active-low chip select
5
SCK
Serial clock
6
MOSI
Serial data to the
module
7
MISO
Serial data from the
module
8
IRQ
Interrupt request (not
used here)
These library files can be downloaded and installed in the usual
way; if you experience problems, a
web search for the named file will
usually help.
We’ve used a DHT22 sensor for this
application (and the wireless frost
alarm that follows) because it has
an extended low-temperature range.
If desired, alternative DHT-series
temperature sensors can be selected
by simply uncommenting the corresponding code.
The nRF24L01 is initialised using
just three lines of code. We’ve selected
channel 1, a data rate of 2Mbps and a
transmission power of 0dBm (1mW).
Readings of temperature and humidity are taken at intervals of five seconds (5000ms) and two float variables
are used to store the temperature and
humidity data.
The data is sent over the wireless
link as a packet of four bytes (two
bytes for the temperature data and
two bytes for the humidity data). The
code has been liberally commented
and is given here as a basis for further
experimentation.
Receiver code
The code for the remote temperature/humidity receiver is shown
in Listing 10.2. This requires three
library headers: Arduino.h, SPI.h
and RH_NRF24.h (DHT_Async.h is
not needed). The nRF24L01 must
be initialised with the same parameters used for the transmitter. If you
make any changes to the RH_NRF24
parameters in the transmitter code,
make identical changes in the receiver code.
The receiver waits for data from
the transmitter (arriving every five
seconds) before sending it via the
Nano’s serial interface for display using the Arduino IDE running on the
22
#include <Arduino.h>
#include <SPI.h>
#include <RH_NRF24.h>
int tempdataReceived;
int humidataReceived;
// Temperature data received
// Humidity data received
Listing 10.2:
the code for the
temperature/
humidity receiver.
RH_NRF24 nrf24;
static const int DHT_SENSOR_PIN = 2;
/* Initialize the serial port and radio */
void setup() {
Serial.begin(115200);
nrf24.init();
nrf24.setChannel(1);
nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm);
}
/* Main program loop */
void loop() {
byte buf[RH_NRF24_MAX_MESSAGE_LEN];
byte len = sizeof(buf);
if (nrf24.waitAvailableTimeout(500)) {
Serial.println("Checking for received data ...");
// Check for message data
if (nrf24.recv(buf, &len)) {
tempdataReceived = (buf[0] << 0) + buf[1];
humidataReceived = (buf[2] << 0) + buf[3];
}
}
}
delay(400);
Serial.print("Temperature = ");
Serial.print(tempdataReceived, 1);
Serial.println(" deg. C");
Serial.print("Humidity = ");
Serial.print(humidataReceived, 1);
Serial.println("%");
host computer. The temperature and
humidity data received (tempdataReceived and humidataReceived)
are both defined as integers.
Testing
The receiver and transmitter should
work well at distances of up to about
15m with an unobstructed path. In a
building, coverage will be reduced by
factors like walls, wiring and interference from other 2.4GHz devices. The
antenna type and positioning can be
crucial for good performance, so it’s
worth experimenting with the orientation and position.
Received signals may suffer from
multiple reflections, with direct and
reflected waves arriving simultaneously at the receiver via different
paths. It’s therefore extremely difficult
to predict the performance of lowpower wireless systems; some on-site
experimentation will invariably be
required to yield the best results.
A wireless frost alarm system
Having demonstrated a simple
communication system using wireless
modules, we shall move on to describe
a simple stand-alone application in
which wireless is used to implement
a remote frost alarm. We shall use
the same transmitter arrangement as
before, but here the sensor must be a
DHT22 to work properly below 0°C.
The receiver arrangement incorporates three LEDs to indicate the sensed
temperature ranges, together with a
piezoelectric sounder to provide an
audible frost warning. The receiver
circuit diagram is shown in Fig.10.10.
The code for the wireless frost
alarm receiver is in Listing 10.3.
Once again, we need to include three
library headers: Arduino.h, SPI.h and
RH_NRF24.h. In this application, we
are only concerned with temperature
data, so we have only declared the
tempdataReceived variable. Next, we
have defined constants for the upper
and lower temperature thresholds, ut
and lt respectively.
In Listing 10.3, we’ve set these to
5°C (above which the green LED will
light) and 2°C (below which the red
LED will be illuminated and the alarm
will sound). Between the two thresholds, the amber LED is illuminated.
For testing purposes, you might like
to replace the values shown in Listing
10.3 with values closer to those found
in your environment (we used 25 for
ut and 23 for lt, corresponding to 25°C
and 23°C, respectively).
The sub-GHz bands
Frequencies below 1GHz offer superior performance at reduced power
levels and are generally less congested
than the 2.4GHz band, where Wi-Fi
and Bluetooth links proliferate.
Practical Electronics | August | 2026
Therefore there has been an increasing interest in modules that use the
sub-GHz ISM/SRD bands at 315MHz,
433MHz, 868MHz and 915MHz. As
not all of these may be legally used
in your country, it’s essential to check
with your national regulator.
The proliferation of devices available from global online sources and
‘grey imports’ makes it essential to
check specifications before purchase,
particularly to ensure the frequency
coverage is correct for your location.
The CC1101 from Texas Instruments
is a good example of a low-cost subGHz wireless transceiver. It is primarily intended for use within the ISM
and SRD frequency bands at 315MHz,
433MHz, 868MHz and 915MHz, but it
can also be programmed for operation
within several additional frequency
ranges, including 300-348MHz, 387464MHz and 779-928MHz.
The transceiver incorporates a
configurable baseband modem supporting various modulation formats
at data rates up to 600kbps. The chip
incorporates packet management,
data buffering, burst transmission,
clear channel assessment, link quality indication and wake-on-radio
functions. Like the nRF24L01, it has
a conventional SPI microcontroller
interface (see Fig.10.11).
Its receiving sensitivity is -116dBm
at 0.6kbaud when operating at
433MHz and -112dBm at 1.2kbaud
for 868MHz operation. Current consumption is typically less than 15mA,
varying with the selected transmission
power level. The maximum transmission power is +12dBm, while the
maximum data rate is 600kbps.
Its normal working range is similar
to that which can be achieved with
similar devices in the 2.4GHz band
operating at higher power levels.
Distances of 10-100m are typical with
lower data rates, but over 1km can be
achieved with suitable antennas and
a clear, line-of-sight path.
Where extended range is essential,
for long-range (LoRa) applications,
RH_NRF24 nrf24;
static const int DHT_SENSOR_PIN = 2;
/* Initialize the serial port, radio and I/O */
void setup() {
Serial.begin(115200);
nrf24.init();
nrf24.setChannel(1);
nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm);
// Setup digital outputs
pinMode(green, OUTPUT);
pinMode(amber, OUTPUT);
pinMode(red, OUTPUT);
pinMode(alarm, OUTPUT);
}
/* Main program loop */
void loop() {
byte buf[RH_NRF24_MAX_MESSAGE_LEN];
byte len = sizeof(buf);
if (nrf24.waitAvailableTimeout(500)) {
Serial.println("Checking for received data ...");
// Check for message data
if (nrf24.recv(buf, &len)) {
tempdataReceived = (buf[0] << 0) + buf[1];
}
delay(400);
Serial.print("Temperature = ");
Serial.print(tempdataReceived, 1);
Serial.println(" deg. C");
}
}
3
4
nRF24L01
6
7
1
2
3
6
7
5
if (tempdataReceived > ut) // Green ON
{
digitalWrite(green, HIGH);
digitalWrite(amber, LOW);
digitalWrite(red, LOW);
digitalWrite(alarm, LOW);
} else if (tempdataReceived <= lt) // Red and alarm ON
{
digitalWrite(green, LOW);
digitalWrite(amber, LOW);
digitalWrite(red, HIGH);
digitalWrite(alarm, HIGH);
} else // Amber ON
{
digitalWrite(green, LOW);
digitalWrite(amber, HIGH);
digitalWrite(red, LOW);
digitalWrite(alarm, LOW);
}
Antenna
2
4
Listing 10.3: the
NRF24 wireless
frost alarm code.
int tempdataReceived; // Temperature data received
int ut = 5;
// upper threshold
int lt = 2;
// lower threshold
int green = 2;
// Green LED
int amber = 3;
// Amber LED
int red = 4;
// Red LED
int alarm = 5;
// Sounder
1
GND +3.3V D8
USB
Power/data
#include <Arduino.h>
#include <SPI.h>
#include <RH_NRF24.h>
D10 SCK MOSI MISO
Arduino Nano
GND
Fig.10.10: a remote frost warning
receiver based on the nRF24L01.
Practical Electronics | August | 2026
D5
D4
D3
D2
R1
330
R2
330
R3
330
D1
D2
D3
Green Amber Red
PZ1
Sounder
Fig.10.11: a tiny (17 × 19mm) CC1101
module designed for use at 868MHz.
23
Antenna
CC1101
1
2
3
4
5
6
7
1
2
3
4
5
6
7
Level shifting interface
USB
Power/data
GND
VCC
CE
CSN SCK
MO
MI
GND
+5V
D9
D10 D13 D11 D12
Fig.10.13: the wireless components for the 433MHz multi-mode beacon.
From left to right, a low-cost interface board, 433MHz CC1101 wireless
module and SMA antenna.
P3-2
Arduino Nano
P2-1
C4 +
10uF
Fig.10.12: the 433MHz multi-mode beacon circuit.
the chip can be paired with its
CC1109 matching range extender.
This add-on provides up to +20dBm
output at 868MHz and up to +27dBm
at 915MHz. This also improves the
receiving sensitivity by about 6dB.
An interesting feature of the CC1101
is that it caters for several different
forms of modulation, including twoand four-level frequency-shift keying
(2-FSK and 4-FSK), Gaussian frequency-shift keying (GFSK) and minimum
frequency-shift keying (MSK).
GFSK is an extension of the FSK
modulation scheme where the
frequency of the modulated signal
doesn’t change instantaneously at
the start of each change of data bit.
Abrupt changes in frequency are thus
avoided. Consequently, the transition from one logic state to another
becomes smoother.
In MSK, the frequency difference
between logical 0 and 1 is minimised
to half the data rate, resulting in a
spectrally efficient constant-envelope
waveform. The CC11010 also offers
amplitude-shift keying (ASK), which
Fig.10.16: the circuit
for the RF relative field
strength indicator.
From SK1
RF input
C1
100pF
L1
47uH
C3
4.7nF
C2
47nF
VR1
10kΩ
P2-2
TR1
BC517 c
b
R2
1kΩ
+
+
-
RV1
2kΩ
S1
P1-1
B1
9V
M1
1mA
P1-2
-
e
P3-1
Fig.10.17: the relative field strength indicator component layout (top).
is the same as on/off keying (OOK)
when a binary signal is applied.
A sub-GHz multi-mode beacon
Fig.10.14: the wiring of the 433MHz
multi-mode beacon.
24
D2
LED
R1
3.3kΩ
D1
BAT42
R3
4.7kΩ
To provide you with an example of using the sub-GHz
bands, we’ve made a
simple CC1101
multi-mode
beacon for experimental operation.
The beacon operates on the SRD
frequency of 433.92 MHz, which is
shared with part of the 70cm amateur
band.
Our example generates successive
identification messages (including the
author’s callsign and location) at fivesecond intervals using four different
modulation methods: 2-FSK, GFSK,
ASK/OOK, and 4-FSK.
The circuit of the 433MHz multimode beacon is shown in Fig.10.12.
Connections to the Arduino Nano
microcontroller via SPI are like those
used for the nRF24L01, but we’ve
added an interface to cope with the
level-shifting necessary required
to interface the 3.3V world of the
Practical Electronics | August | 2026
CC1101 with the 5V levels used by
the Nano.
The level-shifting can be accomplished using an inexpensive
module that’s compatible with SRD
devices like the CC1101 and nRF24
(available from several online suppliers, eg, https://pemag.au/link/
acck). Fig.10.13 shows the three
wireless components required.
The interconnection between
the interface board and Nano microcontroller can be conveniently
made using a short ribbon cable, as
shown in Fig.10.14. Incoming power
is supplied via the Nano’s type-C
USB connector.
The code for the 433MHz multimode beacon is shown in Listing
10.4. We’ve used the excellent
ELECHOUSE_cc1101 library that
provides a huge range of configuration
options. In Listing 10.4, we configure
the device for operation at 433.92MHz
with a frequency deviation of 2.5kHz,
a data rate of 125bps and an RF output
of 10mW (10dBm).
Fig.10.15 shows the frequency
spectrum of the output of the
433MHz multi-mode beacon. This
was obtained using an inexpensive
spectrum analyser (see part 7 in the
May 2026 issue) together with a
10dB SMA attenuator connected in
the RF output.
Hands-On: A simple RF relative
field strength indicator
This month’s Hands-On project
is another useful item of RF test
equipment: a simple RF relative field
strength meter. It is designed primarily for operation over 3.5-150MHz
but provides indications from below
1MHz to over 400MHz with reduced
sensitivity.
The circuit is shown in Fig.10.16;
it comprises a Schottky diode detector
(D1) followed by a high-gain Darlington transistor amplifier (TR1). The
instrument provides indications using
a 1mA moving coil meter (M1) and
one LED, which becomes illuminated
when strong signals are detected.
Sensitivity is varied by means of a
preset control, RV1. The instrument
is self-contained and operates from
an internal 9V PP3 battery.
As with our previous Hands-On
projects, it is built on a 25 × 64mm
piece of perforated copper stripboard,
arranged as nine strips each of 24
rows. The component layout (viewed
from the top) is shown in Fig.10.17,
while the corresponding track layout
(viewed from below) is in Fig.10.18.
#include <ELECHOUSE_CC1101_SRC_DRV.h>
int gdo0;
Listing 10.4: CC1101
433MHz beacon code
demonstrating different
modulation methods.
void setup() {
gdo0 = 9; // for Arduino Nano
Serial.begin(9600);
if (ELECHOUSE_cc1101.getCC1101()) { // Check the CC1101 SPI
Serial.println("Connected to the wireless module");
} else {
Serial.println("Not connected to the radio module!");
}
ELECHOUSE_cc1101.Init();
ELECHOUSE_cc1101.setGDO0(gdo0);
ELECHOUSE_cc1101.setCCMode(2);
ELECHOUSE_cc1101.setMHZ(433.92);
// Frequency = 433.92MHz
ELECHOUSE_cc1101.setDeviation(2.50); // Deviation = 2.5kHz
ELECHOUSE_cc1101.setDRate(0.125);
// Data rate = 125bps
ELECHOUSE_cc1101.setPA(10);
// RF output = 10mW
ELECHOUSE_cc1101.setPktFormat(0);
ELECHOUSE_cc1101.setLengthConfig(1);
Serial.println("Tx Mode");
}
void loop() {
// Beacon message generated every five seconds
Serial.println("Sending 2-FSK");
ELECHOUSE_cc1101.setModulation(0); // set modulation mode to 2-FSK
ELECHOUSE_cc1101.SendData("2-FSK de G8CKT Billingshurst West Sussex");
delay(5000);
Serial.println("Sending GFSK");
ELECHOUSE_cc1101.setModulation(1); // set modulation mode to GFSK
ELECHOUSE_cc1101.SendData("GFSK de G8CKT Billingshurst West Sussex");
delay(5000);
Serial.println("Sending ASK/OOK");
ELECHOUSE_cc1101.setModulation(2); // set modulation mode to ASK/OOK
ELECHOUSE_cc1101.SendData("ASK/OOK de G8CKT Billingshurst West Sussex");
delay(5000);
Serial.println("Sending 4-FSK");
ELECHOUSE_cc1101.setModulation(3); // set modulation mode to 4-FSK
ELECHOUSE_cc1101.SendData("FSK de G8CKT Billingshurst West Sussex");
delay(5000);
Serial.println("Sending MSK");
ELECHOUSE_cc1101.setModulation(4); // set modulation mode to MSK
ELECHOUSE_cc1101.SendData("MSK de G8CKT Billingshurst West Sussex");
delay(5000);
}
Fig.10.15: the
output frequency
spectrum of the
433MHz multimode beacon.
Fig.10.18: the RF relative field strength
indicator track layout (underside view).
Practical Electronics | August | 2026
25
1591 ABS flame-retardant enclosures
Learn more:
hammondmfg.com/1591
uksales<at>hammfg.com • 01256 812812
The required 21 track breaks can
be made using a spot-face cutter
or a small drill bit, while the six
links on the upper side of the board
can be made using short lengths of
tinned copper wire or component
lead off-cuts.
Take care to observe the correct
polarity of Darlington transistor
TR1 and diode D1 (the stripe on
the package of D1 indicates the
cathode).
The completed stripboard is
mounted, together with the combined VR1/S1, inside a small ABS
enclosure.
Suitable cases are available from
several online suppliers at a reasonable cost. When purchasing,
it’s important to check that the di-
mensions of the case are sufficient
to accommodate the board (25 ×
64mm) and 9V battery, while also
having sufficient depth to accept
the meter movement.
The enclosure used for the prototype measured 100 × 68 × 50mm.
Fig.10.19 shows the internal
wiring of the RF relative field
strength meter. The circuit board
is mounted in the base of the enclosure alongside the battery. The
variable sensitivity control (VR1),
on/off switch (S1), LED indicator
(D2) and meter (M1) are mounted
on the lid.
Point-to-point wiring is used to
link the lid-mounted components
to the board and battery in the main
part of the case.
The RF input connector (SK1)
is mounted on the top of the enclosure.
To avoid the need to solder the
coaxial connector, we’ve used
a ready-made panel-mounting
BNC socket with a 15cm pigtail
cable and SMA connector (see
Fig.10.20).
Adjustment
The RF voltmeter probe requires
initial adjustment of trimpot RV1
for maximum sensitivity. This is
accomplished by disconnecting the
RF input (remove any antenna) and
setting RV1 to its fully anticlockwise position.
Next, switch the unit on and
advance VR1 to its maximum
Fig.10.19: the internal wiring of the RF
relative field strength indicator.
26
Practical Electronics | August | 2026
clockwise setting (corresponding
to maximum sensitivity).
Now carefully adjust RV1, turning
it clockwise until the meter pointer
just lifts off the zero position.
This completes the adjustment
and the meter is ready for use by
placing the antenna in the RF field
to be measured, eg, near a transmitting antenna. A short telescopic
antenna fitted with a male BNC
connector will work well for most
measurements from 3.5MHz to
450MHz, but care should be taken
to avoid overloading the detector.
Coming up...
Next month, our final Teach-In
12 instalment will provide a host
of ideas for further exploration.
We will supply some information to get you started with shortwave listening, amateur radio and
aircraft radio, as well as LoRa and
LoRa WAN technology.
Our Hands-On constructional
project will be a handy RF preamplifier for use with an SDR or
conventional HF receiver. See you
PE
next time!
Parts list – RF relative field strength meter
1 47µH axial RF inductor (L1)
1 1mA moving coil meter (M1)
3 2-way 0.1-inch/2.54mm pitch headers (P1-P3)
1 2k miniature horizontal preset (RV1)
1 panel-mount female BNC socket with male SMA 15cm pigtail connector (SK1)
1 10kΩ linear variable resistor with integral switch (VR1/S1)
1 small plastic pointer knob to suit VR1/S1
1 9V PP3 battery and connecting clip
Hardware
1 ABS enclosure, at least 100 × 68 × 50mm
4 brass or nylon M3 × 5mm tapped hex standoffs/spacers
4 M3 × 5mm panhead machine screws
4 M3 × 5mm countersunk head machine screws
Semiconductors
1 BAT42 Schottky diode (D1)
1 5mm LED (D2)
1 BC517 NPN Darlington transistor, TO-92 (TR1)
Capacitors
1 10µF 16V radial electrolytic (C4)
1 47nF 50V ceramic (C2)
1 4.7nF 50V ceramic (C3)
1 100pF 50V ceramic (C1)
Resistors (all ¼W axial, ±5% or better)
1 4.7kΩ (R3)
1 3.3kΩ (R1)
1 1kΩ (R2)
Fig.10.20: an external view of the completed RF
relative field strength indicator.
Practical Electronics | August | 2026
27
|