I’m trying to use XIAO BLE (nrf52840) as a BLE central device.
Trying to compile a small example I get unsupported board error.
Here is the message:
WARNING: library ArduinoBLE claims to run on samd, megaavr, mbed, apollo3, mbed_nano, mbed_portenta, mbed_nicla, esp32, mbed_giga, renesas, renesas_portenta architecture(s) and may be incompatible with your current board which runs on nrf52 architecture(s).
c:\Users\szabo\OneDrive\Documents\Arduino\libraries\ArduinoBLE\src\utility\HCIUartTransport.cpp:35:2: error: #error “Unsupported board selected!”
35 | #error “Unsupported board selected!”
| ^~~~~
c:\Users\szabo\OneDrive\Documents\Arduino\libraries\ArduinoBLE\src\utility\HCIUartTransport.cpp:101:40: error: ‘SerialHCI’ was not declared in this scope; did you mean ‘Serial’?
101 | HCIUartTransportClass HCIUartTransport(SerialHCI, 912600);
| ^~~~~~~~~
| Serial
exit status 1
Compilation error: exit status 1
The code is really simple (the SCAN scketch from the example set:
/*
Scan
This example scans for Bluetooth® Low Energy peripherals and prints out their advertising details:
address, local name, advertised service UUID’s.
The circuit:
-
Arduino MKR WiFi 1010, Arduino Uno WiFi Rev2 board, Arduino Nano 33 IoT,
Arduino Nano 33 BLE, or Arduino Nano 33 BLE Sense board.
This example code is in the public domain.
*/
#include <ArduinoBLE.h>
void setup() {
Serial.begin(9600);
while (!Serial);
// begin initialization
if (!BLE.begin()) {
Serial.println("starting Bluetooth® Low Energy module failed!");
while (1);
}
Serial.println(“Bluetooth® Low Energy Central scan”);
// start scanning for peripheral
BLE.scan();
}
void loop() {
// check if a peripheral has been discovered
BLEDevice peripheral = BLE.available();
if (peripheral) {
// discovered a peripheral
Serial.println("Discovered a peripheral");
Serial.println("-----------------------");
// print address
Serial.print("Address: ");
Serial.println(peripheral.address());
// print the local name, if present
if (peripheral.hasLocalName()) {
Serial.print("Local Name: ");
Serial.println(peripheral.localName());
}
// print the advertised service UUIDs, if present
if (peripheral.hasAdvertisedServiceUuid()) {
Serial.print("Service UUIDs: ");
for (int i = 0; i < peripheral.advertisedServiceUuidCount(); i++) {
Serial.print(peripheral.advertisedServiceUuid(i));
Serial.print(" ");
}
Serial.println();
}
// print the RSSI
Serial.print("RSSI: ");
Serial.println(peripheral.rssi());
Serial.println();
}
}