This is Part 7 of the new award winning development AI IoT kit from Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey
The purpose of this article is to continue where Part 5 gesture recognition demo was left off. This gesture recognition demo will be configure the Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey as a Bluetooth HID. Please follow the instructions depicted in the previous article Part 5 before completing this. Now update the proj.conf file with the following,
#Bluetooth HID mode
CONFIG_BLE_MODE_HID=y
Perform the steps outline in our previous article Part 5 to build and flash the new award winning development IoT kit from Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey
To continue with the gestures recogntion demo, connect the Nordic Platform to a laptop via the Bluetooth. It will act as a Human Interface Device (HID) to perform some functions in the laptop based on gestures recognized by the Axon Neural Network from the user. When performing gestures using the Bosch BMI270 IMU Sparkfun Evaluation Board available at DigiKey.
the minicom terminal displays messages similar to the following:
*** Booting MCUboot v2.3.0-dev-3dfaa012cf34 ***
*** Using nRF Connect SDK v3.3.0-preview2-ede152ec210b ***
*** Using Zephyr OS v4.3.99-4b6df5ff11b1 ***
I: Starting bootloader
I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Boot source: none
I: Image index: 0, Swap type: none
I: Bootloader chainload address offset: 0x10000
I: Image version: v0.0.0
I: Jumping to the first image slot
*** Booting nRF Connect SDK v3.3.0-preview2-ede152ec210b ***
*** Using Zephyr OS v4.3.99-4b6df5ff11b1 ***
[00:00:00.050,382] <inf> fs_nvs: 8 Sectors of 4096 bytes
[00:00:00.050,390] <inf> fs_nvs: alloc wra: 0, ee0
[00:00:00.050,394] <inf> fs_nvs: data wra: 0, 160
[00:00:00.050,478] <inf> bt_sdc_hci_driver: SoftDevice Controller build revision:
ac 6c cb 12 2a 45 63 97 7c ba aa bd 8d 8f d0 9b |.l..*Ec. |.......
c2 c9 23 ea |..#.
[00:00:00.052,819] <inf> bt_hci_core: HW Platform: Nordic Semiconductor (0x0002)
[00:00:00.052,835] <inf> bt_hci_core: HW Variant: nRF54Lx (0x0005)
[00:00:00.052,848] <inf> bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 172.52076 Build 1665477138
[00:00:00.053,066] <inf> bt_hci_core: No ID address. App must call settings_load()
[00:00:00.053,082] <inf> ble_hid: Bluetooth initialized
[00:00:00.053,746] <inf> bt_hci_core: HCI transport: SDC
[00:00:00.053,852] <inf> bt_hci_core: Identity: F3:93:F9:A8:5C:40 (random)
[00:00:00.053,871] <inf> bt_hci_core: HCI: version 6.2 (0x10) revision 0x3073, manufacturer 0x0059
[00:00:00.053,890] <inf> bt_hci_core: LMP: version 6.2 (0x10) subver 0x3073
[00:00:00.056,394] <inf> ble_hid: Advertising successfully started
[00:00:00.056,444] <inf> main: nRF Edge AI Gestures Recognition Demo:
[00:00:00.056,455] <inf> main: nRF Edge AI Runtime Version: 2.2.0
[00:00:00.056,474] <inf> main: nRF Edge AI Lab Solution id: 36038
[00:00:00.134,029] <inf> bas: BAS Notifications enabled
[00:00:00.134,360] <inf> ble_hid: Connected 98:46:0A:8B:6B:9F (public) |
[00:00:00.609,475] <inf> ble_hid: Input CCCD enabled
[00:00:00.609,492] <inf> ble_hid: Input attribute handle: 0
[00:00:00.609,521] <inf> ble_hid: Consumer CCCD enabled
[00:00:00.609,631] <inf> ble_hid: Security changed: 98:46:0A:8B:6B:9F (public) level 2
[00:00:01.701,452] <inf> main: Predicted class: DOUBLE SHAKE, with probability 99 %
[00:00:01.701,690] <inf> ble_hid: BLE HID Key 8 sent successfully
[00:00:03.684,646] <inf> main: Predicted class: DOUBLE SHAKE, with probability 95 %
[00:00:03.684,884] <inf> ble_hid: BLE HID Key 8 sent successfully
[00:00:05.006,769] <inf> main: Predicted class: DOUBLE THUMB, with probability 99 %
[00:00:05.007,007] <inf> ble_hid: BLE HID Key 4 sent successfully
[00:00:06.328,840] <inf> main: Predicted class: DOUBLE SHAKE, with probability 81 %
[00:00:06.329,078] <inf> ble_hid: BLE HID Key 8 sent successfully
[00:00:07.650,962] <inf> main: Predicted class: DOUBLE THUMB, with probability 97 %
[00:00:07.651,200] <inf> ble_hid: BLE HID Key 4 sent successfully
[00:00:09.634,149] <inf> main: Predicted class: SWIPE LEFT, with probability 98 %
[00:00:09.634,387] <inf> ble_hid: BLE HID Key 16 sent successfully
[00:00:12.608,930] <inf> main: Predicted class: SWIPE LEFT, with probability 96 %
[00:00:12.609,168] <inf> ble_hid: BLE HID Key 16 sent successfully
[00:00:13.600,515] <inf> main: Predicted class: DOUBLE THUMB, with probability 78 %
[00:00:13.600,747] <inf> ble_hid: BLE HID Key 4 sent successfully
[00:00:15.914,187] <inf> main: Predicted class: SWIPE LEFT, with probability 93 %
[00:00:15.914,425] <inf> ble_hid: BLE HID Key 16 sent successfully
[00:00:17.236,372] <inf> main: Predicted class: DOUBLE THUMB, with probability 95 %
[00:00:17.236,610] <inf> ble_hid: BLE HID Key 4 sent successfully
[00:00:23.185,865] <inf> main: Predicted class: SWIPE RIGHT, with probability 87 %
[00:00:23.186,103] <inf> ble_hid: BLE HID Key 32 sent successfully
[00:00:29.135,414] <inf> main: Predicted class: SWIPE RIGHT, with probability 97 %
[00:00:29.135,652] <inf> ble_hid: BLE HID Key 32 sent successfully
[00:00:37.398,618] <inf> main: Predicted class: DOUBLE SHAKE, with probability 82 %
[00:00:37.398,856] <inf> ble_hid: BLE HID Key 8 sent successfully
[00:00:39.712,347] <inf> main: Predicted class: DOUBLE THUMB, with probability 99 %
[00:00:39.712,585] <inf> ble_hid: BLE HID Key 4 sent successfully
[00:00:40.703,925] <inf> main: Predicted class: DOUBLE THUMB, with probability 98 %
[00:00:40.704,157] <inf> ble_hid: BLE HID Key 4 sent successfully
etc
The Bluetooth is connected successfully, since the minicom terminal returns the following log messages,
[00:00:00.134,360] <inf> ble_hid: Connected 98:46:0A:8B:6B:9F (public) |
[00:00:00.609,475] <inf> ble_hid: Input CCCD enabled
[00:00:00.609,492] <inf> ble_hid: Input attribute handle: 0
[00:00:00.609,521] <inf> ble_hid: Consumer CCCD enabled
This gesture recognition demo converts a specific gesture to a BLE HID Key and the laptop responds properly. There are two modes of operation for this gesture recognition demo, which is selected by pressing KEY0 in the AI IoT kit from Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey. One is the Presentation Control Mode and Music Control Mode and each are associated to different keyboard keys.
Please stay tuned for our next article in this series. This has completed the baseline gesture recognition demo for this new Axon Neural Processing Unit (NPU) using the Axon NPU driver directly, in this innovative Nordic IoT platform. This new Embedded World 2026 award winning Nordic IoT NRF54LM20-DK development kit is available at DigiKey.
Have a great day!
This article is available in spanish here.
Este artículo esta disponible en español aquí.

