Theory
Channel capacity
Shannon-Hartley law: C = B * log2(S/N + 1), where C is channel capacity [bps], B is bandwidth [Hz] and S/N is signal/noise ratio.
Example: dPMR (C = 4800bps, B=6250Hz). So S/N must be at least 0.70.
Number of bits/symbol needed
Nyquist's Theorem : C = 2*B *log2(N)
Example: dPMR (C = 4800bps, B=6250Hz). So N is 1.3bits/symbol.
Noise floor
–174 dBm is the thermal noise floor at room temperature in a 1-Hz bandwidth.
e.g. for 10kHz bandwidth, the noise floor is -134dBm.
(Long-range RF communication: Why narrowband is the de facto standard, Texas Instruments)
Legal limitations
We can only make use of unlicensed bands. Some bands only allow pre-certified equipment and fixed antennas. Here are some options for unlicensed spectrum. I left out the <100mW options and constrained myself to the sub-1GHz options.
27MHz
- Citizen band : 12W, SSB, 10kHz channels, 26.690MHz to 27.410MHz, some channels excluded
- SRD : 100mW, 5 10kHz wide channels around 27MHz, <0.1% duty cycle
169MHz
- SRD : 0.5W, 169.4MHz to 169.475MHz, 50kHz channels, <1% duty cycle
446MHz
- PMR446 : 0.5W, ,6.25kHz or 12.5kHz, 446MHz to 446.2MHz
823-832MHz
- Intercom : 100mW, BW<200kHz
865-868MHz & 874-874.4MHz & 917.3-918.9MHz
- SRD : 0.5W, BW<200kHz, divided into 4 allowable sub bands, <2.5% duty cycle
869.4-869.65MHz
- SRD860 : 0.5W, BW<250kHz, <10% duty cycle
Side note
Polite spectrum access = listen before transmit (LBT) and adaptive frequency agility (AFA).
As contradictory as it might seem, LBT+AFA is no benefit over 10% duty cycle. It restricts the system to 100s per hour per 200kHz bandwidth (=2.8% duty cycle), a maximum transmission time of 4s and so on... (see ETSI EN 300 220-1 V3.1.1 (2017-02), 5.21.3.1).
Modulation types
LoRa
LoRa is a wide band modulation (250kHz), which forces us to keep duty cycles <10%. To get enough throughput, SF6 would have to be used.
Possible ICs : SX1278/RFM98
Parameters
The code used is here. The client keeps sending data to the server. The server acknowledges each packet. Every 10s, the server prints out a report.
The RSSI is low because both modules are connected to a u.fl/SMA cable assembly which ends in a 50ohm load. These cable assemblies don't perform well. The signal level could be dropped further by removing the cable assemblies.
- Bw = 125 kHz, Cr = 4/5, Sf7 = 128chips/symbol, CRC on :
- 10 byte/frame : Total bytes : 1160 Total packets : 116 Bitrate : 928bps Average RSSI : -112.82 Average SNR : 6.78
- 30 bytes/frame : Total bytes : 2700 Total packets : 90 Bitrate : 2160bps Average RSSI : -114.97 Average SNR : 5.02
- 60 bytes/frame : Total bytes : 3900 Total packets : 65 Bitrate : 3120bps Average RSSI : -110.23 Average SNR : 7.68
- Bw = 500 kHz, Cr = 4/5, Sf7 = 128chips/symbol, CRC on :
- 10 bytes/frame : Total bytes : 4680 Total packets : 468 Bitrate : 3744bps Average RSSI : -110.21 Average SNR : 0.70
- 30 bytes/frame : Total bytes : 10200 Total packets : 340 Bitrate : 8160bps Average RSSI : -108.82 Average SNR : 1.40
- 60 bytes/frame : Total bytes : 14880 Total packets : 248 Bitrate : 11904bps Average RSSI : -108.08 Average SNR : 1.75
Spreading Factor 6 doesn't seem to work using the RadioHead library. Anyway, the throughput is rather low, taken into account that most legal options require a maximum 10% dutycycle when using such large bandwidths. The values shown here are close to 100% duty cycle.
(G)FSK
Fairly low bandwidth, more suitable for voice comms using 10kHz wide channels. Duty cycle limitations would not be needed.
Some basics
- Frequency deviation (FDEV) = the difference between the minimum and maximum extent of a frequency modulated signal, and the nominal center or carrier frequency. fcarrier - fmin = fmax - fcarrier = FDEV
- Bandwidth is defined by Carson's Rule : BW = 2*(FDEV+BR/2) = BR+2*FDEV
- modulation index (m) = FDEV(max) / fmodulatingMAX = FDEV/(BR/2) = FDEV*2/BR
- MSK when m = 0.5, from FDEV*2=BR/2
- Example MSK calculation for GSM
- Narrowband FM when m < 1
- For SX1278 m must be between 0.5 and 10
Possible ICs : SX1278/RFM98, SI4463/RFM26, RFM23, AX5243-D, AX5043, CC1101 or newer
- NiceRF RF4463F30
- Bands: 142–175, 283–350, 420–525, and 850–1050 MHz
- 64byte FIFO
- data whitening
- Low power 20dBm option (ebyte module)
- HopeRF RFM23BP
- Bands: 413-453, 848-888, 895-935 MHz
- 64byte FIFO
- data whitening
- Some drawings in the datasheet are copied from the SI4463. Is HopeRF using SI4463 ICs?
(G)4FSK
Possible ICs : SI4463, AX5243-D (SPI, no single ended antenna output, so can't be used with external PA), AX5043 (SPI interface), CC1101 (or newer).
SI4432 is obsolete. The OnSemi AX5243-D is not available on a 500mW - 1W module.
AX5043 looks interesting, but little tools are available. There's a home brew radio however.
WiFi
I'm not planning to turn this into an actual application. It's only a proof of concept. If you want a VoIP solution that you could really use in your application, have a look at Mumble. It's used in the RigPi.
TCP
- wireless_mic_TCP : a server is connected to an audio source. Clients can connect to this server and output the received sound to an audio sink. One way transmission only. In contrast to the example it was based on, this implementation is fully non-blocking.
- wireless_2way_audio_TCP : simultaneous 2 way audio system. Voice-intercom over TCP-connection. A very simple VoIP application in some way.
- wireless_2way_audio_TCP_codec2 : the same application as above, but transferred data is first encoded with codec2.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.