.. zephyr:board:: bt510 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_back.jpg :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. Ezurio 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.jpg :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 :zephyr:code-sample:`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 -b 115200 Replace :code:`` 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: * :zephyr:code-sample:`ble_peripheral` * :zephyr:code-sample:`bluetooth_eddystone` * :zephyr:code-sample:`bluetooth_ibeacon` 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: * :zephyr:code-sample:`blinky` * :zephyr:code-sample:`button` 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/ezurio/bt510/bt510.dts`. References ********** .. target-notes:: .. _Sentrius BT510 website: https://www.ezurio.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.ezurio.com/wireless-modules/programming-kits/usb-swd-programming-kit .. _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