I’ve chosen a Microcontroller and GPS module. The last major element that I need to select is the narrow-band RF transceiver. My priorities here are physical size, power consumption and the transmit/receive range.
The way I’ll want to use the Transceiver is thus:
- The transceiver sits in an ultra-low-power sleep mode for around 10 seconds.
- After this, the transceiver wakes up and waits for a transmission from the base station for around 1 second.
- If a transmission is received in the period above, e.g. a request for the collar’s position, then the collar wakes up the GPS module, gets a position fix and transmits the position back to the base station.
- Once the position has been transmitted back to the basestation (perhaps multiple times for reliability) then it goes back to its ultra-low-power sleep mode.
I’ve looked at a few different protocols and ICs, summarised below:
Bluetooth is a fairly obvious protocol to investigate, given how ubiquitous it is these days. The generic term ‘Bluetooth’ could either be referring to Bluetooth 2/3 (sometimes called Legacy Bluetooth) or Bluetooth 4 (sometimes called Bluetooth Low Energy or LE). Although they share a name, the two protocols are completely different from each other.
This older incarnation of Bluetooth is used for things like Bluetooth Speakers and over-the-air File Transfers. In theory the maximum data rate is 3 Mbps – much faster than I am likely to need.
An easy way to get up and running with Bluetooth 2/3 is to use a Bluetooth UART module. The cheapest of these is the HC-05 – popular among hobbyists. The beauty of these modules is that once you buy two and pair them up, you can send UART data into one module from your microcontroller and receive it from the other module, up to around 50 metres away. The module itself handles all of the faff and complexities around using the Bluetooth protocol.
Although incredibly easy to use and very effective, the HC-05 module isn’t suitable for use in CatTrack for a few reasons:
- Range – the sensitivity of Bluetooth receivers is only around -90 dBm with a transmit power of < +10 dBm. Ideally to get the range I want I’ll need the sensitivity to be better than -110 dBm, so Bluetooth is some way off.
- Power consumption – Bluetooth 2/3 is not designed for low power consumption.
In theory the size of the HC-05 module (27mm x 13mm) is too big for my requirements too, but I would not use the module in the form shown in the photo above. I would be using the raw ICs. For the HC-05 that means a BC417 Bluetooth IC and a small memory module.
Bluetooth 4 / LE
Bluetooth 4 definitely addresses the power consumption issue of Bluetooth 2/3. It has been designed from the ground up to be able to run on a coin cell for around a year. Exactly what I’m after! It’s the protocol used in these ‘key finder’ type devices:
However… the range is still quite a way off what I need. Realistically you will only get around a 50 metre range with Bluetooth LE. I need much more than that, hundreds of metres at least!
LORA is a fairly new protocol that has been developed with range in mind. It offers a sensitivity down to around -148 dBm and a transmit power of +20 dBm. This gives a pretty amazing 168 dB link budget! This translates, in theory, to miles and miles of range for CatTrack (depending on the antenna).
Semtech seem to pretty much hold the rights to LORA modulation. Their SX1276/77/78/79 device looks to be the one to go for.
One thing you need to be aware of is that it isn’t possible to break the laws of physics. In order to get such an incredibly good sensitivity, the bit rate must have to be very low indeed. Sure enough, this can be seen in the datasheet:
In order to achieve a sensitivity of -147 dBm, our data rate has to be only 24 bits per second. This means it’d take a good few seconds to transmit our GPS position, which in turn means that because the transmitter is on for longer, our battery life will decrease.
The last transceiver I’ll look at will be a raw FSK transceiver. You can get really cheap FSK transceivers for only a few pounds from eBay.
I call these raw FSK transceivers because they are just that. There’s no protocol or error correction like Bluetooth. Literally all you can do is transmit either a 0 or a 1. It’s then up to you to design your own protocol to interpret those 0s and 1s.
After a bit of research I found that TI’s range of devices seemed to be the most full featured. Of those devices, the CC1125 was the most suitable for my needs. It offers the best sensitivity of all TIs devices, at -129 dBm when receiving at 300 bits per second.
LORA or FSK?
Now I need to choose a device to go with! I have my reservations around the LORA protocol. I don’t think that in the real world it is realistic to expect the kind of range that the sensitivity implies.
The problem with LORA is that it is a wide-band system, compared to FSK’s narrow-band operation. This can cause problems in the real world because in order for LORA to work, we need a completely quiet area of spectrum, up to 125 kHz wide. If a signal pops up anywhere in this 125 kHz bandwidth whilst we are trying to transmit then the transmission will be corrupted. Given that I plan to use an ISM band – there is a good chance that there will be a lot of other signals popping up from time to time in the same band.
Anecdotal reports indicate that when tested in the real world, LORA offers no range benefit over TI’s FSK range, due to LORAs wide-band operation.
Along with reading a white paper on why narrowband is the de facto standard for long-range communication (which I admit may be a little biased based on who wrote it!), I think I’ll go with the CC1125 FSK device.
My experience with LoRa is very different from what you theorize. It performs much better at long range or non-line-of-sight than FSK. I can do 10-mile links with simple dipole antennas on low power and at reasonable data rates for GPS position info (<1s for data + ack). I could never get anywhere close using FSK at similar power levels, although I have not pushed the data rate quite as low (the narrow bandwidth then brings up xtal drift issues).
The issue you don't touch upon is how you wake-up from sleep. You can't be running the receiver all the time. So IMHO it comes down more to how you listen for a possible request with the minimal power, which has to do with RX power, preamble length, duty cycle, etc.
That’s good to hear regarding LoRa – I’ll have to give it a go for perhaps a future revision and compare the range of the two in the real world and see what happens.
I’m getting a sensitivity of around -126 dBm at 300 bps. My receive bandwidth is only 3.8 kHz and as you say there are xtal issues to contend with, which I address in this post.
Indeed, the receiver doesn’t run all the time. For 16 seconds I put everything into the lowest possible power state I can. Then for 1 second I switch the CC1125 into a low power ‘sniff’ mode. In this mode the receiver circuitry is enabled for a few milliseconds before then going back to sleep for a time, before being enabled it again. The base station sends a 30 byte preamble which is calculated to be the right length for this ‘sniff’ mode to pick up the signal.
One good feature of the CC1125 is that it doesn’t wake the microcontroller until it has received a valid packet and checked the CRC. This lets me save power as the PIC only needs to very briefly wake up to switch the power mode of the CC1125 – it doesn’t need to read bytes in from the CC1125 unless a CRC check has already been passed.