- ¿En qué se diferencia Bluetooth de baja energía (BLE)?
- Capacidad BLE del módulo NRF24L01
- Componentes requeridos
- Comenzando con el módulo nRF24L01
- Arduino
- Interfaz nRF24L01 con Arduino para comunicación BLE
Bluetooth Low Energy (BLE) es una versión de Bluetooth y está presente como una versión más pequeña y altamente optimizada del Bluetooth clásico. También se conoce como Smart Bluetooth. El BLE fue diseñado teniendo en cuenta el menor consumo de energía posible específicamente para bajo costo, bajo ancho de banda, baja potencia y baja complejidad. ESP32 tiene capacidades BLE incorporadas, pero para otros microcontroladores como Arduino, se puede usar nRF24L01. Este módulo de RF también se puede utilizar como módulo BLE para enviar los datos a otros dispositivos Bluetooth como teléfonos inteligentes, computadoras, etc.
Aquí, en este tutorial, demostraremos cómo enviar cualquier dato a través de BLE usando nRF24L01. Enviaremos lecturas de temperatura desde DHT11 al teléfono inteligente usando Arduino y el módulo nRF sobre BLE.
¿En qué se diferencia Bluetooth de baja energía (BLE)?
El BLE se adoptó debido a sus características de consumo de energía, ya que podía funcionar durante un período prolongado de tiempo utilizando solo una celda de botón. En comparación con otros estándares inalámbricos, el rápido crecimiento de BLE ha ido aún más rápido debido a sus aplicaciones fenomenales en teléfonos inteligentes, tabletas y computación móvil.
Capacidad BLE del módulo NRF24L01
BLE utiliza la misma banda ISM de 2,4 GHz con una velocidad en baudios de 250 Kbps a 2 Mbps, que está permitida en muchos países y se puede aplicar a aplicaciones industriales y médicas. La banda comienza en 2400 MHz a 2483,5 MHz y se divide en 40 canales. Tres de estos canales se conocen como 'Publicidad' y los dispositivos los utilizan para enviar paquetes publicitarios con información sobre ellos para que otros dispositivos BLE puedan conectarse. Estos canales se seleccionaron inicialmente en la parte inferior superior de la banda y en la mitad de la banda para evitar interferencias que posiblemente puedan interferir con varios canales. Para obtener más información sobre BLE, siga este tutorial.
Este tutorial explicará cómo utilizar el módulo NRF24L01 como transceptor BLE. El tutorial sobre NRF24L01 como módulo de RF ya se ha explicado en la interfaz de nRF24L01 con el tutorial de Arduino. Hoy, la funcionalidad BLE de este módulo se explicará enviando los datos del sensor a un teléfono inteligente. Aquí este módulo nRF24L01 se interconectará con el microcontrolador Arduino y los datos de temperatura del sensor DHT11 se enviarán a la aplicación oficial de Android Nordic BLE.
Componentes requeridos
Hardware:
- Arduino UNO
- nRF24L01 Módulo BLE
- Sensor de temperatura y humedad DHT11
- Jerséis
Software:
- IDE de Arduino
- Aplicación de Android Nordic BLE (nRF Temp 2.0 para BLE o nRF Connect para dispositivos móviles)
Comenzando con el módulo nRF24L01
Los módulos nRF24L01 son módulos transceptores, lo que significa que cada módulo puede enviar y recibir datos, pero como son semidúplex pueden enviar o recibir datos a la vez. El módulo tiene el IC genérico nRF24L01 de Nordic semiconductores que se encarga de la transmisión y recepción de datos. El IC se comunica mediante el protocolo SPI y, por tanto, se puede conectar fácilmente con cualquier microcontrolador. Se vuelve mucho más fácil con Arduino ya que las bibliotecas están disponibles. Ya usamos el módulo nRF24L01 con Arduino para crear una sala de chat y controlar los servomotores de forma inalámbrica.
Los pines de un módulo nRF24L01 estándar se muestran a continuación:
El módulo tiene un voltaje de operación de 1.9V a 3.6V (típicamente 3.3V) y consume muy menos corriente de solo 12mA durante el funcionamiento normal, lo que hace que la batería sea eficiente y, por lo tanto, incluso puede funcionar con pilas de botón. Aunque el voltaje de funcionamiento es de 3,3 V, la mayoría de los pines son tolerantes a 5 V y, por lo tanto, se pueden conectar directamente con microcontroladores de 5 V como Arduino. Otra ventaja de usar estos módulos es que cada módulo tiene 6 Pipelines. Es decir, cada módulo puede comunicarse con otros 6 módulos para transmitir o recibir datos. Esto hace que el módulo sea adecuado para crear redes en estrella o en malla en aplicaciones de IoT. También tienen un amplio rango de direcciones de 125 ID únicos, por lo que en un área cerrada podemos usar 125 de estos módulos sin interferir entre sí.
Arduino
Interfaz nRF24L01 con Arduino para comunicación BLE
El nRF24L01 funciona en SPI, por lo que la interfaz utilizará el protocolo SPI. El código completo y el video se adjuntarán al final de este tutorial. La guía de la aplicación de Android también se explica en el video. Aquí, el módulo nRF24L01 se utiliza para comunicarse con la aplicación para teléfonos inteligentes de Nordic.En primer lugar, incluya las bibliotecas necesarias. La biblioteca incluye RF24 para acceder a los comandos nRF24L01, la biblioteca DHT11 para acceder a los comandos DHT11 y la biblioteca BTLE para usar las funciones BLE.
#incluir
Definir e inicializar los pines y funciones para el módulo DHT11 y BLE. El tipo DHT se inicializa como DHT11 ya que estamos usando DHT11. El DHT está conectado a GPIO Pin 4 y los pines CE y CSN del módulo nRF están conectados a Pin 9 y 10 respectivamente.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Radio RF24 (9, 10); BTLE btle (y radio);
Inicie el puerto serie en 9600, puede elegir cualquier puerto. Luego comience el sensor DHT y también comience BTLE con el nombre local de Bluetooth con un máximo de 8 caracteres.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Lea la temperatura sobre el circuito y guárdela en una temperatura variable flotante. Agregue una línea de depuración para mostrar un mensaje de error si DHT pierde su energía o sucede algo inesperado.
temperatura flotante = dht.readTemperature (); // leer datos de temperatura if (isnan (h) - isnan (t)) { Serial.println (F ("¡Error al leer del sensor DHT!")); regreso; }
Guarde el valor en Buffer y analícelo en el módulo BLE. También envíe el valor de temperatura al módulo BLE. El módulo BLE anunciará los datos de temperatura. La aplicación de Android puede buscar el módulo BLE y recibir los datos del sensor.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE falló…!"); }
Cuando termine, simplemente salte al siguiente canal.
btle.hopChannel ();
Dado que la documentación del sensor DHT recomienda mantener un retraso de al menos 2 segundos después de una lectura, agregue un retraso de 2 segundos.
retraso (2000);
Después de cargar y emparejar el teléfono inteligente con el módulo nRF, comenzará a obtener los valores en nRF Temp 2.0 para la aplicación de Android BLE como se muestra a continuación. El procedimiento completo de emparejamiento y obtención de datos en la aplicación de Android también se explica en el video:
Con esto finaliza el tutorial completo sobre la publicidad de los datos del sensor en la aplicación de Android Nordic utilizando BLE nRF24L01. Si encuentra alguna dificultad, comente a continuación o escriba a nuestro foro. Para explorar más sobre nRF24L02, también puede intentar crear una sala de chat privada usando Arduino, nRF24L01 y Processing.