nRF9160: LTE Sensor Gateway

The LTE Sensor Gateway sample demonstrates how to transmit sensor data from an nRF9160 development kit to the nRF Cloud.

The sensor data is collected using Bluetooth® Low Energy. Therefore, this sample acts as a gateway between the Bluetooth LE and the LTE connections to nRF Cloud.

Requirements

The sample supports the following development kit:

Hardware platforms

PCA

Board name

Build target

nRF9160 DK

PCA10090

nrf9160dk_nrf9160

nrf9160dk_nrf9160_ns

The sample also requires a Nordic Thingy:52.

The sample is configured to compile and run as a non-secure application on nRF91’s Cortex-M33. Therefore, it automatically includes the Secure Partition Manager that prepares the required peripherals to be available for the application.

You can also configure it to use TF-M instead of Secure Partition Manager.

Overview

The sample connects using Bluetooth LE to a Thingy:52 running the factory preloaded application. When the connection is established, it starts collecting data from two sensors:

  • The flip state of the Thingy:52

  • The simulated GNSS position data

The sample aggregates the data from both sensors in memory. You can then trigger an alarm that sends the aggregated data over LTE to nRF Cloud by flipping the Thingy:52, which causes a change in the flip state to UPSIDE_DOWN.

User interface

Two buttons and two switches are used to enter a pairing pattern to associate a specific development kit with an nRF Cloud user account.

When the connection is established, set switch 2 to N.C. to send simulated GNSS data to nRF Cloud once every 2 seconds.

Building and running

This sample can be found under samples/nrf9160/lte_ble_gateway in the nRF Connect SDK folder structure.

The sample is built as a non-secure firmware image for the nrf9160dk_nrf9160_ns build target. Because of this, it automatically includes the Secure Partition Manager. You can also configure it to use TF-M instead of SPM.

See Building and programming an application for information about how to build and program the application.

Programming the sample

When you connect the nRF9160 development kit to your computer, three virtual serial ports of the USB CDC class should become available:

  • The first port is connected to the main controller on the development kit, the nRF9160.

  • The second port is connected to the board controller on the development kit, the nRF52840.

You must program the board controller with the Bluetooth: HCI low power UART sample first, before programming the main controller with the LTE Sensor Gateway sample application. Program the board controller as follows:

  1. Set the SW10 switch, marked as debug/prog, in the NRF52 position. In nRF9160 DK v0.9.0 and earlier, the switch is called SW5.

  2. Build the Bluetooth: HCI low power UART sample for the nrf9160dk_nrf52840 build target and program the board controller with it.

  3. Verify that the programming was successful. Use a terminal emulator, like PuTTY, to connect to the second serial port and check the output. See How to connect with PuTTY for the required settings.

After programming the board controller, you must program the main controller with the LTE Sensor Gateway sample, which also includes the Secure Partition Manager sample. Program the main controller as follows:

  1. Set the SW5 switch, marked as debug/prog, in the NRF91 position.

  2. Build the LTE Sensor Gateway sample (this sample) for the nrf9160dk_nrf9160_ns build target and program the main controller with it.

  3. Verify that the program was successful. To do so, use a terminal emulator, like PuTTY, to connect to the first serial port and check the output. See How to connect with PuTTY for the required settings.

Testing

After programming the main controller with the sample, test it by performing the following steps:

  1. Power on your Thingy:52 and observe that it starts blinking blue.

  2. Open a web browser and navigate to https://nrfcloud.com/. Follow the instructions to set up your account and to add an LTE device. A pattern of switch and button actions is displayed on the webpage.

  3. Power on or reset the kit.

  4. Observe in the terminal window connected to the first serial port that the kit starts up in the Secure Partition Manager. This is indicated by an output similar to the following lines:

    SPM: prepare to jump to Non-Secure image
    ***** Booting Zephyr OS v1.13.99 *****
    
  5. Observe that the message Application started is shown in the terminal window after the LTE link is established, to ensure that the application started. This might take several minutes.

  6. Observe that LED 3 starts blinking as the connection to nRF Cloud is established.

  7. The first time you start the sample, pair the device to your account:

    1. Observe that both LED 3 and 4 start blinking, indicating that the pairing procedure has been initiated.

    2. Follow the instructions on nRF Cloud and enter the displayed pattern. In the terminal window, you can see the pattern that you have entered.

    3. If the pattern is entered correctly, the kit and your nRF Cloud account are paired and the device reboots. If the LEDs start blinking in pairs, check in the terminal window which error occurred. The device must be power-cycled to restart the pairing procedure.

    4. After reboot, the kit connects to nRF Cloud, and the pattern disappears from the web page.

  8. Observe that LED 4 is turned on to indicate that the connection is established.

  9. Observe that the device count on your nRF Cloud dashboard is incremented by one.

  10. Set switch 2 in the position marked as N.C. and observe that simulated GNSS data is sent to nRF Cloud.

  11. Make sure that the Thingy:52 has established a connection to the application. This is indicated by its led blinking green.

  12. Flip the Thingy:52, with the USB port pointing upward, to trigger the sending of the sensor data to nRF Cloud.

  13. Select the device from your device list on nRF Cloud, and observe that the sensor data is received from the kit.

  14. Observe that the data is updated in nRF Cloud.

Dependencies

This sample uses the following nRF Connect SDK libraries:

It uses the following sdk-nrfxlib library:

It uses the following Zephyr library:

It also uses the following samples: