- Arduino Nano 33 BLE Sense
- Descripción general del hardware Arduino Nano 33 BLE Sense
- Mejoras de software con Arduino Nano 33 BLE sense
- Preparación de su Arduino IDE para Arduino Nano 33 BLE sense
- Programa para leer los datos del sensor y mostrarlos en el monitor serial
- Arduino Nano 33 BLE- Subiendo el código
Arduino ha sido la plataforma de desarrollo de referencia para la creación rápida de prototipos y la validación de ideas. Muchos de nosotros habríamos comenzado con la placa de desarrollo Arduino UNO, pero hoy, a medida que avanzamos hacia el Internet de las cosas, la visión por computadora, la inteligencia artificial, el aprendizaje automático y otras tecnologías futuristas, el humilde Arduino UNO ya no pudo hacer frente a sus 8 -Microcontrolador de bits. Esto requirió el lanzamiento de nuevas placas con procesadores más potentes que tienen Wi-Fi, Bluetooth, GSM y otras capacidades inalámbricas integradas, como la popular MKR1000 o MKR GSM 1400. En este contexto, Arduino ha lanzado recientemente una nueva versión de su Nano llamada Arduino Nano 33.
Hay dos tipos de placas Arduino Nano 33, a saber, Arduino Nano 33 IoT y Arduino Nano 33 BLE sense. La principal diferencia entre ambos módulos es que el módulo de detección Arduino Nano 33 BLE tiene algunos sensores incorporados (entraremos en detalles más adelante) mientras que el Arduino Nano 33 IoT no los tiene. En este artículo revisaremos la placa de detección Arduino Nano 33 BLE, le presentaremos sus características y funcionalidades y finalmente escribiremos un código de muestra para leer los valores del sensor y mostrarlos en el monitor en serie. ¡Empecemos a aprender…!
Arduino Nano 33 BLE Sense
El nombre "Arduino Nano 33 BLE Sense" es complicado, pero el nombre en sí mismo ofrece información importante. Se llama “nano” porque las dimensiones, patillas y el factor de forma es muy similar a la clásica Arduino Nano, que en realidad está previsto para ser utilizado como reemplazo para Arduino Nano en los proyectos existentes, pero el problema es que este nuevo módulo opera en 3.3V mientras que el Nano clásico funciona con 5V. Así que creo que aquí es donde entra el nombre "33", para indicar que la placa funciona con 3.3V. Luego, el nombre "BLE" indica que el módulo es compatible con Bluetooth Low Energy (BLE5 5.0)y el nombre "sentido" indica que tiene sensores integrados como acelerómetro, giroscopio, magnetómetro, sensor de temperatura y humedad, sensor de presión, sensor de proximidad, sensor de color, sensor de gestos e incluso un micrófono integrado. Entraremos en los detalles de BLE y otros sensores más adelante, pero por ahora así es como se ve una placa de detección Arduino Nano 33 BLE directamente del desempaquetado.
Descripción general del hardware Arduino Nano 33 BLE Sense
A primera vista de la placa, puede encontrar muchos componentes apiñados en la parte superior, la mayoría de los cuales son sensores que dije antes. Pero el cerebro principal está escondido detrás de la carcasa de metal del lado derecho. Esta carcasa contiene el procesador Nordic nRF52840 que contiene un potente Cortex M4F y el módulo NINA B306 para comunicación BLE y Bluetooth 5. Esto permite que la placa funcione con muy baja potencia y se comunique mediante Bluetooth 5, lo que la hace ideal para aplicaciones de redes de malla de baja potencia en domótica y otros proyectos conectados. Además, dado que el procesador nRF es compatible con ARM Mbed OStambién proporciona algunas mejoras de software que discutiremos más adelante. Los sensores, LED, botones pulsadores y otras cosas importantes que debe saber en su tablero están marcados en la imagen de abajo.
Como puede ver en la imagen de arriba, la placa está repleta de sensores que pueden ayudarlo a construir el lado derecho de la caja sin siquiera tener que conectar la placa a ningún sensor externo. La placa está diseñada para usarse en dispositivos portátiles y otros dispositivos portátiles inteligentes como bandas de fitness, monitoreo de glucosa, podómetros, reloj inteligente, estación meteorológica, seguridad del hogar, etc., donde usará la mayoría de estos sensores. Y, como siempre, todos estos sensores tienen bibliotecas preconstruidas para Arduino que puede usar fácilmente. Al final de este artículo, leeremos los valores de todos estos sensores y los mostraremos en el monitor en serie. Los detalles del sensor en la placa de detección Arduino Nano 33 BLE junto con sus bibliotecas requeridas se tabulan a continuación
Nombre del sensor |
Parámetros |
Enlaces |
LSM9DSI - ST Microelectrónica |
Acelerómetro, giroscopio, magnetómetro |
Hoja de datos de LSMDSI Biblioteca Arduino_LSM9DS1 |
LPS22HB - ST Microelectrónica |
Presión |
Hoja de datos de LPS22HB Biblioteca Arduino_LPS22HB |
HTS221 - ST Microelectrónica |
Temperatura y humedad |
Hoja de datos de LPS22HB Biblioteca Arduino_HTS221 |
APDS9960 - Avago Tech. |
Proximidad, Luz, Color, Gesto |
Hoja de datos de LPS22HB Biblioteca Arduino_APDS9960 |
MP34DT05 - ST Microelectrónica |
Micrófono |
MP34DT05 Hoja de datos Biblioteca PDM incorporada |
La mayoría de estos sensores son de ST Microelectronics y admiten un funcionamiento de baja potencia, lo que los hace ideales para diseños que funcionan con baterías. Es posible que pocas personas ya estén familiarizadas con el sensor APDS9960, ya que ya está disponible como módulo de expansión y también hemos utilizado el sensor APDS9960 con Arduino anteriormente. Para obtener más información sobre estos sensores, puede visitar la hoja de datos respectiva y también asegurarse de haber agregado toda la biblioteca provista a su IDE de Arduino para comenzar a usarlos con su placa de detección Arduino Nano 33 BLE. Para agregar una biblioteca, puede usar el enlace dado para llegar a la página de GitHub respectiva y descargar el archivo ZIP, luego use Sketch -> Incluir biblioteca -> Agregar biblioteca ZIP o también puede usar el administrador de biblioteca en Arduino IDE y agregar estos Bibliotecas.
Especificaciones técnicas de la placa de sentido Arduino Nano 33 BLE:
Alimentado por el procesador Nordic nRF52840, la placa Arduino Nano 44 BLE tiene las siguientes especificaciones técnicas
- Voltaje de funcionamiento: 3,3 V
- Voltaje de entrada USB: 5 V
- Voltaje del pin de entrada: 4.5V a 21V
- Chip: NINA-B3 - RF52840
- Reloj: 64 MHz
- Flash: 1 MB
- SRAM: 256 KB
- Conectividad inalámbrica: Bluetooth 5.0 / BLE
- Interfaces: USB, I2C, SPI, I2S, UART
- Pines de E / S digitales: 14
- Pines PWM: 6 (resolución de 8 bits)
- Pines analógicos: 8 (configurables de 10 o 12 bits)
Mejoras de software con Arduino Nano 33 BLE sense
Al igual que todas las placas Arduino que existen, el sensor Arduino Nano 33 BLE se puede programar con el IDE de Arduino. Pero, debe usar el administrador de la placa y agregar los detalles de la placa a su IDE antes de poder comenzar. Como sabemos, el nRF 52840 se puede programar usando ARM Mbed OS, esto significa que nuestra placa Arduino Nano 33 es compatible con el sistema operativo en tiempo real (RTOS). Con la programación de Mbed OS podemos ejecutar múltiples subprocesos al mismo tiempo en el programa para realizar múltiples tareas. Además, el consumo de energía de la placa se reducirá en gran medida, cada vez que llamemos a la función de retraso, la placa entrará en modo de cosquillas durante el tiempo de retraso para ahorrar energía y volverá a funcionar una vez que finalice el retraso. Se informa que esta operación consumirá 4.5uA menos que una operación de retardo normal de Arduino.
Dicho esto, la integración de Mbed OS con Arduino IDE es relativamente nueva y tomará algún tiempo antes de que podamos utilizar al máximo la potencia de Mbed OS con Arduino IDE. Entonces, para un inicio rápido, escribiremos un programa para leer todos los valores del sensor y mostrarlo en los monitores en serie.
Preparación de su Arduino IDE para Arduino Nano 33 BLE sense
Inicie su IDE de Arduino y vaya a Herramientas -> Placas -> Administrador de placas para iniciar su administrador de placas Arduino. Ahora busque "Mbed OS" e instale el paquete. La instalación debería tardar algún tiempo en completarse.
Una vez realizada la instalación, cierre el cuadro de diálogo y conecte su placa Arduino 33 usando un cable micro USB con su computadora portátil. Tan pronto como conecte la placa, Windows comenzará a instalar automáticamente los controladores necesarios para la placa. Luego abra su IDE de Arduino y seleccione Herramientas -> Placa -> Arduino Nano 33. Luego también seleccione el puerto COM correcto marcando Herramientas -> Puerto, el mío está conectado al puerto COM3 pero el suyo puede variar. Después de seleccionar el puerto, la esquina inferior derecha de su IDE debería verse así
Ahora, para comprobar rápidamente si todo está funcionando, podemos usar un programa de ejemplo, probemos el que se proporciona en Archivo -> Ejemplos -> PDM -> PDMSerialPlotter. Este programa utilizará el micrófono integrado para escuchar el audio y trazarlo en un trazador de serie. Puede cargar el programa y verificar si la placa y el IDE están funcionando.
Ahora bien, si experimenta una compilación ridículamente lenta, entonces no está solo, muchas personas, incluido yo, enfrentan este problema y, al momento de escribir este artículo, parece que no hay solución. Me toma alrededor de 2-3 minutos compilar y cargar programas simples y cuando probé algunos programas BLE o intenté trabajar con Mbed OS, el tiempo de compilación aumentó a más de 10 minutos, lo que no me animó a intentar nada más. Esto se debe a la integración de Mbed OS con Arduino IDE, esperemos que alguien de la maravillosa comunidad Arduino encuentre una solución para esto.
Programa para leer los datos del sensor y mostrarlos en el monitor serial
Si no usamos las funcionalidades BLE o el núcleo del sistema operativo Mbed de la placa, el tiempo de compilación fue razonable. Así que escribí un boceto simple para leer todos los valores del sensor y mostrarlo en el monitor en serie como se muestra a continuación
El código completo para hacer lo mismo se encuentra en la parte inferior de esta página, pero asegúrese de haber instalado todas las bibliotecas mencionadas anteriormente. La explicación del código es la siguiente.
Inicie el programa incluyendo todos los archivos de encabezado necesarios. Aquí usaremos los cuatro sensores excepto el micrófono.
#include // Incluir la biblioteca para IMU de 9 ejes #include // Incluir biblioteca para leer Presión #include // Incluir biblioteca para leer Temperatura y Humedad #include // Incluir biblioteca para reconocimiento de color, proximidad y gestos
Dentro de la función de configuración, inicializamos el monitor en serie a una velocidad de 9600 baudios para mostrar todos los valores del sensor y también inicializar todas las bibliotecas necesarias. El código dentro de la configuración se muestra a continuación
configuración vacía () {Serial.begin (9600); // Monitor en serie para mostrar todos los valores del sensor if (! IMU.begin ()) // Inicializar el sensor IMU {Serial.println ("¡Error al inicializar IMU!"); while (1);} if (! BARO.begin ()) // Inicializa el sensor de presión {Serial.println ("¡Error al inicializar el sensor de presión!"); while (1);} if (! HTS.begin ()) // Inicializar el sensor de temperatura y humedad {Serial.println ("¡Error al inicializar el sensor de temperatura y humedad!"); while (1);} if (! APDS.begin ()) // Inicializar sensor de color, proximidad y gestos {Serial.println ("¡Error al inicializar el sensor de color, proximidad y gestos!"); while (1);}}
Dentro de la función de bucle, leemos los valores de sensor requeridos de la biblioteca y luego los imprimimos en el monitor en serie. La sintaxis se puede consultar desde el programa de ejemplo de cada biblioteca, hemos leído los valores del acelerómetro, giroscopio, magnetómetro, presión, temperatura, humedad y sensor de proximidad y los mostramos en el monitor de serie. El código para medir el valor del acelerómetro se muestra a continuación, así mismo podemos medir para todos los sensores.
// Valores del acelerómetro if (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Acelerómetro ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } retraso (200);
Arduino Nano 33 BLE- Subiendo el código
Cargar el código en Nano 33 es similar a cualquier otra placa, pero tenga en cuenta que la placa tiene dos puertos COM. Cuando hace clic en el botón de carga, Arduino IDE compila el código y luego reinicia la placa automáticamente a través del comando de software, esto pondrá la placa en modo cargador de arranque y cargará su código. Debido a esto, una vez que se realiza la carga, es posible que observe que el IDE de Arduino ha cambiado automáticamente su puerto COM a un número diferente y es posible que desee volver a cambiarlo antes de abrir su monitor serie.
Así que esta es más o menos mi experiencia con la placa Arduino Nano 33 hasta ahora, intentaré construir algo con sus sensores y funciones BLE en algún momento más adelante en el futuro. ¿Cómo fue tu experiencia con la junta? ¿Qué querrías que construyera con él? Deje las respuestas en la sección de comentarios y discutiremos más.