.. _bt510:

Laird Connectivity Sentrius BT510 Sensor
########################################

Overview
********

The Sentrius™ BT510 Sensor is a battery powered, Bluetooth v5 Long Range integrated sensor that uses a Nordic Semiconductor nRF52840 ARM Cortex-M4F CPU.

The sensor has the following features:

* :abbr:`ADC (Analog to Digital Converter)`
* CLOCK
* FLASH
* :abbr:`GPIO (General Purpose Input Output)`
* :abbr:`I2C (Inter-Integrated Circuit)`
* :abbr:`MPU (Memory Protection Unit)`
* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
* :abbr:`PWM (Pulse Width Modulation)`
* RADIO (Bluetooth Low Energy and 802.15.4)
* :abbr:`RTC (nRF RTC System Clock)`
* Segger RTT (RTT Console)
* :abbr:`UART (Universal Asynchronous Receiver-Transmitter)`
* :abbr:`WDT (Watchdog Timer)`

.. figure:: img/bt510.jpg
     :width: 250px
     :align: center
     :alt: Sentrius BT510 Sensor, front view

     Sentrius BT510 Sensor, front view

.. figure:: img/bt510_back.jpg
     :width: 250px
     :align: center
     :alt: Sentrius BT510 Sensor, rear view

     Sentrius BT510 Sensor, rear view

More information about the board can be found at the
`Sentrius BT510 website`_.

Hardware
********

Supported Features
==================

The BT510 Sensor supports the following
hardware features:

+-----------+------------+----------------------+
| Interface | Controller | Driver/Component     |
+===========+============+======================+
| ADC       | on-chip    | adc                  |
+-----------+------------+----------------------+
| CLOCK     | on-chip    | clock_control        |
+-----------+------------+----------------------+
| FLASH     | on-chip    | flash                |
+-----------+------------+----------------------+
| GPIO      | on-chip    | gpio                 |
+-----------+------------+----------------------+
| I2C(M)    | on-chip    | i2c                  |
+-----------+------------+----------------------+
| MPU       | on-chip    | arch/arm             |
+-----------+------------+----------------------+
| NVIC      | on-chip    | arch/arm             |
+-----------+------------+----------------------+
| PWM       | on-chip    | pwm                  |
+-----------+------------+----------------------+
| RADIO     | on-chip    | Bluetooth,           |
|           |            | ieee802154           |
+-----------+------------+----------------------+
| RTC       | on-chip    | system clock         |
+-----------+------------+----------------------+
| RTT       | Segger     | console              |
+-----------+------------+----------------------+
| UART      | on-chip    | serial               |
+-----------+------------+----------------------+
| WDT       | on-chip    | watchdog             |
+-----------+------------+----------------------+

Connections and IOs
===================

LED
---

Two LEDs are visible through the BT510 housing lid.

* LED_1A (green) = P0.22
* LED_1B (red) = P0.20

Push button
------------

The BT510 housing lid also acts as a push button.

* BUTTON_1 = SW1 = P1.10

Magnetoresistive sensor
-----------------------

The BT510 incorporates a Honeywell SM351LT magnetoresistive sensor. Refer to the `Honeywell SM351LT datasheet`_ for further details.

* MAG = P1.14

Accelerometer
-------------

The BT510 incorporates an I2C ST Microelectronics LIS2DH accelerometer. Refer to the `ST Microelectronics LIS2DH datasheet`_ for further details.

* SDA = P0.26
* SCL = P0.27
* INT_1 = P1.05
* INT_2 = P1.12

Temperature Sensor
------------------

The BT510 incorporates an I2C Silabs SI7055 temperature sensor. Refer to the `Silabs 7055 datasheet`_ for further details.

* SDA = P0.26
* SCL = P0.27

Programming and Debugging
*************************

Applications for the ``bt510`` board configuration can be built, flashed, and
debugged in the usual way. See :ref:`build_an_application` and
:ref:`application_run` for more details on building and running.

The BT510 features a TagConnect 10 way socket for connection of a
programmer/debugger, refer to `TagConnect TC2050 product page`_
for details of an appropriate TagConnect cable.

A non-standard layout is used to include access to the sensor debug UART.

