You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Arduino Mbed OS Stella Boards core](https://github.com/arduino/ArduinoCore-mbed) (required for the nRF52840 microcontroller of the Arduino Stella)
40
40
41
41
## Arduino Stella Overview
42
42
43
-
The Arduino Stella redefines location tracking with its advanced microcontroller, the nRF52840 from Nordic Semiconductor, and the DCU040 Ultra-Wide Band (UWB) module from Truesense. Tailored for modern tracking needs, the Arduino Stella excels in pinpointing warehouse assets, ensuring healthcare safety and automating smart buildings.
43
+
The Arduino Stella redefines location tracking with its advanced microcontroller, the nRF52840 from Nordic Semiconductor, and the [DCU040](https://ultrawideband.truesense.it/wp-content/uploads/2023/08/TRUESENSE-DCU040_Datasheet_DRAFT-V1.7.pdf) Ultra-Wide Band (UWB) module from Truesense. Tailored for modern tracking needs, the Arduino Stella excels in pinpointing warehouse assets, ensuring healthcare safety and automating smart buildings.
44
44
45
45

46
46
@@ -52,7 +52,7 @@ Ultra-Wideband (UWB) is a radio technology that uses very low energy levels for
52
52
53
53
#### UWB vs. Traditional Narrowband Technologies
54
54
55
-
The fundamental difference between UWB and traditional wireless technologies (Wi-Fi, Bluetooth®, Zigbee® and Cellular) lies in their transmission methods:
55
+
The fundamental difference between UWB and traditional wireless technologies (Wi-Fi®, Bluetooth®, Zigbee® and Cellular) lies in their transmission methods:
@@ -66,7 +66,7 @@ Traditional narrowband systems use frequency or amplitude modulation to send dat
66
66
67
67
#### Key Characteristics of UWB
68
68
69
-
-**High precision**: UWB can determine the relative position of devices with centimeter-level accuracy (typically 5-10 cm), far more precise than GPS (meters), Bluetooth® (1-3 meters) or Wi-Fi (2-15 meters).
69
+
-**High precision**: UWB can determine the relative position of devices with centimeter-level accuracy (typically 5-10 cm), far more precise than GPS (meters), Bluetooth® (1-3 meters) or Wi-Fi® (2-15 meters).
70
70
-**Low-power consumption**: Despite its high data rates, UWB consumes very little power, making it suitable for battery-operated devices like the Arduino Stella, which is optimized for energy efficiency.
71
71
-**Short range**: Typically effective within 10-30 meters, making it ideal for indoor positioning applications where GPS signals are weak or unavailable.
72
72
-**Strong security**: The unique physical layer characteristics of UWB, including its wide bandwidth and low power spectral density, make it more resistant to jamming, eavesdropping, and relay attacks compared to other wireless technologies.
@@ -137,7 +137,7 @@ The bottom view of the Arduino Stella is shown in the image below:
137
137
Here's an overview of the board's main components shown in the images:
138
138
139
139
-**Microcontroller**: At the heart of the Arduino Stella is the nRF52840 microcontroller from Nordic Semiconductor. This powerful 32-bit Arm® Cortex®-M4 processor runs at 64 MHz and features 1 MB Flash and 256 kB RAM, providing ample processing power and memory for sophisticated applications.
140
-
-**UWB Module**: The Truesense DCU040 module (based on the NXP Trimension SR040 UWB IC) enables precise distance measurement with accuracy better than ±10 cm using two-way ranging techniques.
140
+
-**UWB Module**: The Truesense DCU040 module (based on the NXP® Trimension SR040 UWB IC) enables precise distance measurement with accuracy better than ±10 cm using two-way ranging techniques.
141
141
-**Connectivity**: Besides UWB, the Arduino Stella includes Bluetooth® 5.0 connectivity through the nRF52840's integrated radio, supporting IEEE 802.15.4-2006 and 2.4 GHz transceiver capabilities.
142
142
-**Accelerometer**: A 3-axis MEMS digital output accelerometer (SC7A20) enhances the board's motion detection capabilities, with programmable sensitivity ranges of ±2G/±4G/±8G/±16G and features like orientation detection, free-fall detection, and click detection.
143
143
-**User interfaces**: The board includes a user-programmable button, a user-programmable LED and a buzzer (FUET-5020) that can be used for audible alerts.
@@ -278,12 +278,12 @@ Let's use the Arduino Stella to create a real-time distance measurement system u
278
278
279
279
The `Nearby World` example demonstrates the core functionality of UWB technology through a simple example sketch that can be described in the following key steps:
280
280
281
-
1.**Bluetooth® Low Energy connection setup**: The Arduino Stella broadcasts using Bluetooth Low Energy to make itself discoverable to compatible smartphone apps.
282
-
2.**Configuration exchange**: The Bluetooth Low Energy connection is used to exchange necessary UWB configuration parameters between the Arduino Stella and the smartphone.
281
+
1.**Bluetooth® Low Energy connection setup**: The Arduino Stella broadcasts using Bluetooth® Low Energy to make itself discoverable to compatible smartphone apps.
282
+
2.**Configuration exchange**: The Bluetooth® Low Energy connection is used to exchange necessary UWB configuration parameters between the Arduino Stella and the smartphone.
283
283
3.**UWB ranging**: Once configured, the actual UWB ranging session begins, providing precise distance measurements.
284
284
4.**Real-time feedback**: Distance data is continuously updated and can be viewed both on the IDE's Serial Monitor and on the smartphone app.
285
285
286
-
This process demonstrates the working principle of many UWB applications, where Bluetooth Low Energy is used primarily for discovery and configuration, while UWB handles the precise ranging.
286
+
This process demonstrates the working principle of many UWB applications, where Bluetooth® Low Energy is used primarily for discovery and configuration, while UWB handles the precise ranging.
287
287
288
288
#### Uploading the Sketch
289
289
@@ -438,13 +438,13 @@ To complete the test, you will need a UWB-enabled smartphone with one of the com
438
438
439
439
**For iPhone (iPhone 11 or newer with UWB capability):**
***__Important note for Android devices:__ If Developer Options is currently enabled on your Android device, please ensure all radio-related options remain at their default settings. We recommend keeping Developer Options disabled for optimal UWB functionality. If you previously enabled it, consider disabling it for the most stable device operation.***
450
450
@@ -472,7 +472,7 @@ The `NearbyDemo` example sketch demonstrates how to implement distance measureme
472
472
473
473
This example demonstrates the following:
474
474
475
-
-**Hybrid communication protocol**: Integration of Bluetooth Low Energy for device discovery and configuration with UWB for precise distance measurements
475
+
-**Hybrid communication protocol**: Integration of Bluetooth® Low Energy for device discovery and configuration with UWB for precise distance measurements
476
476
-**Standards compatibility**: Compatible with Apple's Nearby Interaction API and Android UWB implementations
477
477
-**Power-efficient design**: UWB subsystem only activates when a client connects, conserving battery life
478
478
-**Multi-client support**: Can handle connections from multiple smartphones simultaneously
@@ -616,15 +616,15 @@ Once the example sketch is uploaded and a smartphone connects to the Arduino Ste
616
616
617
617

618
618
619
-
The Serial Monitor shows the initialization message, followed by `- Client connected!` when a smartphone establishes a Bluetooth Low Energy connection. Only after the connection is established will you see session status and real-time distance measurements in millimeters. If no device connects, you will only see the initial "Nearby interaction app start..." message waiting for a connection.
619
+
The Serial Monitor shows the initialization message, followed by `- Client connected!` when a smartphone establishes a Bluetooth® Low Energy connection. Only after the connection is established will you see session status and real-time distance measurements in millimeters. If no device connects, you will only see the initial "Nearby interaction app start..." message waiting for a connection.
620
620
621
621
***__Important note__: Distance measurements only appear __after__ a successful connection with a UWB-enabled smartphone. Without a connection, the Serial Monitor will only show the initialization message.***
622
622
623
623
### Key Components of the Example Sketch
624
624
625
625
The `NearbyDemo` code implements an event-driven architecture using callback functions to handle various stages of the UWB communication process. Let's examine the main components:
626
626
627
-
1.**Libraries and Global Variables**
627
+
-**Libraries and Global Variables**
628
628
629
629
```arduino
630
630
#include <ArduinoBLE.h>
@@ -638,9 +638,9 @@ The example sketch uses two important libraries for its operation:
638
638
-`ArduinoBLE`: Provides Bluetooth® Low Energy functionality for device discovery and initial connection.
639
639
-`StellaUWB`: The core library that enables interaction with the onboard UWB module of the Arduino Stella.
640
640
641
-
The `numConnected` variable tracks how many Bluetooth Low Energy clients are currently connected to the Arduino Stella.
641
+
The `numConnected` variable tracks how many Bluetooth® Low Energy clients are currently connected to the Arduino Stella.
642
642
643
-
2.**Ranging Data Handler**
643
+
-**Ranging Data Handler**
644
644
645
645
The heart of the UWB functionality resides in the ranging callback:
This function processes incoming distance measurements, validates the data integrity, and outputs results to the IDE's Serial Monitor. The validation checks ensure only valid measurements are displayed (`status = 0` and `distance ≠ 0xFFFF`).
657
657
658
-
3.**Connection Management**
658
+
-**Connection Management**
659
659
660
660
The connection callbacks manage the UWB subsystem lifecycle efficiently:
These functions provide feedback about the session lifecycle, helping developers understand the connection state during debugging.
682
682
683
-
5.**Setup and Initialization**
683
+
-**Setup and Initialization**
684
684
685
-
The setup function registers all callbacks and starts Bluetooth Low Energy advertising:
685
+
The setup function registers all callbacks and starts Bluetooth® Low Energy advertising:
686
686
687
687
```arduino
688
688
void setup() {
@@ -698,9 +698,9 @@ void setup() {
698
698
699
699
The device name "Arduino Stella" appears in smartphone apps when scanning for available UWB devices.
700
700
701
-
6.**Main Loop**
701
+
-**Main Loop**
702
702
703
-
The main loop maintains the Bluetooth Low Energy connection:
703
+
The main loop maintains the Bluetooth® Low Energy connection:
704
704
705
705
706
706
```arduino
@@ -710,7 +710,7 @@ void loop() {
710
710
}
711
711
```
712
712
713
-
The `poll()` function processes Bluetooth Low Energy events while the actual UWB ranging occurs asynchronously through callbacks.
713
+
The `poll()` function processes Bluetooth® Low Energy events while the actual UWB ranging occurs asynchronously through callbacks.
714
714
715
715
### Testing with Smartphones
716
716
@@ -720,8 +720,8 @@ To test this example with a UWB-enabled smartphone:
720
720
2. Open the IDE's Serial Monitor at 115200 baud
721
721
3. Install a compatible app on your smartphone:
722
722
723
-
-**For iOS**: NXP Trimensions AR or Qorvo Nearby Interaction
724
-
-**For Android**: Truesense or NXP UWB demo apps
723
+
-**For iOS**: NXP® Trimensions AR or Qorvo Nearby Interaction
724
+
-**For Android**: Truesense or NXP® UWB demo apps
725
725
726
726
4. Connect to the device named "Arduino Stella" in the app
727
727
5. Move your phone to see distance measurements update in real-time
@@ -1090,7 +1090,7 @@ The output format from the Portenta C33 board is optimized for visualization, sh
1090
1090
1091
1091
The Two-Way Ranging example uses simplified helper classes (`UWBTracker` and `UWBRangingControlee`) that make device configuration easier while maintaining the same functionality. Let's analyze the key components:
***__Important note:__ The MAC addresses are reversed between the two devices. The Arduino Stella identifies itself as `0x2222`and expects to communicate with `0x1111`, while the Portenta UWB Shield identifies itself as `0x1111` and expects to communicate with `0x2222`. Both devices must use the same session ID (`0x11223344`) to establish communication.***
1113
1113
1114
-
2.**Simplified Session Setup**
1114
+
-**Simplified Session Setup**
1115
1115
1116
1116
The new code uses helper classes that simplify the UWB session configuration:
1117
1117
@@ -1135,7 +1135,7 @@ myControlee.start();
1135
1135
1136
1136
These helper classes automatically configure the appropriate ranging parameters for their respective roles, making the setup process more straightforward.
1137
1137
1138
-
3.**Enhanced Visual Feedback**
1138
+
-**Enhanced Visual Feedback**
1139
1139
1140
1140
Both devices in this example provide visual feedback to help users understand the system status and distance measurements at a glance. Each device uses its LED capabilities to indicate different operational states.
1141
1141
@@ -1162,7 +1162,7 @@ The Portenta C33 uses its RGB LED to provide feedback about different aspects of
1162
1162
1163
1163
This three-color system provides immediate visual feedback about connection status, system operation, and proximity all at once, making it useful for debugging and demonstration purposes where checking serial output isn't practical.
1164
1164
1165
-
4.**Data Processing and Visualization**
1165
+
-**Data Processing and Visualization**
1166
1166
1167
1167
The Portenta UWB Shield implements a moving average filter to smooth distance measurements:
0 commit comments