The Challenger 840 BLE board is an Arduino/Circuitpython compatible Adafruit Feather format micro controller board packed with loads of functionality for your projects that require low power consumption and a BLE connection.
The main controller of this board is the Nordic Semiconductor nRF52840 with 1MByte of FLASH memory and 256KByte of SRAM. The nRF52840 SoC is the most advanced member of the nRF52 Series. It meets the challenges of sophisticated applications that need protocol concurrency and a rich and varied set of peripherals and features. It offers generous memory availability for both Flash and RAM, which are prerequisites for such demanding applications.
BLE
The nRF52840 is fully multi protocol capable with full protocol concurrency. It has protocol support for Bluetooth LE, Bluetooth mesh, Thread, Zigbee, 802.15.4, ANT and 2.4 GHz proprietary stacks.
USB Type C
In the recent years we have noticed that we are seeing more and more USB Type C cable laying around the lab due to the fact that all new phones and accessories use them. As of yet we haven’t seen any shortage of micro USB cables but we are not getting any new ones any more and old ones do break occasionally. So we decided to go for a USB Type C connector for this board. A bonus of this is that they are quite bit more durable and you don’t have to fiddle with the cable before plugging it in.
Challenger 840 BLE – 2MB Features
The board is packed with hardware features, here’s a short list of its most prominent ones.
– Sturdy USB Type C connector – nRF52840 @ 64MHz – 1MB internal chip FLASH + 256KB RAM – 2 MByte of external NOR FLASH memory – 32.768 KHz crystal for clock generation & RTC – 3.3V regulator with 250 mA peak current output, most of which is reserved for the board itself – USB native support, comes with UF2 USB bootloader – 20 GPIO pins – Hardware Serial, hardware I2C, hardware SPI support – PWM outputs on all pins – 6 x 12-bit analog inputs – Built in 500 mA LiPo charger with charging status indicator LED – Power/enable pin – 4 mounting holes – Reset button – Neopixel LED that indicates board status but that can be used by the programmer
Pinout
Challenger 840 BLE Software
The Challenger 840 BLE board is 100% compatible with the Arduino framework. It has a unique board support package that fully supports all the features of the board. You can also install and run Circuitpython on the board if this is what you want to do. Check out the “Getting Started” tab for more information on how to setup your environment.
Other
The boards comes with loose headers that can be soldered to the board if your application requires it.
Weight
0.009 kg
Dimensions
5.07 × 2.28 × 0.72 cm
Arduino
In order to start using the Arduino environment for the Challenger boards you need to install a board support package for the board. This is how you do it.
Configure the IDE to find the support package.
The first thing we need to do is to tell the IDE where to find the board support package.
Go to the preferences in the Arduino IDE. You will find it in the “File” menu and it looks something like this:
Now, click on the the little box to the right of the “Additional Boards Manager URL’s” (circled in blue) and the following dialog will pop up:
In this dialog you should add the URL of the board support description file. I’ve already done it in the picture above. The URL you should use is: https://ilabs.se/files/package_ilabs-nrf52_index.json
When you have entered the URL you can close the “Additional Boards Manager URLs” dialog and the “Preferences” dialog by clicking “OK”.
Download the board support package
When you have set up the URL for the board description we need to tell the Arduino IDE to download all the necessary tools and board support files.
Go to the tools menu and click on the “Board:” entry, then click on “Boards Manager”. This will give you the following dialog:
Type NRF52 into the circled text box to find the proper board support package and then click on the Install button in the “Adafruit/iLabs nRF52” entry.
After the installation process completes you are now ready to start developing C/C++ programs for the Challenger 840 BLE board.
Now, check out the examples section for for inspiration on how to get going =)
Circuitpython
The Challenger 840 BLE board is fully compatible Adafruits CircuitPython. You can download the latest and greatest circuitpython interpreter from here.
Getting your first app to run
The board support package is full of exiting examples on how to use the Challenger 840 BLE board. Once you have selected the correct board you can go to “Examples” in the File menu to find examples that are targeted to the Challenger 840 BLE board. You will find BLE radio examples as well as examples on how to use the different on board peripherals.
But to make it simple to get something going we have included a simple code snippet that will create an Eddystone beacon that advertises a URL.
#include <bluefruit.h> #define URL "https://www.ilabs.se" // Create an EddyStone URL with rssi at 0m = -40 and URL as defined above EddyStoneUrl eddyUrl(-40, URL);
void setup() { Serial.begin(115200); while ( !Serial ) delay(10); // for nrf52840 with native usb pinMode(LED_GREEN, OUTPUT); digitalWrite(LED_GREEN, 1);
Bluefruit.begin(); Bluefruit.setTxPower(4); // Check bluefruit.h for supported values
// Setup the advertising packet startAdv(); Serial.println("Broadcasting EddyStone URL, open Google Physical Web app to test"); }
void startAdv(void) { // Advertising packet // Set the beacon payload using the BLEBeacon class populated // earlier in this example Bluefruit.Advertising.setBeacon(eddyUrl);
// Secondary Scan Response packet (optional) // Since there is no room for 'Name' in Advertising packet Bluefruit.ScanResponse.addName();
/* Start Advertising * - Enable auto advertising if disconnected * - Timeout for fast mode is 30 seconds * - Start(timeout) with timeout = 0 will advertise forever (until connected) * * Apple Beacon specs * - Type: Non connectable, undirected * - Fixed interval: 100 ms -> fast = slow = 100 ms */ //Bluefruit.Advertising.setType(BLE_GAP_ADV_TYPE_ADV_NONCONN_IND); Bluefruit.Advertising.restartOnDisconnect(true); Bluefruit.Advertising.setInterval(160, 160); // in unit of 0.625 ms Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds }
void loop() { // Toggle both LEDs every second digitalToggle(LED); delay(1000); }
This is just an example on how easy it is to start an advertisement but most things are just as simple. Check out the examples and if something is unclear get in touch with us and we’ll try to help you out.
Here you will find product datasheets and specifications
Reviews
There are no reviews yet.