+-----------+------------+----------------------+
| Pin No.   | Name       | Description          |
+===========+============+======================+
| 1         | Vcc        | Power Supply, 3.3V   |
+-----------+------------+----------------------+
| 2         | SWDIO      | SWD Data             |
+-----------+------------+----------------------+
| 3         | RXD        | Debug UART RX Data   |
+-----------+------------+----------------------+
| 4         | SWDCLK     | SWD Clock            |
+-----------+------------+----------------------+
| 5         | TM         | Spare GPIO           |
+-----------+------------+----------------------+
| 6         | SWO        | SWD Output           |
+-----------+------------+----------------------+
| 7         | N/C        | Not Connected        |
+-----------+------------+----------------------+
| 8         | TXD        | Debug UART TX Data   |
+-----------+------------+----------------------+
| 9         | GND        | Ground               |
+-----------+------------+----------------------+
| 10        | RESET      | Reset, Active Low    |
+-----------+------------+----------------------+

Connectivity to the programmer/debugger must be modified to match
the pinout shown above.

Laird Connectivity provide the USB-SWD programming board (750-03239) that supports
this connector layout, refer to the `USB SWD Programmer product page`_
.

Flashing
========

To connect the BT510 board for programming or debugging using the USB-SWD programming
board, on the programming board set SW6 to the supply out position and SW5 to the 3V3
position, ensure there is a jumper on J35 and that SW1 is in the debug position, then
connect the BT510 to the board using the Tag-Connect cable via J3:

.. figure:: img/bt510_prog.png
     :width: 630px
     :align: center
     :alt: Sentrius BT510 Sensor connected to programming board

     Sentrius BT510 Sensor connected to programming board

Then build and flash applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details). For example, to flash:

.. code-block:: console

   $ ninja flash

Here is an example for the :ref:`hello_world` application.

First, run your favorite terminal program to listen for output.

NOTE: On the BT510, the UART lines are at TTL levels and must be passed through
an appropriate line driver circuit for translation to RS232 levels. Refer to the `MAX3232 datasheet`_
for a suitable driver IC. The USB-SWD programming board has an in-built UART connected
to the BT510 acting as a USB CDC port, on Linux and Windows 10 this driver should be
installed automatically, for Windows 7, the MBED driver is required to use the serial
port - see the `MBED Serial Driver`_ link for details and how to install the driver.

.. code-block:: console

   $ minicom -D <tty_device> -b 115200

Replace :code:`<tty_device>` with the port where the bt510 can be found. For example, under Linux, :code:`/dev/ttyACM0`.

Then build and flash the application in the usual way.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: bt510
   :goals: build flash

Note that an external debugger is required to perform application flashing.

Debugging
=========

The ``bt510`` board does not have an on-board J-Link debug IC
as some nRF5x development boards, however, instructions from the
:ref:`nordic_segger` page also apply to this board, with the additional step
of connecting an external debugger. The USB-SWD programmer board has a CMSIS debugger
compatible interface and debugging can be performed using pyocd, openocd or any other
applications that support the CMSIS interface.

Testing Bluetooth on the BT510
***********************************
Many of the Bluetooth examples will work on the BT510.
Try them out:

* :ref:`ble_peripheral`
* :ref:`bluetooth-eddystone-sample`
* :ref:`bluetooth-ibeacon-sample`


Testing the LEDs and buttons on the BT510
*****************************************

There are 2 samples that allow you to test that the buttons (switches) and LEDs on
the board are working properly with Zephyr:

* :ref:`blinky-sample`
* :ref:`button-sample`

You can build and flash the examples to make sure Zephyr is running correctly on
your board. The button, LED and sensor device definitions can be found in
:zephyr_file:`boards/arm/bt510/bt510.dts`.


References
**********

.. target-notes::

.. _Sentrius BT510 website: https://www.lairdconnect.com/iot-devices/iot-sensors/bt510-bluetooth-5-long-range-ip67-multi-sensor
.. _TagConnect TC2050 product page: https://www.tag-connect.com/product/tc2050-idc-050
.. _USB SWD Programmer product page: https://www.lairdconnect.com/usb-swd-programmer/
.. _MAX3232 datasheet: https://www.ti.com/lit/ds/symlink/max3232.pdf
.. _Silabs 7055 datasheet: https://www.silabs.com/documents/public/data-sheets/Si7050-1-3-4-5-A20.pdf
.. _ST Microelectronics LIS2DH datasheet: https://www.st.com/resource/en/datasheet/lis2dh.pdf
.. _Honeywell SM351LT datasheet: https://sensing.honeywell.com/honeywell-sensing-nanopower-series-datasheet-50095501-c-en.pdf
.. _MBED Serial Driver: https://os.mbed.com/docs/mbed-os/v6.8/program-setup/windows-serial-driver.html
