Como empezar con Arduino Nano 33
Publicado por Loli Diéguez en
En esta guía de introducción a Arduino Nano BLE 33 Sense, aprenderás cómo instalar y configurar el entorno de desarrollo integrado (IDE) de Arduino para desarrollar aplicaciones que se ejecuten en la placa y aprender a programar el Nano para muestrear la temperatura y la humedad ambientales y que transmita las lecturas a un teléfono móvil utilizando el estándar BLE.
El Nano 33 Sense tiene a en la propia placa sensores de temperatura y humedad, presión atmosférica, luz y gestos y una IMU de 3 ejes, micrófono, BLE y conectividad Bluetooth.
El Arduino Nano 33 Sense funciona a 3.3V. La conexión de señales de voltaje más alto, como los 5V que se usan comúnmente con las otras placas Arduino, dañará esta placa asi que ten cuidado cuanto aplicas.
Material necesario:
- Nano Ble Sense con encabezados
- Cable micro USB
Descarga Arduino iDE
- Ves a https://www.arduino.cc/en/main/software y descarga el IDE correcto para tu sistema operativo, Windows en nuestro caso.
- Una vez descargado, instala el paquete. Abriéndolo y siguiendo las instrucciones.
- Después de la instalación, se te presentará una ventana que contiene un "boceto" o "sketch" en blanco que es un programa Arduino.

Configurar IDE
Antes de comenzar a programar, deberás configurar el IDE para que funcione con tu modelo específico de Arduino.
- En el menú principal de Arduino IDE, vete a Herramientas> Tableros > Administrador de tableros.
- Introduce nano 33 ble en la ventana de búsqueda e instala las placas Arduino nRF528x (Mbed OS)
- El proceso de instalación tardará un poco, una vez finalizado, haz clic en cerrar.
- Conecta el Arduino a tu ordenador host usando el cable USB. El sistema debe cargar el controlador de dispositivo correcto. Acepta las advertencias de seguridad.

- Vete a Herramientas> Placa y selecciona Arduino 33 BLE en el menú

- Desde Herramientas> Puerto , selecciona COM (Arduino NANO 33 BLE) , en una Mac aparecerá como dev / cu.usbmodem14101 (Arduino Nano 33 BLE)

Programa el Arduino
- Vete a Sketch> Incluir biblioteca> Administrar bibliotecas e instala ArduinoBLE

- Vete a Sketch> Incluir biblioteca> Administrar bibliotecas e instale Arduino_HTS221

