| .. _bt610: |
| |
| Laird Connectivity Sentrius BT610 Sensor |
| ######################################## |
| |
| Overview |
| ******** |
| |
| The Sentrius™ BT610 Sensor is a battery powered, Bluetooth v5 Long Range |
| integrated sensor platform 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)` |
| * :abbr:`QSPI (Quad Serial Peripheral Interface)` |
| * RADIO (Bluetooth Low Energy and 802.15.4) |
| * :abbr:`RTC (nRF RTC System Clock)` |
| * Segger RTT (RTT Console) |
| * :abbr:`SPI (Serial Peripheral Interface)` |
| * :abbr:`UART (Universal Asynchronous Receiver-Transmitter)` |
| * :abbr:`WDT (Watchdog Timer)` |
| |
| .. figure:: img/bt610_front.jpg |
| :align: center |
| :alt: Sentrius BT610 Sensor, front view |
| |
| Sentrius BT610 Sensor, front view |
| |
| .. figure:: img/bt610_back.jpg |
| :align: center |
| :alt: Sentrius BT610 Sensor, rear view |
| |
| Sentrius BT610 Sensor, rear view |
| |
| More information about the board can be found at the |
| `Sentrius BT610 website`_. |
| |
| Hardware |
| ******** |
| |
| Supported Features |
| ================== |
| |
| The BT610 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 | |
| +-----------+------------+----------------------+ |
| | QSPI | on-chip | qspi | |
| +-----------+------------+----------------------+ |
| | RADIO | on-chip | Bluetooth, | |
| | | | ieee802154 | |
| +-----------+------------+----------------------+ |
| | RTC | on-chip | system clock | |
| +-----------+------------+----------------------+ |
| | RTT | Segger | console | |
| +-----------+------------+----------------------+ |
| | SPI(M) | on-chip | spi | |
| +-----------+------------+----------------------+ |
| | UART | on-chip | serial | |
| +-----------+------------+----------------------+ |
| | WDT | on-chip | watchdog | |
| +-----------+------------+----------------------+ |
| |
| .. figure:: img/bt610_board.jpg |
| :align: center |
| :alt: Sentrius BT610 Sensor, board layout |
| |
| Sentrius BT610 Sensor, board layout |
| |
| Connections and IOs |
| =================== |
| |
| LED |
| --- |
| |
| Two LEDs are visible through the BT610 housing lid. Note that the LEDs can be |
| driven either directly, or via PWM. PWM should be used when current consumption |
| is required to be minimised. |
| |
| * LED_1 (red) = LED0 = P1.07 (Red LED 1) |
| * LED_2 (green) = LED1 = P1.03 (Green LED 2) |
| |
| * LED_PWM_1 (red) = LED0PWM = P1.07 (Red PWM LED 1) |
| * LED_PWM_2 (green) = LED1PWM = P1.03 (Green PWM LED 2) |
| |
| Push button |
| ------------ |
| |
| The BT610 incorporates three mechanical push buttons. Note these are only |
| accessible with the housing cover removed. |
| |
| Two of the buttons are available for use via the board DTS file, as follows. |
| |
| * BUTTON_1 = SW0 = P0.24 (Boot button SW1) |
| * BUTTON_2 = SW1 = P1.01 (Tamper switch SW2) |
| |
| A third mechanical push button is provided to allow reset of the on-board |
| microcontroller. |
| |
| Magnetoresistive sensor |
| ----------------------- |
| |
| The BT610 incorporates a Honeywell SM351LT magnetoresistive sensor. Refer to |
| the `Honeywell SM351LT datasheet`_ for further details. |
| |
| * MAG_1 = SW2 = P1.15 (SM3531LT_0) |
| |
| External flash memory |
| --------------------- |
| |
| A 64Mbit external flash memory part is available for storage of application |
| images and data. Refer to the `Macronix MX25R6435FZNIL0 datasheet`_ for further |
| details. |
| |
| The flash memory is connected to the on-board QSPI device controller. |
| |
| * MX25R64 = QSPI |
| |
| Voltage reference |
| ----------------- |
| |
| A precision 2.5V voltage reference is provided on the V_REF input for use |
| during AD measurements. |
| |
| This can deliver up to 50mA peak and 20mA continuous current. |
| |
| |
| Sensor connectivity |
| ------------------- |
| |
| The BT610 incorporates three terminal blocks J5, J6 & J7 that allow |
| connectivity to its sensor inputs, as follows. |
| |
| Terminal Block J5 |
| ----------------- |
| |
| +-----------+------------------------+----------------------------+-----------+ |
| | Pin No. | Name | Description | Direction | |
| +===========+========================+============================+===========+ |
| | 1 | EXT_SPI_CS_2 | External SPI CS 2 | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 2 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 3 | AIN4 | Analog Input 4 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 4 | AIN3 | Analog Input 3 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 5 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 6 | AIN2 | Analog Input 2 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 7 | AIN1 | Analog Input 1 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 8 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 9 | DIN2 | Digital Input 2 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 10 | DO2 | Digital Output 2 | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| |
| Terminal Block J6 |
| ----------------- |
| |
| +-----------+------------------------+----------------------------+-----------+ |
| | Pin No. | Name | Description | Direction | |
| +===========+========================+============================+===========+ |
| | 1 | DO1 | Digital Output 1 | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 2 | DIN1 | Digital Input 1 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 3 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 4 | THERM4 | Thermistor Input 4 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 5 | THERM3 | Thermistor Input 3 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 6 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 7 | THERM2 | Thermistor Input 2 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 8 | THERM1 | Thermistor Input 1 | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 9 | GND | GND | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 10 | B+ OUT | Ext. sensor power supply | (N/A) | |
| +-----------+------------------------+----------------------------+-----------+ |
| |
| Terminal Block J7 |
| ----------------- |
| |
| +-----------+------------------------+----------------------------+-----------+ |
| | Pin No. | Name | Description | Direction | |
| +===========+========================+============================+===========+ |
| | 1 | UART_1_RTS | UART 1 RTS | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 2 | UART_1_CTS | UART 1 CTS | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 3 | UART_1_RXD | UART 1 RXD | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 4 | UART_1_TXD | UART 1 TXD | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 5 | EXT_I2C_SCL | External I2C SCL | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 6 | EXT_I2C_SDA | External I2C SDA | IN/OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 7 | EXT_SPI_CLK/TRACEDATA3 | Ext. SPI CLK/TRACE DATA 3 | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 8 | EXT_SPI_MISO | External SPI MISO | IN | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 9 | EXT_SPI_MOSI | External SPI MOSI | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| | 10 | EXT_SPI_CS_1 | External SPI CS 1 | OUT | |
| +-----------+------------------------+----------------------------+-----------+ |
| |
| Analog inputs |
| ------------- |
| |
| The four external Analog Inputs are multiplexed to a single host |
| microcontroller AD input, AIN_1, via a TI TMUX1204 multiplexer. |
| |
| Refer to the `TI TMUX1204 datasheet`_ for further details. |
| |
| Signals up to 12V, to a maximum of 50mA, can be applied to the external Analog |
| Inputs. |
| |
| External Analog Input connections are made to the multiplexer as follows. |
| |
| +--------------+--------------+ |
| | Input | MUX Input | |
| +==============+==============+ |
| | AIN1 | S1 | |
| +--------------+--------------+ |
| | AIN2 | S2 | |
| +--------------+--------------+ |
| | AIN3 | S3 | |
| +--------------+--------------+ |
| | AIN4 | S4 | |
| +--------------+--------------+ |
| |
| A TI TCA9538 port expander is used to determine the mode of each Analog Input, |
| for either voltage or current measurement, and also to control the mutliplexer. |
| A high level applied to the appropriate expander port pin enables the |
| associated analog input as a current input; when a low logic level is applied, |
| voltage measurement mode is selected. |
| |
| Refer to the `TI TCA9538 datasheet`_ for further details. |
| |
| The expander port connections are as follows. |
| |
| +--------------+---------------+ |
| | Pin | Function | |
| +==============+===============+ |
| | P0 | AIN1 mode | |
| +--------------+---------------+ |
| | P1 | AIN2 mode | |
| +--------------+---------------+ |
| | P2 | AIN3 mode | |
| +--------------+---------------+ |
| | P3 | AIN4 mode | |
| +--------------+---------------+ |
| | P4 | MUX A0 | |
| +--------------+---------------+ |
| | P5 | MUX A1 | |
| +--------------+---------------+ |
| | P6 | (N/C) | |
| +--------------+---------------+ |
| | P7 | (N/C) | |
| +--------------+---------------+ |
| |
| The following illustrates some possible configuration values for the port |
| expander. Note that it is possible for combinations of voltage and current |
| measurement to be applied such that some external Analog Inputs measure current |
| and others voltage. This is not shown below. |
| |
| +----------------+------------------------------+ |
| | Expander value | Selected Analog Input & mode | |
| +================+==============================+ |
| | b'00000000' | AIN1, voltage measurement | |
| +----------------+------------------------------+ |
| | b'00000001' | AIN1, current measurement | |
| +----------------+------------------------------+ |
| | b'00010000' | AIN2, voltage measurement | |
| +----------------+------------------------------+ |
| | b'00010010' | AIN2, current measurement | |
| +----------------+------------------------------+ |
| | b'00100000' | AIN3, voltage measurement | |
| +----------------+------------------------------+ |
| | b'00100100' | AIN3, current measurement | |
| +----------------+------------------------------+ |
| | b'00110000' | AIN4, voltage measurement | |
| +----------------+------------------------------+ |
| | b'00111000' | AIN4, current measurement | |
| +----------------+------------------------------+ |
| |
| Circuitry associated with the analog input measurements can be disabled when |
| not in use. |
| |
| A GPIO is used to control this behaviour, as shown below. |
| |
| +----------------+-----------+ |
| | ANALOG_ENABLE | Behaviour | |
| +================+===========+ |
| | 0 | Disabled | |
| +----------------+-----------+ |
| | 1 | Enabled | |
| +----------------+-----------+ |
| |
| Thermistor inputs |
| ----------------- |
| |
| The four external thermistor inputs are connected to a single AD input, AIN_2, |
| via a TI TMUX1204 multiplexer. |
| |
| Refer to the `TI TMUX1204 datasheet`_ for further details. |
| |
| External analog input connections are made to the multiplexer as follows. |
| |
| +--------------+--------------+ |
| | Input | MUX Input | |
| +==============+==============+ |
| | THERM1 | S1 | |
| +--------------+--------------+ |
| | THERM2 | S2 | |
| +--------------+--------------+ |
| | THERM3 | S3 | |
| +--------------+--------------+ |
| | THERM4 | S4 | |
| +--------------+--------------+ |
| |
| The same port expander used to select external analog inputs is also used to |
| select external thermistor inputs. |
| |
| The table below defines possible values that can be written. |
| |
| +----------------+-----------------------+ |
| | Expander value | Selected Analog Input | |
| +================+=======================+ |
| | b'00000000' | THERM1 | |
| +----------------+-----------------------+ |
| | b'00010000' | THERM2 | |
| +----------------+-----------------------+ |
| | b'00100000' | THERM3 | |
| +----------------+-----------------------+ |
| | b'00110000' | THERM4 | |
| +----------------+-----------------------+ |
| |
| A GPIO line is used to enable electronics associated with thermistor |
| measurement. This is controlled as shown below. |
| |
| +----------------+-----------------------+ |
| | THERM_ENABLE | Behaviour | |
| +================+=======================+ |
| | 0 | Enabled | |
| +----------------+-----------------------+ |
| | 1 | Disabled | |
| +----------------+-----------------------+ |
| |
| Note the thermistor circuit must be calibrated before use. A suggested method |
| for achieving this is described in the |
| `BT610 Zephyr Application Thermistor Calibration`_ application note. |
| |
| Digital inputs |
| -------------- |
| |
| Two external digital inputs are available for connection to external signals. |
| For the digital level being applied to be detected, an appropriate output pin |
| must first be set. This approach is taken to ensure supporting circuitry can be |
| powered down when the input state is not being determined. When in use, the |
| external digital input level can be read from the appropriate input pin. |
| |
| The output and input pins required are as follows. |
| |
| +----------------+----------------+ |
| | Enable Pin | Input Read Pin | |
| +================+================+ |
| | DIN_1_ENABLE | DIN_1 | |
| +----------------+----------------+ |
| | DIN_2_ENABLE | DIN_2 | |
| +----------------+----------------+ |
| |
| Digital outputs |
| --------------- |
| |
| Two external digital outputs are available to provide signals to or to directly |
| drive external equipment. |
| |
| To provide a high level on the external digital output, a high logic level is |
| applied to the appropriate host microcontroller output. |
| |
| The output pins required are as follows. |
| |
| +----------------+--------------------------+ |
| | Output Pin | External Sensor Terminal | |
| +================+==========================+ |
| | DO_1_MCU | DO1 | |
| +----------------+--------------------------+ |
| | DO_2_MCU | DO2 | |
| +----------------+--------------------------+ |
| |
| External power supply |
| --------------------- |
| |
| Power can be supplied to external sensors via the B+ OUT terminal. This is |
| enabled by setting the BATTERY_OUTPUT_ENABLE GPIO line. In addition, the |
| external supply can be boosted to 5V by setting the HIGH_SUPPLY_ENABLE GPIO |
| line. When 5V is not selected, the external power supply follows the |
| battery voltage. |
| |
| Up to 50mA peak and 20mA continuous current can be delivered by the External |
| Power Supply. |
| |
| External sensor I2C port |
| ------------------------ |
| |
| External I2C sensors can be connected on the external I2C port. Note that |
| external I2C sensors should be powered from the B+ terminal to ensure applied |
| voltage levels match those expected internally by the board. |
| |
| Required pins are as follows. |
| |
| +-------------+--------------------------+ |
| | Output Pin | External Sensor Terminal | |
| +=============+==========================+ |
| | SCL_PIN | EXT_I2C_SCL | |
| +-------------+--------------------------+ |
| | SDA_PIN | EXT_I2C_SDA | |
| +-------------+--------------------------+ |
| |
| |
| External sensor SPI port |
| ------------------------ |
| |
| Up to 2 external SPI sensors can be connected on the external SPI port. Note |
| that external SPI sensors should be powered from the B+ terminal to ensure |
| applied voltage levels match those expected internally by the board. |
| |
| Required pins are as follows. |
| |
| +-------------+--------------------------+ |
| | Output Pin | External Sensor Terminal | |
| +=============+==========================+ |
| | SCK_PIN | EXT_I2C_SCL | |
| +-------------+--------------------------+ |
| | MOSI_PIN | EXT_I2C_SDA | |
| +-------------+--------------------------+ |
| | MISO_PIN | EXT_SPI_MISO | |
| +-------------+--------------------------+ |
| | SDA_PIN | EXT_I2C_SDA | |
| +-------------+--------------------------+ |
| | CS_GPIOS | EXT_I2C_SDA | |
| +-------------+--------------------------+ |
| | CS_GPIOS | EXT_I2C_SDA | |
| +-------------+--------------------------+ |
| |
| |
| Programming and Debugging |
| ************************* |
| |
| Applications for the ``bt610`` board configuration can be |
| built and flashed in the usual way (see :ref:`build_an_application` |
| and :ref:`application_run` for more details); however, the standard |
| debugging targets are not currently available. |
| |
| The BT610 features a 10 way header, J3, for connection of a |
| programmer/debugger, with pinout as follows. |
| |
| +-----------+------------+----------------------+ |
| | Pin No. | Name | Description | |
| +===========+============+======================+ |
| | 1 | 3.3V | Power Supply, 3.3V | |
| +-----------+------------+----------------------+ |
| | 2 | SWDIO | Data Input/Output | |
| +-----------+------------+----------------------+ |
| | 3 | GND | GND | |
| +-----------+------------+----------------------+ |
| | 4 | SWDCLK | Clock Pin | |
| +-----------+------------+----------------------+ |
| | 5 | GND | GND | |
| +-----------+------------+----------------------+ |
| | 6 | SWO | Trace Output Pin | |
| +-----------+------------+----------------------+ |
| | 7 | (N/C) | Not Connected | |
| +-----------+------------+----------------------+ |
| | 8 | (N/C) | Not Connected | |
| +-----------+------------+----------------------+ |
| | 9 | GND | GND | |
| +-----------+------------+----------------------+ |
| | 10 | nRESET | Reset Pin | |
| +-----------+------------+----------------------+ |
| |
| Access to the sensor debug UART is facilitated by a 6 pin header, J1, with |
| pinout as follows. |
| |
| +-----------+------------+----------------------+-----------+ |
| | Pin No. | Name | Description | Direction | |
| +===========+============+======================+===========+ |
| | 1 | GND | GND | N/A | |
| +-----------+------------+----------------------+-----------+ |
| | 2 | UART_0_RTS | UART 0 RTS Pin | IN | |
| +-----------+------------+----------------------+-----------+ |
| | 3 | 3.3V | Power Supply, 3.3V | N/A | |
| +-----------+------------+----------------------+-----------+ |
| | 4 | UART_0_RX | UART 0 RX Pin | IN | |
| +-----------+------------+----------------------+-----------+ |
| | 5 | UART_0_TX | UART 0 TX Pin | OUT | |
| +-----------+------------+----------------------+-----------+ |
| | 6 | UART_0_CTS | UART 0 CTS Pin | OUT | |
| +-----------+------------+----------------------+-----------+ |
| |
| Note that pin 3 requires a solder bridge to be closed to enable powering of the |
| BT610 board via the UART connector. |
| |
| Flashing |
| ======== |
| |
| Follow the instructions in the :ref:`nordic_segger` page to install |
| and configure all the necessary software. Further information can be |
| found in :ref:`nordic_segger_flashing`. Then build and flash |
| applications as usual (see :ref:`build_an_application` and |
| :ref:`application_run` for more details). |
| |
| Here is an example for the :ref:`hello_world` application. |
| |
| First, run your favorite terminal program to listen for output. |
| |
| NOTE: On the BT610, 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. |
| |
| .. code-block:: console |
| |
| $ minicom -D <tty_device> -b 115200 |
| |
| Replace :code:`<tty_device>` with the port where the BT610 can be found. For |
| example, under Linux, :code:`/dev/ttyUSB0`. |
| |
| Then build and flash the application in the usual way. |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: samples/hello_world |
| :board: bt610 |
| :goals: build flash |
| |
| Note that an external debugger is required to perform application flashing. |
| |
| Debugging |
| ========= |
| |
| The ``bt610`` 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. |
| |
| Testing Bluetooth on the BT610 |
| *********************************** |
| Many of the Bluetooth examples will work on the BT610. |
| Try them out: |
| |
| * :ref:`ble_peripheral` |
| * :ref:`bluetooth-eddystone-sample` |
| * :ref:`bluetooth-ibeacon-sample` |
| |
| |
| Testing the LEDs and buttons on the BT610 |
| ***************************************** |
| |
| 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/bt610/bt610.dts`. |
| |
| |
| References |
| ********** |
| |
| .. target-notes:: |
| |
| .. _Sentrius BT610 website: https://www.lairdconnect.com/iot-devices/iot-sensors/sentrius-bt610-io-sensor |
| .. _Honeywell SM351LT datasheet: https://sensing.honeywell.com/honeywell-sensing-nanopower-series-datasheet-50095501-c-en.pdf |
| .. _MAX3232 datasheet: https://www.ti.com/lit/ds/symlink/max3232.pdf |
| .. _TI TMUX1204 datasheet: https://www.ti.com/lit/gpn/TMUX1204 |
| .. _TI TCA9538 datasheet: https://www.ti.com/lit/gpn/TCA9538 |
| .. _Macronix MX25R6435FZNIL0 datasheet: https://www.macronix.com/Lists/Datasheet/Attachments/7913/MX25R6435F,%20Wide%20Range,%2064Mb,%20v1.5.pdf |
| .. _BT610 Zephyr Application Thermistor Calibration: https://www.lairdconnect.com/documentation/application-note-bt610-zephyr-application-thermistor-calibration |