I have done a range test and could still receive data at a range of 40 meters / 130 ft. Here are the conditions of my experiment.
- Arduino Nano 33 BLE (1.5m above ground, outside, houses and vegetation around but free line of sight)
- iPhone 7 (BLE Scanner app)
- 3 characteristics (1 float and 1 long read notify and 1 bool write)
- The float is an accelerometer value and the long a counter
- the two values are updated every 20ms
I could clearly see the values updating dynamically in the app, but there are values dropped which is to be expected. I cannot measure the drop rate with the phone app, only see that the counter sometimes does not update with the same speed / amount of intermediate values (depending the orientation of the phone while walking). I could also write the bool value which resets the counter.