Author Topic: Multistorey indoor range performance & 1.75km range [solution]  (Read 18586 times)

MY510

  • NewMember
  • *
  • Posts: 1
Hi all,

I spent quite a bit of time scouring forums trying to work out what hardware would work for my applications before deciding to give the moteino a try. So sharing some of my findings, incase it helps others...

I wanted to get data to/from the garage in my apartment block (to monitor if gates etc are left open) but Im in levels 2&3 and there is a lot of concrete between (because the block is a converted office building from the ‘60s):

|-----------------------------|
|            Level 3             |
|-----------------------------|
|            Level 2             |
|-----------------------------|
|            Level 1             |
|-----------------------------|
|        Ground floor         |
|-----------------------------|
|    Basement/Garage    |
|-----------------------------|

So I decided to trial the 433MHz RFM69HW variant hoping the low frequency high power radio would have the best chance of range penetration. Good news was that the gateway/node examples with no mods at all *nearly* made it, but the transmission was sketchy, lots of dropouts, and all the concrete got too much for TX/RX about 20m from the garage gate.

After trying to decipher the datasheet and trying alot of low bitrate configs without success I found Felix’s 19.2kbps post:
https://lowpowerlab.com/forum/index.php/topic,244.msg1137.html#msg1137

And with only these changes the gateway/node examples seem to result in pretty reliable transmission from Level 3<->garage which I reckon is pretty impressive! Reported RSSI is ~-82 to -88dBm range.

Hopefully this info helps others with challenging indoor requirements to give the excellent moteino a try.
Thankyou Felix  :)

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab
Re: Multistorey indoor range performance
« Reply #1 on: July 18, 2014, 09:35:56 AM »
That's excellent, thanks very much for sharing!
So for those looking for more penetration and range at cost of lower transmission rates, check the bitrate settings ;)

Steinarrr

  • NewMember
  • *
  • Posts: 27
  • Country: is
Re: Multistorey indoor range performance
« Reply #2 on: July 23, 2014, 01:04:31 PM »
I really like the "drawing" of your building :)

iv'e been trying to slow down the bitrate to increase range and used the settings that Felix suggested in the post you mentioned but had all sorts of problems until i read somewhere in this forum that you also have to increase ACK_TIME. Once i did that it worked perfectly and my range almost doubled but i am still not completely satisfied with that range so i think i'll have to go down to 1.2 kbps.

In order to accomplish this i tried using

   radio.writeReg(0x03,0x68);   //RegBitrateMsb 1200 bitrate
   radio.writeReg(0x04,0x2b);   //RegBitrateMsb
   radio.writeReg(0x05,0x00);   //RegFdevMsb     2000
   radio.writeReg(0x06,0x21);   //RegFdevLsb
   radio.writeReg(0x19,0x56);   //RegRxBw
   radio.writeReg(0x18,0x88); //RegLna register

as hdphilip suggested here: https://lowpowerlab.com/forum/index.php/topic,114.msg2664.html#msg2664
but now my reciever doesn't hear anything...  anyone know how to solve this?

Steinarrr

  • NewMember
  • *
  • Posts: 27
  • Country: is
Re: Multistorey indoor range performance
« Reply #3 on: July 25, 2014, 12:58:11 PM »
Update:

I finally got it working, if someone is having the same problems that i had here is what i used:

Code: [Select]
 
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
  radio.setHighPower();     //uncomment only for RFM69HW!
 radio.writeReg(0x03,0x68);      //RegBitrateMsb 1200 bitrate
 radio.writeReg(0x04,0x2B);      //RegBitrateLsb 1200 bitrate
 radio.writeReg(0x05,0x00);      //RegFdevMsb     2000
 radio.writeReg(0x06,0x52);      //RegFdevLsb     2000
 radio.writeReg(0x19,0x40|0x10|0x05);      //RegRxBw  DccFreq:010, RxBw_Mant:24, RxBw_Exp:5
 radio.writeReg(0x18,0x00|0x00|0x01);      //RegLna  LnaZin:50ohm, LowPower:Off, CurrentGain:MAX


and then

Code: [Select]
    if (radio.sendWithRetry(GATEWAYID, payload, sendSize,2,200))
     Serial.print(" ok!");
    else Serial.print(" nothing...");


Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab
Re: Multistorey indoor range performance
« Reply #4 on: July 25, 2014, 01:54:37 PM »
Thanks!
Are the comments reflecting the actual register settings?
If not could you update/repost explaining the changes and the rationale? I know a lot of people ask about low bitrate settings, I will set this as sticky.
Are you getting through all the concrete now?

Steinarrr

  • NewMember
  • *
  • Posts: 27
  • Country: is
Re: Multistorey indoor range performance [solution]
« Reply #5 on: July 28, 2014, 05:39:16 AM »
Yes, the comments are to explain what i changed.

bitrate to 1200 and Fdev(Frequency Deviation) to 2000
regarding RxBw (Recieving Bandwith):
I have basically no idea what those numbers stand for or what they do I just tried some combinations until it worked.
regarding RegLna(no idea what that stands for):
I have some small antennas with 50 ohm impedance so i changed LnaZin to 50 ohm (default is 200 ohm) i still haven't noticed any difference but i guess it should be better in theory.

