Hope RFM12B Wireless Module to RFM69W/HW Upgrade Path
Thanks to a post from John Beale on this forum, became aware of the recent work of LowPowerLab’s Felix Rusu.
After visiting Felix’s site and reading of his escapades in using the Hope RFM69W Wireless module and the
Arduino library he had written, I thought there would probabaly be some interest in cobbling a bit of generic
hardware together, that would enable an Arduino clone etc. to be retrofitted/upgraded from a RFM12B to RFM69W/HW.
The most obvious difference between the modules is that the RFM69W/HW is a 16 pin device while the RFM12B is a
14 pin module, so the module footprint difference is pretty minimal. 2mm headers have been used in the design
again, so as to not have to deal with possible module damage, if the modules require desoldering at some stage.
Have a read of the Hope RFM69W/HW datasheet, to read about the enhancements it offers.
Am attaching the Eagle files and a couple of photos of the Arduino footprint RFM69W/HW pcb.
|Hope RFM modules.jpg (267 KB) Hope RFM modules.jpg||RFM12B and RFM69H/HW module pcb|
|RFM69HW v1.0.sch (308 KB) RFM69HW v1.0.sch||RFM69H/HW eagle schematic|
|RFM69HW v1.0.brd (457 KB) RFM69HW v1.0.brd||RFM69H/HW eagle board|
|Img_3944b.jpg (320 KB) Img_3944b.jpg||RFM12B and RFM69HW modules on pcb|
|Img_3941b.jpg (208 KB) Img_3941b.jpg||RFM69HW module on pcb|
I am interested. I am unfortunately do not have the knowledge in
electronics or c++ to contribute. But do have the enthusiasm to try out
whatever comes up. A question I have is about library support. Would all
the JeeLabs Arduino libraries “just work?” or would all have to be updated.
If updated, what are your thoughts on this?
Enthusiastic … good for you! I hope I have understood your question
correctly, if not please let me know. As far as Arduino libraries are
concerned, the Felix Rusu, RFM69H/HW library merely REPLACES the Jean-Claude
Wippler, JeeLib RF12 library. The new library is needed to address register
differences between the RFM12B and RFM69H/HW and enable the extra features
that the RFM69H/HW affords. Obviously, once the RFM69H/HW has been installed
to replace the old RF12 library, any Arduino “sketches” that make calls to
the old RF12 library will require modification/updating.
I’ve been playing with some of Felix’s “Moteino” v4 boards, with the RFM69H module. It has more Tx power than RFM12B so you get a bit more range, also hardware buffer and encryption, but a major feature for me is the RSSI function. Both ends of the link can read the received signal strength directly in dB. This can really help in tuning up your system and finding the best place to locate your devices. The reported value is reasonably stable, so that with a sketch sending out packets at 150 msec intervals I will often see the very same RSSI reading 100x in a row (to a resolution of 1 dB). Of course if I move either node, or even walk in between them it changes things. See also: http://lowpowerlab.com/forum/index.php/topic,186.0.html
jbeale, are you using the 915MHz RFM69HW as supplied by Felix or a 868MHz RFM69HW-868-S2 sourced elsewhere? I think Felix says that they are similar if the antenna is clipped appropriately.
Sorry I had the wrong part number, it is RFM69W. I got the 915 MHz band Moteino v4 modules with RFM69W modules already installed by Felix. You could also choose the higher power (+20 dBm) RFM69HW for \$1 more, but the +13 dBm output of the RFM69W is already enough to cover my needs.
Thanks for that. I am very interested in your RSSI measurement experiments and would like to add RSSI recording to the central nodes of my Jeenodes. Do you consider it would be possible to inter-work RFM12B & RFM69W at the RF level?
> Do you consider it would be possible to inter-work RFM12B & RFM69W at the RF level?
I would also like to have a JeeNode/RFM12B talk to a RFM69 module. I think it is supposed to be possible, but AFAIK no one has done it yet. To try this you would need to fully understand the register configurations of both modules, which are extensive and I have not studied it enough to understand. For now I am just going to have two separate networks, RFM12B on one side and RFM69W on the other, even though they are both in the same 915 MHz frequency band.
I’m exploring a couple of options, and this is one of them. It may require adjusting the RFM12 packet field order a bit, although the most convenient option would really be to get the RFM69 to recognise the current format.
Fairly tricky stuff…
I wonder if tht has worked this.
Just a brief update on playing with the Hope RFM69HW wireless module. 3 x Hope RFM69HW modules, 2 x
Moteino boards and 3 x W25X40CL flash chips arrive from the States. Socketed one RFM69HW module to
my little pcb and soldered a second module to a Moteino as well as a flash chip. Loaded the Node and
Gateway sketch examples and WOW! Spent some time recently putting together several ATTINY84V boards
to use as battery powered remote sensor nodes but have to admit found the TINY’s limitations, a real pain.
Wish I had known about this Moteino R4 previously, as now intend to deploy several of these guys
instead of the ATTINY84Vs. As John Beale mentioned previously, the RSSI (Radio Strength Signal Indicator)
function is an incredibly handy feature for setting up for best reception scenarios. Looking forward to
conducting a few range tests but the cursory tests I have already conducted have already exceeded my
expectations as it is possible to reach all nooks and crannies in this three storey ferro-concrete
townhouse. The RFM12B certainly was not capable of this. The ability to also set the power level in software
to what is required, should enable a good compromise between range and current draw. Anyway, am attaching
a photo of the tested and completed units and a serial output screen capture. Will hopefully get back with
some line-of-sight range measurements, when I get a chance to do some testing down at the local beach.
Very promising report, I would like to see the mA versus range table when you have it to understand the how the granularity of the power and range values fit together.
I am also interested in which constraints you are hitting with the T84. It is indeed very limited but you can also do lots with them. I squeezed RF12Demo into one recently.
I’m afraid I wasn’t too clear in my post above. I would like to appreciate if the RSSI has a good mapping to the transmission power options available and to the range achieved with the RFM69W.
Had an opportunity to play with the Hope RFM69HW wireless modules a little bit more.
Being able to use Felix’s RFM69 library to actually measure real-time RSSI, decided to
check the performance of several eBay origin antennae, which I have acquired over the
years. The antennae are described as, “433MHz GPRS SMA Male Plug Straight 5 cm Antenna”.
Please see fig (i) for the results.
Am awaiting some more, used the last one a few days back, PCB Mount SMA-KE female RF
connectors. Could not help but notice that the Moteino pcb will accomodate one of these
connectors very nicely, indeed! In the antennae test the receiver RFM69HW used one of
the antenna described above, while the Moteino just used a coiled wire antenna. Please
see fig (ii).Intend to repeat the tests once a PCB connector is attached to the Moteino
Also had a chance to play with the RFM69 library functions a little more also. Please
see RFM69.cpp. I counted about 28 odd functions, handy stuff like, readReg(byte address),
WriteReg(byte address, byte value) and readAllRegs(), enabling easy reading and writing
of wireless module registers. You can also use the “r” command, when using the serial
port, to dump all the register contents, as well. Anyway probably worth a look
> I wonder if tht has worked this.
Not yet ;-)
I’ve ordered some RFM69CW (443MHz) some days ago, but still waiting for them. The “CW” version has the same foodprint as the rfm12b so no new pcbs required.
The RFM69 module will be compatible with jcw’s RFM12 library if you ignore some the new features. I really like the “packet mode” of the new module which handles checksums (and even encryption) in the RF module itself. A minimal RFM69 library could be quite small and should nicely fit in a bootloader (remote sketch upload, yeayyy!).
I’ll dive deeper into the RFM69CW as soon as I get the modules and start working on a low-power, packet-mode-only library. Reliability as priority, ignoring pin-change-interrupts and RFM12B compatibility. As jcw already mentioned, it should be possible to modify some header fields in the RFM12B library to make it work together with RFM69 and the new packet mode but this is not a priority for me as I was never happy with the range I got from the RFM12B moduls.
I’m currently exploring both options: placing the RFM69[C]W in compatibility mode so it can work with the current RF12 packet format, and adding a new packet format to the RF12 driver so it matches the RFM69’s hardware packet mode. Sending and receiving RF12 packets with the RFM69W appears to work, but there are still a lot more combinations to work out before all this can be used in the wild.
tht, interesting information concerning the Hope RFM69CW. Just checked the datasheet and indeed it is pin
compatible with the Hope RFM12B module, when using DIO3 as the INT pin. More importantly, on checking the
footprint dimensions for both modules, they are physically compatible/interchangeable. I wonder if at a later
stage Hope will also introduce a high power (20dBm) version, as well as this 13dBm version. Looking forward
hearing of your adventures with this module. Also, would you be able to let us know where you have ordered
your RFM69CW modules, what quantities and at what price?
plutonomore: I’ve ordered a few 443MHz modules on ebay from anarduino. He’s selling them for USD 3.95 each. Couldn’t find 868MHz modules and I don’t care too much as they’re just for testing purposes. If these modules work well I’ll get RFM69HW-868-S2 from rf-store.com for €5.50 each (germany based online store). A bit more expensive but faster shipping and more reliable. I don’t think there will be a RFM69CWH module with the same dimension as the RFM12B “H” version always had a bigger footprint.
I haven’t played around with the high-power version but will most likely later on. I never got a good range from the RFM12B modules (inside, lots of concrete, isolated glass => 6-10m range).
btw… nice username! Poor little Pluto… :-)
tht, thanks for that supply information. I must admit I was pretty frustrated with the range restrictions
of the Hope RFM12B module for my applications, so cobbled together a Hope RFM12BP project, a few years back.
I am assuming this is the “H” version you mentioned. Unfortunately this is a 24 pin device and quite expensive.
The range was certainly an improvement on the RFM12B but I was never able to quantify it. Hence I have been
looking around for a more powerful, small footprint replacement for the Hope RFM12B. It looks like the RFM69HW
will do the trick for me and not too expensive, it’s only a dollar more expensive than the RFM69W version.
Have been playing with three Hope RFM69HW-433-S2 modules and various antennae combinations. Really surprised
what a major improvement the SMA-KE antenna made over the wire coil number. Please see fig (i).
Also have had a chance to use the RFM69 library, not too difficult to use once you get used to the inevitable
differences in syntax.
measurement = *(payload*)rf12_data // JeeLib/RF12 library measurement = *(payload*)radio.DATA // RFM69 library
rf12_sendNow(0,&measurement,sizeof measurement) // JeeLib/RF12 library radio.send(GATEWAYID,(const void*)(&measurement),sizeof(measurement)) // RFM69 library
Have just rewritten an old RFM12B sketch, using the RFM69 library to read 32, 10 bit analogue data and transmit it to
a time-stamped SD data logging card and web serving the data as well … wasn’t too difficult!
Good luck with the modules and please keep us updated on your exploits.
… just another Kuiper belt dweller, these days
Have you ever tried one of those antennas on the RFM12B?
I’m surprised by the range limitations. Have been going through walls and reinforced concrete floors around the house for years, here at JeeLabs. Works fine for me. I did place the central node very, ehm, centrally - no point making things harder than necessary.
jcw, was surprised myself to read of tht’s stated range of 6-10 metres in previous post. Can
only put it down to the uniqueness of each siting scenario variables. Just to name a few,such
variables as RF and electrical interference, topology and the material science of the fabrication
materials all come into play… maybe just over-enthusiastic ferro-concreters
Thanks for the suggestion, concerning using a SMA antenna with a FRM12B module. I tried this with
both the S1 and S2 flavours of the RFM12B 433Mhz module, without success. Please see fig (i).
Live in a three storey, ferro-concrete townhouse and must be able to get a good wireless signal
to the top floor study from the water heater in the garage. Being unsuccessful with the RFM12B
module meant I had to employ a SD card logger to monitor the water heater parameters, reliably.
I suppose discovering the RFM69W/HW and the fact that it works reliably in this scenario, is the
source of my enthusiasm. Still have to do some tweaking to make sure I’m not swamping the surrounding
area with unwanted RF noise!
The builders clearly went crazy building my place. I’ve got no reception issues as long as I stay inside on the same floor. The windows are a big problem. Not only for 848MHz but also for Wifi. Full Wifi reception on my MacBook when I’m inside, almost no reception outside, next to the window. It’s a “Minergie” building, so very well isolated and built for cold winters. I also have no reception when trying to go through the floor. 2m distance, with floor in between is about 80-90% packet loss. I assume it’s the floor heating killing the signal there. Strangely Wifi has no problem going through the floor at all.
I’ve mounted antennas on the central receiver and also on the single JeeNode sitting outside. It helps, but still not good. See “Outside Temp” in attached picture. The outside JeeNode is about 6m from the central receiving node and sending a single packet every 5 minutes. I’ve also replaced the outside JeeNode, it’s not a problem with that particular node. And I’ve reduced the data rate quite a bit.
I can’t drill holes in the outside wall as I don’t own that building so I basically need two nodes (one inside, one outside) right next to each other. This is the reason why I started to thing about Mesh networking and stuff like this. I never tried other frequencies. Maybe 443MHz could be better? I don’t know.
So I’m hoping for a few more meters with the RFM69W modules.
> I’ve reduced the data rate quite a bit.
Did you adjust the RX bandwidth at the same time? Data rate/deviation/RX_bandwidth all interact. Optimum settings are hard to find - the original RF chip documentation has some ‘sweet spot’ guidelines.
> > I’ve reduced the data rate quite a bit.
> Did you adjust the RX bandwidth at the same time? Data rate/deviation/RX_bandwidth all interact. Optimum settings are hard to find - the original RF chip documentation has some ‘sweet spot’ guidelines.
Good point. I actually did not change the other parameters. I simply didn’t know this when I changed the parameters the first time, was too lazy when I found out and simply forgot over time. I’ll try to implement these changes this weekend. (19.2kbps, BW: 67kHz, f_fsk: 45KHz)
My final goal is to connect to a remote place about 300m from my place. There is a building and electrified train tracks in between and I don’t think I’ll have a chance with RFM12B. Maybe a RFM69HW will do the job. I don’t know (yet).
tht, you may find this information of interest. When playing with the RFM12B 433MHz
modules, when using the following parameter settings, was still having unreliable
connection issues, although did notice an improvement from the default settings.
rf12_control(0xC623) // data rate 9.579 kHz
rf12_control(0x94C2) // Rx control 67 kHz bandwidth
rf12_control(0x9820) // Tx control 45 kHz deviation
Have not changed any of the default settings for the RFM69HW 433MHz modules and no
longer have connection issues encountered when using the RFM12B modules … suspect
that if the above parameters are adjusted for the RFM69HW, even better results will
be achievable. Will test this hypothesis shortly!
Good luck with your final goal!
Can anyone tell me the minimum number of pins I need to connect to get the RFM69W doing a little something? The 2mm connections are frustrating me.