• Stars
    star
    881
  • Rank 51,820 (Top 2 %)
  • Language
    C
  • License
    Other
  • Created over 8 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Arduino Core for Nordic Semiconductor nRF5 based boards

Arduino Core for Nordic Semiconductor nRF5 based boards

Build Status OpenCollective OpenCollective

Program your Nordic Semiconductor nRF51 or nRF52 board using the Arduino IDE.

Does not require a custom bootloader on the device.

Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]

Supported boards

nRF52833

nRF52

nRF51

Installing

Board Manager

  1. Download and install the Arduino IDE (At least v1.6.12)
  2. Start the Arduino IDE
  3. Go into Preferences
  4. Add https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json as an "Additional Board Manager URL"
  5. Open the Boards Manager from the Tools -> Board menu and install "Nordic Semiconductor nRF5 Boards"
  6. Select your nRF5 board from the Tools -> Board menu

NOTE: During installation it takes the Arduino IDE a few minutes to extract the tools after they have been downloaded, please be patient.

OS Specific Setup

OS X

No additional setup required.

Linux

For 64-bit Linux users, libc6:i386, libstdc++6:i386, libncurses5:i386 and libudev1:i386 need to be installed :

  • sudo dpkg --add-architecture i386
  • sudo apt-get update
  • sudo apt-get -y install libc6:i386 libstdc++6:i386 libncurses5:i386 libudev1:i386
Windows
Driver Setup for mbed devices

Download mbed Windows Serial driver

Driver Setup for Segger J-Link
  1. Download Zadig
  2. Plugin Segger J-Link or DK board
  3. Start Zadig
  4. Select Options -> List All Devices
  5. Plug and unplug your device to find what changes, and select the Interface 2 from the device dropdown
  6. Click Replace Driver

NOTE: To roll back to the original driver go to: Device Manager -> Right click on device -> Check box for "Delete the driver software for this device" and click Uninstall

Driver Setup for Black Magic Probe
  1. Download .inf file drivers from blacksphere github
  2. Plugin Black Magic Probe
  3. Point the installer to the folder containing blackmagic.inf

NOTE: If using Windows 10 or Linux then two UART COM ports will be visible without requiring additional drivers

Selecting a SoftDevice

SoftDevices contain the BLE stack and housekeeping, and must be downloaded once before a sketch using BLE can be loaded. The SD consumes ~5k of Ram + some extra based on actual BLE configuration.

  • SoftDevice S110 v8.0.0 supports Revision 2 and 3 of nRF51 in peripheral role. It is 96k in size.
  • SoftDevice S130 v2.0.1 supports Revision 3 of nRF51 in peripheral and central role. It is 108k in size.
  • SoftDevice S132 v2.0.1 supports nRF52 in peripheral and central role. It is 112k in size.

Flashing a SoftDevice

  1. cd <SKETCHBOOK>, where <SKETCHBOOK> is your Arduino Sketch folder:
  • OS X: ~/Documents/Arduino
  • Linux: ~/Arduino
  • Windows: ~/Documents/Arduino
  1. Create the following directories: tools/nRF5FlashSoftDevice/tool/
  2. Download nRF5FlashSoftDevice.jar to <SKETCHBOOK>/tools/nRF5FlashSoftDevice/tool/
  3. Restart the Arduino IDE
  4. Select your nRF board from the Tools -> Board menu
  5. Select a SoftDevice from the Tools -> "SoftDevice: " menu
  6. Select a Programmer (J-Link, ST-Link V2, or CMSIS-DAP) from the Tools -> "Programmer: " menu
  7. Select Tools -> nRF5 Flash SoftDevice
  8. Read license agreement
  9. Click "Accept" to accept license and continue, or "Decline" to decline and abort
  10. If accepted, SoftDevice binary will be flashed to the board

From git (for core development)

  1. Follow steps from Board Manager section above
  2. cd <SKETCHBOOK>, where <SKETCHBOOK> is your Arduino Sketch folder:
  • OS X: ~/Documents/Arduino
  • Linux: ~/Arduino
  • Windows: ~/Documents/Arduino
  1. Create a folder named hardware, if it does not exist, and change directories to it
  2. Clone this repo: git clone https://github.com/sandeepmistry/arduino-nRF5.git sandeepmistry-github/nRF5
  3. Restart the Arduino IDE

BLE

This Arduino Core does not contain any Arduino style API's for BLE functionality. All the relevant Nordic SoftDevice (S110, S130, S132) header files are included build path when a SoftDevice is selected via the Tools menu.

Recommend BLE Libraries

  • BLEPeripheral
    • v0.3.0 and greater, available via the Arduino IDE's library manager.
    • Supports peripheral mode only.

Low Frequency Clock Source (LFCLKSRC)

If the selected board has an external 32 kHz crystal connected, it will be used as the source for the low frequency clock. Otherwise the internal 32 kHz RC oscillator will be used. The low frequency clock is used by the delay(ms) and millis() Arduino API's.

