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 clásico Bluetooth. También se conoce como Smart Bluetooth. El BLE fue diseñado teniendo en cuenta el consumo de energía más bajo 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 RF también se puede usar como módulo BLE para enviar los datos a otro dispositivo 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 de DHT11 al teléfono inteligente usando Arduino y el módulo nRF a través de BLE.

Componentes requeridos

Hardware:

  • Arduino UNO
  • Módulo nRF24L01 BLE
  • Sensor de temperatura y humedad DHT11
  • Puentes

Software:

Comenzando con el módulo nRF24L01

Los módulos nRF24L01 son módulos transceptotores, 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 semiconductores nórdicos que es responsable de la transmisión y recepción de datos. El IC se comunica utilizando el protocolo SPI y, por lo tanto, puede interactuar fácilmente con cualquier microcontrolador. Se vuelve mucho más fácil con Arduino ya que las bibliotecas están fácilmente disponibles.

Los pines de un módulo nRF24L01 estándar se muestran a continuación:

El módulo tiene un voltaje de funcionamiento de 1.9V a 3.6V (generalmente 3.3V) y consume muy poca corriente de solo 12mA durante la operación normal, lo que hace que la batería sea eficiente y, por lo tanto, incluso puede funcionar con celdas de monedas. Aunque el voltaje de funcionamiento es de 3.3V, la mayoría de los pines son tolerantes a 5V y, por lo tanto, pueden conectarse directamente con microcontroladores de 5V como Arduino. Otra ventaja de usar estos módulos es que cada módulo tiene 6 tuberías. 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 IoT . También tienen un amplio rango de direcciones de 125 ID únicos, por lo tanto, en un área cerrada podemos usar 125 de estos módulos sin interferir entre sí.

Interfaz nRF24L01 con Arduino para la 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 requeridas. 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.

#include <SPI.h> 
#include <RF24.h> 
#include <BTLE.h> 
#include <DHT.h>

Defina e inicialice los pines y las funciones para el módulo DHT11 y BLE . El tipo DHT se inicializa como DHT11 ya que estamos usando DHT11. El DHT está conectado al pin GPIO 4 y los pines CE y CSN del módulo nRF están conectados al 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 de longitud.

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 potencia o sucede algo inesperado.

 float temp = 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 . Envíe también 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 ("El anuncio BTLE falló ...!"); 
  }

Cuando hayas terminado, salta al siguiente canal.

 btle.hopChannel ();

Dado que la documentación del sensor DHT recomienda mantener un retraso mínimo de 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:

Esto finaliza el tutorial completo sobre la publicidad de los datos del sensor a la aplicación nórdica de Android usando BLE nRF24L01.

https://circuitdigest.com/

2 thoughts on “Envío de datos del sensor al teléfono Android usando Arduino y NRF24L01 a través de Bluetooth (BLE)”

  1. Por favor, donde dice «Comenzando con el módulo nRF24L01
    Los módulos nRF24L01 son módulos transistores, lo que significa que cada módulo puede enviar y recibir datos» debe decir: «son módulos transceptotores». Favor corregir. Gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *