Getting maximum range out of XIAO nrf52840 with bluefruit.h

rssi.zip (4,4 KB)

Here’s the code I use to test the range. 6-8m maximum with line of sight.

not very much tbh.

I read here that I can simply solder to the right side of the PCB-antenna-Pins, which I did, and then shortened it until it got worse again - I ended up with about 32mm of bare wire length (I simply used thin enamel copper wire because there is NO space left in the case where it needs to be)

Hi there,
Wacky, I loaded up both sketches , they connect up AOK,
something is not right The RSSI changes way to fast in nrf_connect too btw?
when I sniff the BLE , also a Unit with only a battery attached reached further (-91) than the same code in the Expansion boards chip.(-81) I get about 12 feet farther but still seems like it doesn’t change enough when I set TXPower (4)
Are you using the adafruit bootloader?
GL :slight_smile: PJ

I want to setup two expansion boards with RSSI display and battery only, over the next couple days, interested to know what the ArduinoBLE LIB gets?
:v:

1 Like

Thank you so much for testing. I’m not sure I understand everything you wrote :smiley:
With nrf_connect, do you mean the desktop application?

About the expansion board, I am not using one, my application requires super small setups, in the end I use a 50mAh LiPo and a very tight 3d printed case around it. Right now, I am testing with bare modules.

How can I see which bootloader I currently use? Sorry, I think I don’t know enough about these topics…

Ok, I connected it in bootloader-mode and got this in INFO_UF2.txt:

Model: Seeed XIAO nRF52840
Board-ID: Seeed_XIAO_nRF52840_Sense
Date: Nov 30 2021
SoftDevice: S140 7.3.0

I found this page Releases · adafruit/Adafruit_nRF52_Bootloader · GitHub but as of now, I do not understand how to flash this bootloader. The ZIP-file does not contain a UF2-file

Ok, another edit to this post: I just flashed the bootloader using Arduino IDE. I think I see an improvement when using the Adafruit-bootloader, but I need to test this thoroughly. Is it even possible that this makes a difference?

To use it on my real application, I would need to remap the pins. I have a display, GPS, speaker, DCDC-switch etc. connected to the Xiao. Pin-mapping seems to be different with the Adafruit-firmware. Is there some matching-table so I can make this work?

Ok, afaics, the Adafruit-FW seems to better handle reconnects.

I shield the board/antenna until connection breaks:

  • Seeed-FW: reconnection 9/10 doesn’t happen until reboot of boards
  • Adafruit-FW: reconnection happens immediately without any problems

I use this

However, what is still missing is pin-map so I can transfer my code between the firmwares…

I got the Wire-library which I need to read a sensor working by matching the physical pin-numbers of the Xiao-board I use to the feather-board (whose firmware I use). Is this the correct way to go?

I tried to do it like this:

  • look for hardware-pin on seeed-schema
  • look for same pin on feather-schema
  • use pin-number of feather
  • example: A4 → P0.04 → 14/A0

image

circuitpython_Adafruit_Feather_nRF52840_Pinout.png

However, this does not work for certain pins, as I do not find them on the Adafruit-schematic.

For example, D9 / P1.14 does not exist on Adafruit.

I am really lost, any help appreciated

@PJ_Glasso

ok, after much back and forth (see the other thread about pin numbers) I was able to get my full script running. I do not see much, if any difference between the Adafruit and the Seeed-firmware. They disconnect at the same (much too close) distance, and they connect at the same distance again.

So I think it must be a hardware issue, and Seeed (@Citric) is not listening.

Disappointing!

I really apologize for any inconvenience caused. We will expedite our testing in the near future. Thank you for your feedback and understanding!

1 Like

Thank you @Seeed_Seraphina

Please get back in touch here in this thread.

Hello,

In what environment did you conduct the test? It is important to consider that indoor environments often contain various obstacles that can adversely affect the actual range of Bluetooth. I would recommend testing the device’s performance in an open outdoor setting.

In response to your feedback, we have conducted tests on the device. The testing was carried out in an open area on the rooftop of our company building. We flashed the example code from the Wiki onto the XIAO nRF52840 sense and evaluated the specific range of its Bluetooth connection by monitoring the connection status with a smartphone.

Based on our testing, the Bluetooth functionality of the XIAO nRF52840 sense in our hands was able to communicate at distances of up to 66 meters, as shown in the accompanying image.

Hi @Seeed_Seraphina and thanks so much for testing.

I of course did test in an outdoor-environment. In fact, my main use of it is outdoors in a perfectly open space.

However, there are several major differences in what you tested and what I noticed:

  1. you seem to connect a Xiao to a smartphone, I need to connect a Xiao with a Xiao
  2. you seem to be connecting a Xiao Sense, I use a Xiao (without Sense) nrf52840
  3. you use the ArduinoBLE-library, I use bluefruit.h (it’s even in the title of this thread)

Could you retest with my code (https://forum.seeedstudio.com/uploads/short-url/egpPEy4TjlhsrXK49dozhsZz3KL.zip), and flash one sketch to one Xiao, the other sketch to the other Xiao, and repost your results?

Thanks
Raphi

Hi raffiniert,
I measured the maximum range using two XIAOnRF52840s.
It was 25m in an outdoor location with good visibility.
After 25m, the RSSI becomes <-85dBm and the connection is lost.
For reference, the RSSI at the nearest 1cm is -16dBm.

1 Like

Hey @msfujino

Thank you! That would be plenty enough for us.

Could you please provide all details? Which board FW, which version, which exact board (Sense or not?), which code etc?

Thanks so much!!

Here is the code I used.
(https://forum.seeedstudio.com/uploads/short-url/egpPEy4TjlhsrXK49dozhsZz3KL.zip 1)

Peripheral : XIAO BLE Sense + battery
Central : XIAO BLE on Expansion Board + battery
BSP : Seeed nRF52 Borads 1.1.1
Board select : Seeed nRF52 Borads / Seeed XIAO nRF52840 (or Sense)

1 Like

Thank you, again!
I do not understand how you get that “far”. I mean, 25m is nowhere near what @Seeed_Seraphina got in her tests, but it’s way better then what I get.
I do not use the “Sense” version, but that cannot really be the difference I believe?

Peripheral were placed on the metal railing of the second floor window. Central was mounted on XIAO Expansion Board so that RSSI could be observed on the display, and moved a little further away to measure the distance at which the connection was broken. The metal rail might have the effect of reinforcing the antenna. Tomorrow I will experiment with non-Sense XIAO.

1 Like

Hi there, SO not scientific but Basically I put it on a tree and walked 80-104’ measured with tape measure, about what msfujino is getting approx. Here’s a Video.

I will say this It doesn’t ALWAYS reconnect Every time? I conducted the walk in the video several times.
I would have NO issue’s with anything at 80-85’.
HTH
GL :slight_smile: PJ

1 Like

I re-tested in a park with no metal around, and there was a huge difference between Sense and non-Sense. There was a difference in the distance needed to connect and the distance to disconnect.
The non-sense has four short wires that are connected and may be affected.

              connect         disconnect
Sense           10m             25m
non-Sense       5m              6m
1 Like

Thanks to both of you!! Awesome efforts from everyone.

What exactly do you mean by that? That you soldered some wires to its ports?
It could make some sense that some of us are having no troubles at all and others have troubles with range, if it’s the non-Sense that makes those problems?

@Seeed_Seraphina would you please recheck the difference between the Sense and non-Sense version?
I could imagine your engineers did not re-match the antenna with its components for the non-Sense version, so it‘s not perfectly matched…