I’ve been meaning to get round to this for a while. I bought one of Ciseco’s SRF transceivers when they first came out in October last year but didn’t get round to trying it until a couple of months ago when there were rumours of the RFM12B being discontinued and while that isn’t the case just yet (it is still in production just not recommended for new designs) there are a few reasons why you might want to use the Ciseco SRF in place of the RFM12B on the TinyTX wireless sensor node.
The first nice thing about the SRF is it uses the same footprint as the RFM12B so it will fit in nicely on the TinyTX. It is supposed to have a better range although I’ve not had chance to do any proper long range tests with it against the 433MHz RFM12Bs that I used but 300M range in open space and penetration through 3-5 walls is claimed on the product page and that is with the built in chip antenna, replacing this with a wire one (as is necessary with the TinyTX) gets you a better range. Someone got as far as 3Km with the compatible XRF and wire antennas although it was at a very low data rate.
The SRF is also compatible with several other Ciseco modules such as the XBee form factor XRF, the USB connected URF and the Raspberry Pi “Slice of Radio” module which might make linking up with other systems easier.
In transparent serial mode the SRF works just like the Xbee type devices, it’s as simple as connecting it to a UART or using SoftwareSerial to talk to it at 9600 baud (by default), what goes in one end comes out at the other just as if there was a wired link. Other features are controlled with AT commands which can be used to set up the built in encryption (very easy to use) and enable the various sleep modes among other things. The only thing I’ve changed is to configure it to use sleep mode 2 (deep sleep) so it can be turned on and off with a pin from the ATtiny and uses a miniscule 0.2 uA when asleep.
It’s a very nice little module and the only downside is that at £11.52 is around twice the price of the RFM12B. Hopefully that will come down in time.
To use the SRF on the TinyTX just means snapping off the built in chip antenna section, soldering it in place of the RFM12B, adding an 82mm wire antenna and loading the SRF version of the code to the ATtiny84. I haven’t implemented ACKs for the SRF code at the moment as this would require a hardware modification to the TinyTX as the pad for the SRF’s DOUT pin isn’t connected to anything on the ATtiny, the little grey wire you can see disappearing under the left side of the board in the picture above is one I’ve added to link this up to experiment with.
For communicating I’ve used the SoftEasyTransfer library (part of the Arduino-EasyTransfer library) to send a typedef struct in a data packet which is length checked and checksummed to avoid corruption and mangled packets caused by multiple nodes transmitting at once. Here is some code for use with a DS18B20 temperature sensor and here is a simple receive example that should work on a standard Arduino with an XRF connected with DIN to pin 3 and DOUT to pin 4. In another post I will post details of updated gateway code that works with the RFM12B, SRF and another type of radio that is coming up in the next post.
Note that I’m using the Narcoleptic library for a low power delay instead of the loseSomeTime in Jeelib but I made a small mod by changing the variable type for the delay from an int to unsigned int in Narcoleptic.cpp and Narcoleptic.h so that I could extend the delay to 60 seconds.
Use of the SRF with the TinyTX should be treated as experimental as I’m not running this in a live environment just yet but it has been working fine for the last few days and I thought it might be of interest to some people as an alternative to the venerable RFM12B, especially if you already have other compatible Ciseco radios. I’ve also got some other ideas brewing where this range of radios could work very well.