Arduino PRIMO  What are they? + Features and Utility ▷ 2020

If you are looking for an Arduino board that connects to the Internet via WiFi, use the technology of bluetooth and the NFC, then the model Cousin it is ideal for your projects.

This is due to the quality of connectivity it has and also to the other components that substantially improve operability.. One of these elements is the set of MCU that are used to maintain a good connection.

If you want to know how to work with a Arduino Primo board, you will have to continue reading. We will show you a list of the best ideas that you can do yourself.

What are Arduino Primo and what are these free hardware boards for?

The Arduino Primo board It is a model that is developed in the United States and was launched in 2016. It has a 32-bit architecture in its drivers, 14 pins for digital input and output and 6 for analog inputs.

It can create a wide variety of projects, especially those that include batteryas it offers an infrared receiver and transmitter and a battery charger. In addition, it includes a plate network WiFi and Bluetooth, so you can work on IoT.

What are the special features of Arduino Primo development boards?

What are the special features of Arduino Primo development boards?

The most outstanding features that you can find in an Arduino Primo board are the following:

  • This plate has a size of 7.62 x 5.08 cm. and weighs 85 grams.
  • Can be connected to Wifi, through Bluetooth and through near field communication technology NFC.
  • It has 3 microcontrollers, the nRF52832, the STM32f103 and the ESP8266. Which work as the main MCU of the board, for debugging programs and for the community through WiFi, respectively.
  • Has 14 digital pins input and output, of which 12 can be used as pulse or PWM marker. Also has 6 analog input pins.
  • It has a connector MicroUSB, with an antenna for NFC, a buzzer and reset and shutdown buttons.
  • Also has a battery charger with a 64 MHz resonator.
  • The tension with which it works is 3 V, so you have to be careful of do not burn the components.
  • Work with a WiFi protocol 11 bgn in 2.4 GHz of frequency.

Better connectivity How to take better advantage of this feature of the Arduino Primo?

Better connectivity How to take better advantage of this feature of the Arduino Primo?

To take better advantage of the connectivity offered by the Arduino Primo board you are going to have to add the Arduino NRF52 Core board in the IDE.

You can do this by entering Tools, then select Plates and finally choose Card manager:

  • A new window will then open in which you will have to choose NRF52 Core.
  • You must bear in mind that if you work on a computer with an operating system Windows or MacOS you will not need to install drivers. Instead, if you use Linux you’ll have to run the script you will find on the official page of Arduino.
  • After this, you will have to add serial port. For that you must enter the SDI and click Tools and then in Serial port menu, where you will find the name of the port where you have the board connected.
  • After uploading the environment (by clicking on Program and then in Go up), you will need to connect to the Internet via WiFi. You can do this by turning on the board and then entering the Networks menu of your computer. You will find the SSID, since it bears the name Arduino Primo.
  • In the browser you must enter the address so you can access the board’s configuration options. Then you will have to go to the menu Connection you will have to enter the Wi-Fi password and then click on CONNECT.
  • By last, The IP of the Arduino will appear, so you will have to change the status from the configuration panel to SWITCH TO STA MODE. This way you can get better connectivity.

List of project ideas that you can develop using Arduino Primo boards

Next, you will be able to find a list of the best projects that you can do yourself with an Arduino Primo:

Monitor heartbeat

Monitor heartbeat

This project you can create using an Arduino Primo board, a pulse sensor for get heart rate information and cables required for connection. The first thing you should do is connect the PWR of the sensor to 3.3V; then GND to the board’s GND and the signal to channel A0.

Next, you will have to enter these programming codes:

#include <BLEPeripheral.h>

#define SIGNAL A0

BLEPeripheral blePeripheral;

BLEService heartRateService("180D");

BLECharacteristic heartRateChar("2A37",

BLERead | BLENotify, 2);

void findHeartRate (float averageSample);

int sample[300] = { 0 };

int n = 0;

int sumSample = 0;

float averageSample = 0;