- Copia el ejemplo de código a continuación en la ventana IDE
/*
Nano 33 BLE Sense Getting Started
A BLE peripheral broadcasting temperatature and humidity readings that can be viewed
on a mobile phone. On-board LED indicates a BLE connection.
Adapted from Arduino BatteryMonitor example by Peter Milne
*/
#include <ArduinoBLE.h>
#include <Arduino_HTS221.h>
const int UPDATE_FREQUENCY = 2000; // Update frequency in ms
const float CALIBRATION_FACTOR = -4.0; // Temperature calibration factor (celcius)
int previousTemperature = 0;
unsigned int previousHumidity = 0;
long previousMillis = 0; // last time readings were checked, in ms
BLEService environmentService("181A"); // Standard Environmental Sensing service
BLEIntCharacteristic tempCharacteristic("2A6E", // Standard 16-bit Temperature characteristic
BLERead | BLENotify); // Remote clients can read and get updates
BLEUnsignedIntCharacteristic humidCharacteristic("2A6F", // Unsigned 16-bit Humidity characteristic
BLERead | BLENotify);
void setup() {
Serial.begin(9600); // Initialize serial communication
while (!Serial);
if (!HTS.begin()) { // Initialize HTS22 sensor
Serial.println("Failed to initialize humidity temperature sensor!");
while (1);
}
pinMode(LED_BUILTIN, OUTPUT); // Initialize the built-in LED pin
if (!BLE.begin()) { // Initialize BLE
Serial.println("starting BLE failed!");
while (1);
}
BLE.setLocalName("Nano33BLESENSE"); // Set name for connection
BLE.setAdvertisedService(environmentService); // Advertise environment service
environmentService.addCharacteristic(tempCharacteristic); // Add temperature characteristic
environmentService.addCharacteristic(humidCharacteristic); // Add humidity chararacteristic
BLE.addService(environmentService); // Add environment service
tempCharacteristic.setValue(0); // Set initial temperature value
humidCharacteristic.setValue(0); // Set initial humidity value
BLE.advertise(); // Start advertising
Serial.print("Peripheral device MAC: ");
Serial.println(BLE.address());
Serial.println("Waiting for connections...");
}
void loop() {
BLEDevice central = BLE.central(); // Wait for a BLE central to connect
// If central is connected to peripheral
if (central) {
Serial.print("Connected to central MAC: ");
Serial.println(central.address()); // Central's BT address:
// Turn on the LED to indicate the connection:
digitalWrite(LED_BUILTIN, HIGH);
while (central.connected()) {
long currentMillis = millis();
// After UPDATE_FREQUENCY ms have passed, check temperature & humidity
if (currentMillis - previousMillis >= UPDATE_FREQUENCY) {
previousMillis = currentMillis;
updateReadings();
}
}
// When the central disconnects, turn off the LED
digitalWrite(LED_BUILTIN, LOW);
Serial.print("Disconnected from central MAC: ");
Serial.println(central.address());
}
}
int getTemperature(float calibration) {
// Get calibrated temperature as signed 16-bit int for BLE characteristic
return (int) (HTS.readTemperature() * 100) + (int) (calibration * 100);
}
unsigned int getHumidity() {
// Get humidity as unsigned 16-bit int for BLE characteristic
return (unsigned int) (HTS.readHumidity() * 100);
}
void updateReadings() {
// Read the HTS22 temperature and humidity
int temperature = getTemperature(CALIBRATION_FACTOR);
unsigned int humidity = getHumidity();
if (temperature != previousTemperature) { // If reading has changed
Serial.print("Temperature: ");
Serial.println(temperature);
tempCharacteristic.writeValue(temperature); // Update characteristic
previousTemperature = temperature; // Save value
}
if (humidity != previousHumidity) {
Serial.print("Humidity: ");
Serial.println(humidity);
humidCharacteristic.writeValue(humidity);
previousHumidity = humidity;
}
}
- Carga el código en Arduino yendo a Sketch> Cargar o haciendo clic en la flecha que apunta hacia el lado derecho en la ventana IDE
- El panel inferior del IDE mostrará la compilación del código, luego los LED TX y RX en el Arduino parpadearán durante unos segundos mientras se carga el código. Una vez hecho esto, se ejecutará automáticamente en Arduino.
La lectura de temperatura debe ajustarse para dar un valor más preciso debido a los efectos de calentamiento del microprocesador cercano.
Aplicación móvil BLE
- En tu móvil, instala la aplicación Nordic Semiconductors nRF Connect . Hay versiones de Android e IOS.
- En el IDE de Arduino, abre Serial Monitor haciendo clic en el icono de la lupa en la parte superior derecha.
- En la aplicación nRF de tu dispositivo móvil, selecciona Escanear y deberías ver Nano33BLESENSE como un dispositivo al que puede conectarse.

- Conéctate al Nano33BLESENSE y selecciona el servicio Environmental Sensing .

- Toca las múltiples flechas hacia abajo junto a las características de Temperatura y Humedad y la pantalla se actualizará cada vez que cambien los valores de temperatura o humedad, ya que están configurados para notificar.
En resumen, ya has configurado el IDE de Arduino para usarlo con tu placa NANO 33 BLE SENSE, la placa tiene varios otros sensores que se pueden utilizar sobre BLE. Puede explorar muchos más ejemplos disponibles desde el IDE abriéndolos desde Archivo> Ejemplos. Estos pueden darte un punto de partida para modificar y adaptar el código a tus propios proyectos.