The Generic nRF51 and nRF52 board options have an additional menu item under Tools -> Low Frequency Clock that allows you to select the low frequency clock source. However, Nordic does not recommend the Synthesized clock, which also has a significant power impact.

Credits

This core is based on the Arduino SAMD Core and licensed under the same LGPL License

The following tools are used:

More Repositories

1

arduino-LoRa

An Arduino library for sending and receiving data using LoRa radios.
C++
1,627
star
2

arduino-CAN

An Arduino library for sending and receiving data using CAN bus.
C++
664
star
3

node-bleacon

A Node.js library for creating, discovering, and configuring iBeacons
JavaScript
499
star
4

arduino-BLEPeripheral

An Arduino library for creating custom BLE peripherals with Nordic Semiconductor's nRF8001 or nR51822.
C
454
star
5

arduino-OBD2

An Arduino library for reading OBD-II data from your car over CAN bus
C++
440
star
6

node-sensortag

Node.js lib for the TI SensorTag
JavaScript
215
star
7

pico-rmii-ethernet

C
203
star
8

node-eddystone-beacon-scanner

Scan for Eddystone beacons using Node.js
JavaScript
102
star
9

node-chip-io

Johnny-Five IO Plugin for the Next Thing Co. C.H.I.P.
JavaScript
95
star
10

osx-ble-peripheral

Example of using CoreBluetooth in peripheral mode
Objective-C
84
star
11

node-bbc-microbit

Control a BBC micro:bit from Node.js using BLE
JavaScript
83
star
12

node-ancs

A node.js lib to access the Apple Notification Center Service (ANCS)
JavaScript
67
star
13

arduino-nRF24L01-BLE

Example of using an Arduino and a nRF24L01+ to fake BLE advertisement
Arduino
63
star
14

node-sx127x

Node.js driver for Semtech SX1276/77/78/79 based LoRa radios
JavaScript
61
star
15

rtlsdrjs

📡 Turn your Realtek RTL2832U based device into an SDR receiver using JavaScript
JavaScript
56
star
16

node-blink1

A Node.js library for the blink(1)
JavaScript
51
star
17

aimldevfest-workshop-2019

TinyML on Arduino @ AI/ML DevFest Workshop - September 28, 2019
Jupyter Notebook
45
star
18

node-flower-power

node.js lib for the Parrot Flower Power
JavaScript
45
star
19

node-powermate

A Node.js library for the Griffin PowerMate
JavaScript
40
star
20

node-raspberry-pi-camera-native

Use your Raspberry Pi Camera Module with Node.js
C++
35
star
21

node-xpc-connection

C++
34
star
22

AnyiBeacon-iOS

Use CoreLocation to start/stop ranging for any iBeacon
Objective-C
31
star
23

ANCSExample-iOS

Example app to expose the Apple Notification Center Service (ANCS) on an iOS device
Objective-C
29
star
24

node-yeelight-blue

A Node.js lib for the yeelight blue and yeelight blue lightstrips.
JavaScript
26
star
25

node-chipolo

node.js lib for the Chipolo
JavaScript
18
star
26

node-bbc-microbit-io

Johnny-Five IO Plugin for the BBC micro:bit
JavaScript
17
star
27

node-bbc-microbit-firmware

Source code for the firmware bundled with node-bbc-microbit
C
12
star
28

node-core-bluetooth

JavaScript
11
star
29

node-lumen

Node.js lib for the Tabu Lumen
JavaScript
11
star
30

node-tethercell

Node.js lib for the Tethercell
JavaScript
9
star
31

openocd-code-nrf5

C
8
star
32

rtl8710-openocd

Unofficial mirror of https://bitbucket.org/rebane/rtl8710_openocd
C
6
star
33

Arduino-Nano-33-BLE-Sense-Examples

JavaScript
6
star
34

node-objective-c-runtime

Use the Objective-C Runtime from Node.js
Objective-C++
5
star
35

cordova-ble-ir-remote

JavaScript
4
star
36

node-sensordrone

Node.js lib for the Sensordrone
JavaScript
4
star
37

node-sticknfind

node.js lib for the StickNFind
JavaScript
3
star
38

node-wimoto

Node.js lib for Wimoto devices
JavaScript
2
star
39

node-6lowpan-ble

JavaScript
2
star
40

node-robosmart

A node.js library for the RoboSmart
JavaScript
2
star
41

node-node-sensor

node.js lib for Variable Inc.'s NODE sensor
JavaScript
2
star
42

node-bluetooth-bulb

A node.js library for the BluetoothBulb
JavaScript
1
star
43

colab-notebook-test

Jupyter Notebook
1
star
44

sandeepmistry

1
star
45

df1-browser

Experimental df1 (Device Factory 1) in the browser
JavaScript
1
star
46

ArduinoTimeAPI

C++
1
star