Fork for PlatformIO nRF52840 with Arduino and Zigbee Support
This project is part of multiple git repositories for an Android framework with Zigbee support. The aim is to include the support in the fantastic work of Adafruit and all other contrubutors.
Known Limitations
- Not working with Arduino IDE
- No clue if TinyUSB is working
- Bootloader/MBR is untested
- Some Serial stuff is disabled, see
Uart.c
file. - SOFTDEVICE as in Adafruits version is not working
- Only nRF52840-DK is supported/tested yet
platform-nordicnrf52
Modifications to - Add clone of Adafruit
adafruit.py
builder with NO-SD support - Add build scripts for additional features like Zigbee
- Add new
nrf52840_dk_zb
board - Add
xxx
Zigbee bulb example
Adafruit_nRF52_Arduino
Modifications to - Backport
nrfx
from 2.1.0 to 1.8.0 from Zigbee SDK 1.4.1 - Change RTC1 to RTC0 for FreeRTOS
- Fix some functions for NON-SOFTDEVICE
- Remove from lines for Serial
- Add required Zigbee stuff and libraries
Adafruit_TinyUSB_ArduinoCore
Modifications to - Backport some function calls due to
nrfx
backport
Usage
Add the forked platform etc. to your platformio.ini
file. This works without any downloads, PlatformIO will do that for you.
platform = https://github.com/csowada/platform-nordicnrf52.git
platform_packages = framework-arduinonordicnrf52-zb-sdk @ https://github.com/csowada/Adafruit_nRF52_Arduino.git
board = nrf52840_dk_zb
framework = arduino
custom_enable_features =
; Add Zigbee support to the core build
ZIGBEE
build_flags =
; Add SDK relevant flags here
-DZIGBEE_CHANNEL=11
-DZB_TRACE_LEVEL=0
-DZB_TRACE_MASK=0
-DUSE_APP_CONFIG
-DAPP_TIMER_V2
-DAPP_TIMER_V2_RTC1_ENABLED
-DCONFIG_GPIO_AS_PINRESET
-DENABLE_FEM
-DFLOAT_ABI_HARD
To run this framework, add an config
folder to your project to place the sdk_config.h
file there.
Examples
See the arduino-zigbee-bulb
in Adafruit_nRF52_Arduino.
Arduino Core for Adafruit Bluefruit nRF52 Boards
This repository contains the Arduino BSP for Adafruit Bluefruit nRF52 series:
- Adafruit CLUE nRF52840
- Adafruit Circuit Playground Bluefruit
- Adafruit Feather nRF52832
- Adafruit Feather nRF52840 Express
- Adafruit Feather nRF52840 Sense
- Adafruit ItsyBitsy nRF52840 Express
- Adafruit Metro nRF52840 Express
Following boards are also included but are not officially supported:
BSP Installation
There are two methods that you can use to install this BSP. We highly recommend the first option unless you wish to participate in active development of this codebase via Github.
Recommended: Adafruit nRF52 BSP via the Arduino Board Manager
- Download and install the Arduino IDE (At least v1.6.12)
- Start the Arduino IDE
- Go into Preferences
- Add https://www.adafruit.com/package_adafruit_index.json as an 'Additional Board Manager URL'
- Restart the Arduino IDE
- Open the Boards Manager from the Tools -> Board menu and install 'Adafruit nRF52 by Adafruit'
- Once the BSP is installed, select 'Adafruit Bluefruit nRF52 Feather' from the Tools -> Board menu, which will update your system config to use the right compiler and settings for the nRF52.
Optional (Core Development): Adafruit nRF52 BSP via git
- Install BSP via Board Manager as above to install compiler & tools.
- Delete the core folder
nrf52
installed by Board Manager in Adruino15, depending on your OS. It could be
- macOS :
~/Library/Arduino15/packages/adafruit/hardware/nrf52
- Linux :
~/.arduino15/packages/adafruit/hardware/nrf52
- Windows:
%APPDATA%\Local\Arduino15\packages\adafruit\hardware\nrf52
cd <SKETCHBOOK>
, where<SKETCHBOOK>
is your Arduino Sketch folder:
- macOS :
~/Documents/Arduino
- Linux :
~/Arduino
- Windows:
~/Documents/Arduino
- Create a folder named
hardware/Adafruit
, if it does not exist, and change directories to it - Clone this repo & its submodules:
git clone --recurse-submodules https://github.com/adafruit/Adafruit_nRF52_Arduino.git
- Restart the Arduino IDE
- Once the BSP is installed, select 'Adafruit Bluefruit nRF52 Feather' from the Tools -> Board menu, which will update your system config to use the right compiler and settings for the nRF52.
Adafruit's nrfutil tools
adafruit-nrfutil (derived from Nordic pc-nrfutil) is needed to upload sketch via serial port.
- For Windows and macOS, pre-built executable binaries are included in the BSP at
tools/adafruit-nrfutil/
. It should work out of the box. - Linux user need to run follow command to install it from PyPi
$ pip3 install adafruit-nrfutil --user
Drivers
- SiLabs CP2104 driver is required for USB to Serial when using with Feather nRF52832
Bootloader Support
Upgrade existing Bootloader
Bluefruit's Bootloader is self-upgradable, you could upgrade to the latest Bootloader + Softdevice using the serial port within Arduino IDE.
- Select
Tools > Board > Adafruit Bluefruit Feather52
- Select
Tools > Programmer > Bootloader DFU for Bluefruit nRF52
- Select
Tools > Burn Bootloader
- WAIT until the process complete ~30 seconds
Note: close the Serial Monitor before you click "Burn Bootloader". Afterwards, you shouldn't close the Arduino IDE, unplug the Feather, launch Serial Monitor etc ... to abort the process. There is a high chance it will brick your device! Do this with care and caution.
Burning new Bootloader
To burn the bootloader from within the Arduino IDE, you will need the following tools installed on your system and available in the system path:
Check to make sure you can run nrfjprog
from your terminal/command prompt
macOS Note At present, you will need to create a symlink in /usr/local/bin
to the
nrfjprog
tool wherever you have added it. You can run the following command, for example:
$ ln -s $HOME/prog/nordic/nrfjprog/nrfjprog /usr/local/bin/nrfjprog
Once the tools above have been installed and added to your system path, from the Arduino IDE:
- Select
Tools > Board > Adafruit Bluefruit Feather52
- Select
Tools > Programmer > J-Link for Feather52
- Select
Tools > Burn Bootloader
with the board and J-Link connected
If you wish to modify bootloader to your own need, check out its repo here Adafruit_nRF52_Bootloader
Manually Burning the Bootloader via nrfjprog
The bootloader hex file can be found at bin/bootloader
run the command as follows:
$ nrfjprog -e -f nrf52
$ nrfjprog --program feather_nrf52832_bootloader.hex -f nrf52
$ nrfjprog --reset -f nrf52
Credits
This core is based on Arduino-nRF5 by Sandeep Mistry, which in turn is based on the Arduino SAMD Core.
The following libraries are used:
- adafruit-nrfutil is based on Nordic Semiconductor ASA's pc-nrfutil
- freeRTOS as operating system
- tinyusb as usb stack
- nrfx for peripherals driver
- littlefs for internal file system