if someone wants to tweak these numbers what they need is the rfm69 datasheet and the rfm69 Registers

I am using the node and gateway example sketches. Because the bitrate has slowed down the actual transmitting is taking longer and therefore ACK_TIME must be increased as well as TRANSMITTPERIOD. I can't however see how ACK_TIME is passed down to the library because it is never used, only defined... ??? I used:

if (radio.sendWithRetry(GATEWAYID, payload, sendSize,2,200))

The "2" is the number of retries and "200" is how long the node should wait for an ack before trying again.

My range doubled from the default 55.5 kbps  :D I am still using some cheap and small antennas but still getting 300m with node inside a concrete building and cars in the way, testing was also done in a sort of industrial environment which could affect the results. My goal is 600 meters line of sight and I'm hoping I can test that out today :D


It would be really cool if the library would have a function:

void setBitrate(bitrate)

if (bitrate==1200)
{
     writeReg(0x??,0x??);
....
}
else if(bitrate==19200)

and so on... It would not have to be all bitrates available, I think 19.2, 1.2, 55.5 kbps and one faster would be more than enough.
« Last Edit: July 28, 2014, 06:29:56 AM by Steinarrr »

Steinarrr

  • NewMember
  • *
  • Posts: 27
  • Country: is
Re: Multistorey indoor range performance [solution]
« Reply #6 on: July 28, 2014, 01:24:15 PM »
Update:

We did a line of sight range test today using the settings i listed, we were able to get good reception with 1.75 km between us we could probably do better but our target was 600 m and we ran out of space where we were testing :).
I was holding the transmitter and my friend holding the reciever, we weren't printing the RSSI but the reciever didn't seem to be dropping any packets. I'll attach some pictures of the transmitter and reciever, we tried using both the cheap sma antennas and a 1/4 wavelength whip and both worked.

transmitter in action:
https://drive.google.com/file/d/0B3iKexv5x2hlWkZpTzhYQTU2MTA/edit?usp=sharing

reciever with sma antenna:
https://drive.google.com/file/d/0B3iKexv5x2hlV3Vnc1IxRU14R1E/edit?usp=sharing

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab
Re: Multistorey indoor range performance & 1.75km range [solution]
« Reply #7 on: August 01, 2014, 08:30:57 AM »
1.75 km? That's awesome!
I am waiting for the day when that will happen on a NRF24L01, xbee, or whatever else is out there...

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab

scottpenrose

  • NewMember
  • *
  • Posts: 13
Re: Multistorey indoor range performance & 1.75km range [solution]
« Reply #9 on: January 08, 2015, 07:02:45 PM »
Not directly compatible with Moteino (RFM69) I use the RFD900 for long distance radios. I have successfully got well over 20Km with legal transmission in Australia using one dipole and one yagi aerial. The firmware for RFD900 works on a number of HopeRF modems, but I don't know or code the firmware so not sure if directly compatible with RFM69 or not.

My solution for the long distance is simply to plug the RFD900 into the Moteino mega serial port (RFD900 are just serial, you use AT commands to configure them) to act as a gateway. Rare you need such long distances but when you do these are excellent modems. Allows me to best of both worlds.

Scott

fgomes

  • Jr. Member
  • **
  • Posts: 65
Re: Multistorey indoor range performance & 1.75km range [solution]
« Reply #10 on: July 18, 2016, 11:41:10 AM »
I know this is an old topic, but I'm trying to make some long range tests with Moteinos, reading the topics on this subject and the datasheet and found that the value that is being described above is for a frequency deviation of 5kHz and not 2kHz as described:

 radio.writeReg(0x05,0x00);      //RegFdevMsb     2000
 radio.writeReg(0x06,0x52);      //RegFdevLsb     2000

Using a frequency deviation of 5kHz in a 'low bandwidth' scenario is ok? Does this fit for the RxBw used:

 radio.writeReg(0x19,0x40|0x10|0x05);      //RegRxBw  DccFreq:010, RxBw_Mant:24, RxBw_Exp:5

Thanks in advance

Fernando

Sergegsx

  • Jr. Member
  • **
  • Posts: 87
  • Country: es
Re: Multistorey indoor range performance
« Reply #11 on: August 24, 2017, 03:58:29 PM »

Code: [Select]
 
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
  radio.setHighPower();     //uncomment only for RFM69HW!
 radio.writeReg(0x03,0x68);      //RegBitrateMsb 1200 bitrate
 radio.writeReg(0x04,0x2B);      //RegBitrateLsb 1200 bitrate
 radio.writeReg(0x05,0x00);      //RegFdevMsb     2000
 radio.writeReg(0x06,0x52);      //RegFdevLsb     2000
 radio.writeReg(0x19,0x40|0x10|0x05);      //RegRxBw  DccFreq:010, RxBw_Mant:24, RxBw_Exp:5
 radio.writeReg(0x18,0x00|0x00|0x01);      //RegLna  LnaZin:50ohm, LowPower:Off, CurrentGain:MAX



Do I need to add the quoted block of code on both node transmitter and gateway receiver?
Inside the setup() ?

Then all nodes in the network must also have these lines?

Thank you!