void setup() {







println("Bluetooth device active, waiting for connections...");


void loop() {

BLECentral central = blePeripheral.central();

if (central) {

print("Connected to central: ");


//turn on BLE led

digitalWrite(BLE_LED, HIGH);

while (central.connected()) {

if (millis() % 10 == 0) {

int rawValue = analogRead(A0);

int sensorValue = map(rawValue, 0, 1023, 0, 255);


sumSample = sumSample + sensorValue;

sumSample = sumSample - sample[n];

sample[n] = sensorValue;


averageSample = (float)sumSample / 300;

if (n == 300) {

n = 0;






print("Disconnected from central: ");



digitalWrite(BLE_LED, LOW);


digitalWrite(BLE_LED, HIGH);



void findHeartRate (float averageSample) {

int count = 0;

int totalTime = 0;

int lastI = 0;

bool trendState = false;

bool goOverThreshold = false;

int heartRate = 0;

float setThreshold = 1.25;

for (int i = 0; i < 300; i++) {

goOverThreshold = (sample[i] > (averageSample * setThreshold));

if (goOverThreshold != trendState) {

trendState = goOverThreshold;

if (goOverThreshold == false) {

if (count > 0) {

totalTime = totalTime + (i - lastI);



lastI = i;




heartRate = 6000 * (count - 1) / totalTime;

const unsigned char heartRateCharArray[2] = { 0, (char)heartRate };

setValue(heartRateCharArray, 2);

//Serial.print("heartRate is: ");



Mouse control via mobile on a media player

Mouse control via mobile on a media player

You are going to need a button cell type CR2032, a plate Arduino Primo Core and a mobile with Bluetooth activated.

When working with IDE you will not need any circuit, so you must directly enter these codes:

#include <CoreSensors.h>

#include <BLEHIDPeripheral.h>

#include <BLEMouse.h>

#include <BLESystemControl.h>

#define MOUSE_RANGE 24

#define INT1 21

int tap = 0;

int crono = 0;

int count = 0;

BLEHIDPeripheral bleHIDPeripheral = BLEHIDPeripheral();

BLEMouse bleMouse;

BLESystemControl bleSystemControl;

void setup() {


pinMode(12, OUTPUT);


println(F("BLE HID Peripheral - clearing bond data"));



setLocalName("Arduino Core Mouse");




println(F("BLE HID Demo"));



attachInterrupt(INT1, Tap, RISING);


void loop() {

BLECentral central = bleHIDPeripheral.central();

digitalWrite(LED_BUILTIN, LOW);

if (central) {

print(F("Connected to central: "));


count = 0;

while (central.connected()) {

digitalWrite(LED_BUILTIN, HIGH);

if (tap) {

tap = 0;

uint8_t status = 0;


if (status)


if (count % 2 == 0){

digitalWrite(12, HIGH); //turn on the led




else {

digitalWrite(12, LOW);


count ++;




int32_t accelerometers[3] = {0};


if (accelerometers[2] > 0 && (abs(accelerometers[0])>100||abs(accelerometers[1])>100) && (millis()>(crono+200))) {

int mappedX = map (accelerometers[0], -1023, 1023, -12, 12);

int mappedY = map (accelerometers[1], -1023, 1023, -12, 12);

int x = -1 * mappedX;

int y = mappedY;

move(x, y);


Then you must connect the mobile to the plate via Bluetooth to start using the wireless mouse.

Meteorological sensor

Meteorological sensor

This project is a bit more complicated than the previous ones, since You will need two Arduino boards, a Primo and a Primo Core. The latter is responsible for sending a signal to the former so that you can search the web for the temperature of a specific city. In addition to the two plates you will need one CR2032 and a smartphone.

You must connect the Arduinos to their respective pins and continue with the entry of these codes in the IDE:

#include <WiFiLink.h>

#include <BLEPeripheral.h>

#include <BLESerial.h>

BLESerial bleSerial = BLESerial();

char ssid[] = "cclIT";

char pass[] = "ht34!eG$";

int keyIndex = 0;

int count;

char memory[5];

char fahrenheit[4];

char celsius[4];

bool flag = false;

int status = WL_IDLE_STATUS;

char server[] = "";

WiFiClient client;

void setup() {





memory[4] = '

Leave a Comment