With previous XIAO series boards, we could easily write sketches using Arduino thanks to the Board Support Package (BSP). However, the XIAO nRF54L15 did not have a BSP, limiting the development environment to Zephyr.
I imagine many of you have struggled with learning Zephyr or setting up the environment.
Now, @Loren_Bufanu is developing an nRF54L15 BSP on GitHub (link below).
While full-scale debugging support is still under development, I can already write and run Arduino sketches with few issues. Most existing Arduino libraries and sketches work with little to no modification. Compile times are also significantly faster compared to Zephyr.
I have written a few sample sketches, so please use them as a reference.
Wow, wonderful news.
I will test it today, should be easy because there is a JSON to integrate it in my Eclipse/Sloeber.
So I have to buy a few nrf54L15-XIAOs next week. Exciting …
That saves a lot of time for me. My own integration of the Nordic bare metal environment into Eclipse is far away from success as I can spent only a few hours per week for it.
Thank You for the information.
Update:
The preparation of my IDE has taken only a few minutes and compilation runs (empty setup() and loop() with including Arduino.h). Now I have to wait for the XIAO-boards. There are some selectors (ZigBee, BLE, etc.), may be I have to learn more if it does not run with default (no) selections. But that is for the next week …
(Would be interesting if I can exclude compiling and linking of resources that I do not need.)
Update 2: (not technical)
Does someone know, how to order XIAO-boards at seedstudio without PayPal?
My latest XIAO-Boards (nrf52840) I ordered at Amazon, but they do not have nrf54L15.
Now I spent a lot of time trying to buy a XIAO-board, more, than installing and testing the developer environment. But no success … not possible to buy.
Update 3: Meanwhile I found a seller with several payment conditions.
The BSP for the nRF54L15 currently being developed by @Loren_Bufanu includes a wealth of BLE examples. Using these as a reference, I wrote a demo sketch for Extended BLE. I hope this serves as a useful reference for anyone interested.
Peripheral retrieves data from the IMU every 80 ms and calculates attitude using the Madgwick filter. It then bursts 44 bytes of data three times via ExtendedAdv. The central filters Peripheral by MAC address, receives the 44-byte data, and displays it on a display and a PC serial plotter.
If necessary, the data length can be extended up to 1 KB.
That is near to my BLE application, a master/slave bus-system with many slaves (currently 10, up to 255 possible) based on standard advertising PDUs (6 bytes request and 31 bytes response) and a connection time of less than 1 millisecond for each slave. Till now it is running on Arduino Nano BLE 33 (nRF52840).
I am still waiting for the XIAO-boards which I ordered this Monday, being excited how it works. It will take a few hours to adapt my code, because I directly manipulate the registers and there are new registers with nRF54L15 (SUBSCRIBE_…) which I want to learn.
And of course I will have a look to the resources presented by @Loren_Bufanu, but first I want to run my own software.
Thanks to @msfujino for the presentations and thanks to @Loren_Bufanu for the Arduino integration.
For anybody with interest, the library is out-of-the-box compatible with nRF24 and nRF52840 devices, but can be set to use the larger payload sizes and faster (4Mbit) speeds as well.
The library focuses on the ESB (Enhanced Shock Burst) protocol, which is basically direct radio communication between devices.
My supporting libraries (RF24Network, RF24Mesh &RF24Ethernet) are being updated currently, and the current changes are available on the master branches, we just haven’t done official releases yet, until things are ready. I’m still working out a few details all around.
Testers, users etc are all welcome! Please report any issues etc via the link above.
I was ill for the last weeks, so I couldn’t care for installing this package.
But today I did: (Linux Mint, Arduino IDE 2 + Eclipse/Sloeber)
I made some mistakes (pip was not installed and wrong parameter with install_linux_host_deps.sh [should be with –all]), but now it is running.
I am very, very happy.
For me it was most important to have it running with Eclipse/Sloeber, because I have self developed tools (e.g. coefficient calculating for digital filters) to manipulate C++ header files in the pre-build phase. (I have no idea how to integrate that in the Arduino IDE.)
So thanks to @msfujino and @Loren_Bufanu again. Really “perfect” !!! You made my day.
Now I can replace the Arduino Nano BLE 33 (nRF52840) with the XIAO-nRF54L15 in many projects.
Update:
I failed to install the package on my older PC (Linux Mint 19). The switch –all gives the error message “Could not find a version that satisfies the requirement pyocd==0.42.0 (from …)”.
The switch –udev works, but the upload is not working:
File “…/upload.py”, line 8
from _future_ import annotations
SyntaxError: future feature annotations is not defined“
It is not important (no issue), just another trigger for updating my old PC.
But may be a hint for others who try to install on older Linux.
Welcome to the world of nRF54L15 ArduinoCore!
For hobbyist coders like me, this is a huge relief—whereas I used to spend days struggling with Zephyr just to get things done, now I can focus solely on writing sketches.
The BSP has been updated to version 0.6.79 and is getting close to being complete, but we still need testers. If you encounter any issues, please post them on GitHub. I’m sure @Loren_Bufanu will resolve them in no time.
@msfujino said the best @ProfRob . Welcome to “world of nRF54L15 ArduinoCore“!
Any real usage and bug reporting is welcome and would mature the core even faster!
Sorry for your installation difficulties, but not much work has been put into the install process just yet. Will get to that soon, and test it on different fresh installs of Linux/Windows and maybe OSX.
At the moment, @msfujino and others (like Linar Yusupov) are finding and reporting bugs which helps me the most. This core would not be possible without it, and I would like to thank them once more with this occasion.
If anyone has any feature request, or ideas for this core, I am happy to implement them.
And I would like to say sorry for my slow responses sometimes, but lately, I am very busy with various projects, work and personal .
Outstanding effort and work product, on behalf of the community.. THANK YOU!
I’m looking forward to refactoring my Nrf52840 Code to the new Xiao and even though the Nrf_SDK is very Robust. Sometime you just need a “Swiss Army Knife” instead of a HAMMER..
I will run it through my tests and report back, Makes me proud to be a forum member here and witness excellence and a collaborative effort to provide a solution for ALL. !
Well DONE!