Collection of Arduino-derived microcontroller boards developed at IDLab-AIRO, Ghent University, imec.
PCB featured on the IDLab-AIRO Smart Textile (paper, repo). The PCB connects to a piezoresistive pressure matrix in the textile, reads pressure values and communicates them to a remote host.
Currently unpublished variation of the Smart Textile board.
The Halberd coupling (paper, repo) is an enhancement of the Robotiq I/O Coupling, which is used to mount Robotiq grippers onto Universal Robots robotic arms. It features power safety circuitry, such that the 24V output is disconnected when no gripper is attached, as well as a Nina B301 microcontroller, of which 8 analog pins and 15 digital pins are exposed. There are two I²C interfaces and one SPI interface, supported by specific digital pins. The board has a µUSB connector for convenient programming, a customisable RGB status LED indicator and an external 2.45GHz antenna.
In your Arduino IDE, go to File > Preferences. In "Additional Boards Manager URLs", paste the following link:
https://raw.githubusercontent.com/RemkoPr/airo-nrf52840-boards/main/package_airo_index.json
Restart the Arduino IDE. Go to Tools > Board > Boards Manager... and search for the "IDLab-AIRO Boards" package. Click Install. You can now compile code for the different IDLab-AIRO boards using the Arduino IDE, as well as upload your sketch directly if the board features a µUSB connector and the Arduino Nano 33 BLE bootloader has been flashed. This was tested on Ubuntu 22.04 and Windows 10.
To guide you in your process of providing a quick-to-install Arduino package for your own custom board, I'll outline the steps I took to create the one in this repo as an example. The guide is written from a Windows perspective, the process is largely the same on Ubuntu.
Starting point First of all, all boards in this repo feature an nrf52840 microcontroller (µC). This µC is also featured on the Arduino Nano 33 BLE. Hence, I first downloaded the Arduino Mbed OS Boards package
(which includes support for the Arduino Nano 33 BLE) through the Arduino Boards Manager. We will use this package as a starting point.
In the PC's file manager, go to C:\Users\*username*\AppData\Local\Arduino15\packages\arduino\hardware\mbed_nano\
(Windows) or ~/snap/arduino/85/.arduino15/packages/arduino/hardware/mbed_nano
(Ubuntu, Arduino installed using snap). This folder should contain one or more version folders, e.g. 4.0.8
.
I copied the entire 4.0.8
folder to my repo folder and renamed it src
. Inside, there are several .variables
files. I know my custom boards are only related to the Nano 33 BLE, so I keep the nano.variables
file and remove all others.
In the platform.txt
file, I simply changed the name
field from "Arduino Mbed OS Nano Boards" to "IDLab AIRO Boards" and the version field from "4.0.8" to "1.0.0".
In the variants
folder, I delete the NANO_RP2040_CONNECT
folder altogether and move the ARDUINO_NANO33BLE
folder somewhere outside my repo folder.
Adding board variants For any board I wish to add to my custom package, I will add a copy of the ARDUINO_NANO33BLE
folder to the variants
folder and rename it to a name of my choosing, e.g. IO_COUPLING
.
Within the IO_COUPLING
folder, I edit pins_arduino.h
and variant.cpp
such that the mapping from microcontroller pins to board GPIO pins, to builtin LEDs, to I2C interfaces, etc., conforms to my physical board PCB design. Do this step by step and follow the structure of the files.
Having added the variant, I exit the variants
folder and open the boards.txt
file. Here, I change every "nano33ble" prefix to a name representing my board. When adding a second variant, simply copy all lines at the bottom of the document and again change the prefixes with a different name. Set the .name field to the name of your board and make sure that the .build.variant and .build.board fields are set to the folder name of the variant it refers to (e.g. IO_COUPLING
).
Making the package installable from the Arduino IDE I moved the installed.json
file outside of the src
folder and renamed it package_airo_index.json
.
I zipped the entirety of the src
folder (the folder itself, not only its contents), named it "airo-nrf52840-boards-1.0.0.zip" and put it in my repo's releases
folder.
Back in the package_airo_index.json
file, I changed any names and version numbers to my liking and removed any fields included after toolsDependencies.
In the url field, I entered "https://github.com/RemkoPr/airo-nrf52840-boards/raw/windows/releases/airo-nrf52840-boards-1.0.0.zip". Note that this link refers to github raw, which is only updated every couple of minutes. Hence, if during development,
you've changed the .zip file and pushed it, you'll have to wait a while before you can retry installing your package from the IDE.
I changed archiveFileName to "airo-nrf52840-boards-1.0.0.zip", performed a SHA-256 checksum on the airo-nrf52840-boards-1.0.0.zip
file in my releases
folder and entered the result in the checksum field, and added the size in bytes of that same file in the size field. Lastly, in the boards field, I added the names of my custom boards, using the same names as in the boards.txt file from before.