How to Read the AnkhMaway Sensor Data?

Since we have been selling the AKMW-iB003N-SHT  and AKMW-iB004N PLUS SHT we have been getting a few questions regarding accessing the temperature and humidity data.

You should first read the manufacturer’s SHT20 User Guide (username and password supplied with your beacon).

If you are connecting via GATT to read the sensor data then you will need to set the beacon to be always connectable. The way to do this is (for some strange reason) only shown in the iB001M user guide:

advertisementcontrol

So if you wish to transmit iBeacon and remain connectable, set the value to 0x82. Note that if you subsequently set the beacon ‘on’ or ‘off’ in the ‘simple’ configuration screen, accessed via the spanner icon (Android) or Configure option (on iOS), then this will overwrite your set value.

However, you might instead consider reading the sensor data from the advertising data which a) is much easier to program and b) uses much less beacon battery power and c) allows multiple apps to see the data at the same time.

There’s also an iOS example app in the BeaconZone AnkhMaway technical area.

How to Calibrate Temperature Sensor Beacons?

We have several clients using the temperature sensor beacons in industrial situations. A question we have had is how is the temperature/humidity calibrated? For scenarios that require monitored temperature/humidity, it’s often necessary to show the readings have been calibrated over time.

M52-SA Sensor beacon

The long term drift of the sensor is <0.04C/yr and <0.5 RH/yr so in most applications it doesn’t usually need calibration. If you need accuracy better than this you will need to calibrate in the software of the phone/device that receives the beacon signal. That is, you will need to periodically measure the real temperature/humidity using another calibrated instrument and apply any offset to the read values.

Transmitting Images via Bluetooth LE?

Some platform providers claim beacons can transmit multimedia data which isn’t strictly true. A beacon sends a small amount of data that typically contains a unique id. When an app sees an id it shows information, such as an image, that is typically obtained from a server.

But what about beacons actually transmitting images? Chong Shao, Shahriar Nirjon, Jan-Michael Frahm or the Department of Computer Science, University of North Carolina has a paper on “Years-Long Binary Image Broadcast using Bluetooth Low Energy Beacons” (pdf). Again, don’t be misled, they don’t mean it takes years to send an image but instead that a beacon might transmit for a long time (which most do).

The researchers have found that with suitable compression schemes, a set of 2–3 beacons is capable of broadcasting high-quality images (75%–90% structurally similar to original images). The image quality improves when more beacons are used.

beaconimageprocessingpipeline

How might you get the data into a beacon? Well, some beacons such as the M52 Plus and iB003N allow arbitrary data to be set in the advertising data.

The images are necessarily very simple but nevertheless this provides a great example of what can be achieved when you attempt the seemingly impossible.

What’s the Affect of Changing the Power on the iB003N-PA?

The iB003N-PA has a range up to 300m because it uses the RFAXIS X2401C 2.4GHz amplifier to increase the range.

iB003N-PA

When you use the manufacturer app to change the power output by a beacon, you are changing the power output by the Nordic nRF51 System on a Chip (SoC) that is usually fed to the antenna. In the case of the iB003N-PA, the RFAXIS X2401C instead receives the signal, amplifies it and sends it to the antenna. The resultant change in output is:

SoC Setting X2401C Output
0dbm 20dBm
4dbm 20dBm
-5dbm 15dBm
-10dbm 10dBm

20dBm is the maximum allowable output for class 1 Bluetooth. There’s no difference whether you set to 0dBm or 4dBm, the output will be 20dBm. Even at a low power setting, -10dbm, the amplified output is 10dBm which is relatively high compared to the nominal 0dBm for most beacons. That’s just over 3x the power (3dBm change is a doubling of power) of a normal beacon. You can see that this beacon is primarily designed for long distance and there’s no need to change the SoC power from the default 0dBm = 20dBm.

View our ultra long range beacons

Setting the iB003N State

The iB003N can transmit up to three channels: iBeacon, Custom and Accelerometer Data. If you only want to send iBeacon, the iOS and Android app ‘Config’ screen implicitly sets the state to iBeacon only transmission when you set the iBeacon parameters.

On iOS only, the Eddystone screen allows you to set the custom channel to send Eddystone that implicitly sets the state to transmit the Custom channel only.

What if you want to transmit both iBeacon and Custom channels or also send the acceleration data? What if you want to enable motion triggered broadcasting? For cases such as these, you have to set the beacon state explicitly (manually) via the Bluetooth Service Characteristic 0x2A80 as described in the iB003N user guide .

Sleepy bit rot on Twitter has produced a useful table showing what values have to be set for some specific configurations:

How to Set Up iB003N Motion Triggered Broadcast?

The iB003N has an accelerometer that can be used to cause this beacon to only broadcast when it has been moved. This can be used to save battery power or as an alert that something, that shouldn’t move, has been moved. For example, we have a customer putting them on warehouse racking legs to detect when the forklift truck has crashed into them.

The iB003N manufacturer documentation on motion triggered broadcast is split over many sections of the user guide making understanding setup harder than it needs to be. In fact, it’s very simple. Connect to the beacon using the eBeacon app and set Service 0xFF70, Characteristic 0x2A80 (the beacon state) to 0x04. The beacon will now only transmit when moved.