- Qual a diferença do Bluetooth de baixa energia (BLE)?
- Capacidade BLE do Módulo NRF24L01
- Componentes necessários
- Começando com o Módulo nRF24L01
- Arduino
- Interface nRF24L01 com Arduino para comunicação BLE
Bluetooth Low Energy (BLE) é uma versão do Bluetooth e está presente como uma versão menor e altamente otimizada do Bluetooth clássico. Também é conhecido como Smart Bluetooth. O BLE foi projetado tendo em mente o menor consumo de energia possível especificamente para baixo custo, baixa largura de banda, baixa potência e baixa complexidade. ESP32 tem recursos BLE embutidos, mas para outros microcontroladores como o Arduino, o nRF24L01 pode ser usado. Este módulo RF também pode ser usado como módulo BLE para enviar os dados para outro dispositivo Bluetooth como smartphones, computador etc.
Aqui neste tutorial, demonstraremos como enviar quaisquer dados por BLE usando nRF24L01. Vamos enviar leituras de temperatura a partir DHT11 para smartphone usando módulo Arduino e NRF sobre BLE.
Qual a diferença do Bluetooth de baixa energia (BLE)?
O BLE foi adotado devido às suas características de consumo de energia, já que era capaz de funcionar por um longo período de tempo usando apenas uma célula tipo moeda. Em comparação com outros padrões sem fio, o rápido crescimento do BLE foi ainda mais rápido por causa de seus aplicativos fenomenais em smartphones, tablets e computação móvel.
Capacidade BLE do Módulo NRF24L01
O BLE usa a mesma banda ISM de 2,4 GHz com taxa de transmissão de 250 Kbps a 2 Mbps, o que é permitido em muitos países e pode ser aplicado em aplicações industriais e médicas. A banda começa em 2.400 MHz a 2.483,5 MHz e é dividida em 40 canais. Três desses canais são conhecidos como 'Publicidade' e são usados por dispositivos para enviar pacotes de publicidade com informações sobre eles para que outros dispositivos BLE possam se conectar. Esses canais foram inicialmente selecionados na parte superior inferior da banda e no meio da banda para evitar interferência que pode possivelmente interferir com vários canais. Para saber mais sobre BLE, siga este tutorial.
Este tutorial irá explicar como usar o módulo NRF24L01 como transceptor BLE. O tutorial sobre NRF24L01 como módulo RF já foi explicado na interface do nRF24L01 com o tutorial do Arduino. Hoje, a funcionalidade BLE deste módulo será explicada pelo envio de dados do sensor para um smartphone. Aqui, este módulo nRF24L01 terá interface com o microcontrolador Arduino e os dados de temperatura do sensor DHT11 serão enviados para o aplicativo Android oficial Nordic BLE.
Componentes necessários
Hardware:
- Arduino UNO
- Módulo nRF24L01 BLE
- Sensor de Temperatura e Umidade DHT11
- Jumpers
Programas:
- IDE Arduino
- Aplicativo Android BLE nórdico (nRF Temp 2.0 para BLE ou nRF Connect for Mobile)
Começando com o Módulo nRF24L01
Os módulos nRF24L01 são módulos transceptores, o que significa que cada módulo pode enviar e receber dados, mas, como são half-duplex, podem enviar ou receber dados ao mesmo tempo. O módulo possui o IC genérico nRF24L01 da Nordic semicondutores que é responsável pela transmissão e recepção de dados. O IC se comunica usando o protocolo SPI e, portanto, pode ser facilmente conectado a qualquer microcontrolador. Fica muito mais fácil com o Arduino, pois as bibliotecas estão prontamente disponíveis. Já usamos o módulo nRF24L01 com Arduino para criar uma sala de bate-papo e controlar servo motores sem fio.
A pinagem de um módulo nRF24L01 padrão é mostrada abaixo:
O módulo tem voltagem operacional de 1,9 V a 3,6 V (normalmente 3,3 V) e consome muito menos corrente de apenas 12 mA durante a operação normal, o que o torna eficiente em bateria e, portanto, pode até funcionar com células tipo moeda. Mesmo que a tensão de operação seja de 3,3 V, a maioria dos pinos é tolerante a 5 V e, portanto, podem ter interface direta com microcontroladores de 5 V como o Arduino. Outra vantagem de usar esses módulos é que, cada módulo possui 6 Pipelines. Ou seja, cada módulo pode se comunicar com 6 outros módulos para transmitir ou receber dados. Isso torna o módulo adequado para a criação de redes em estrela ou em malha em aplicativos IoT. Além disso, eles têm uma ampla faixa de endereços de 125 IDs exclusivos, portanto, em uma área fechada, podemos usar 125 desses módulos sem interferir uns com os outros.
Arduino
Interface nRF24L01 com Arduino para comunicação BLE
O nRF24L01 funciona em SPI, portanto a interface será usando protocolo SPI. O código completo e o vídeo serão anexados ao final deste tutorial. O guia de aplicativos Android também é explicado no vídeo. Aqui, o módulo nRF24L01 é usado para se comunicar com o aplicativo de smartphone da Nordic.Em primeiro lugar, inclua as bibliotecas necessárias. A biblioteca inclui RF24 para acessar comandos nRF24L01, biblioteca DHT11 para acessar comandos DHT11 e biblioteca BTLE para usar funções BLE.
#incluir
Defina e inicialize os pinos e funções para o módulo DHT11 e BLE. O tipo DHT é inicializado como DHT11, pois estamos usando DHT11. O DHT é conectado ao pino 4 do GPIO e os pinos CE e CSN do módulo nRF são conectados aos pinos 9 e 10, respectivamente.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Rádio RF24 (9, 10); BTLE btle (& rádio);
Inicie a porta serial em 9600, você pode escolher qualquer porta. Em seguida, inicie o sensor DHT e também o BTLE com o nome local do Bluetooth com no máximo 8 caracteres.
Serial.begin (9600); dht.begin (); btle.begin ("CD Temp");
Leia a temperatura sobre o loop e salve-a em uma variável flutuante temp . Adicione uma linha de depuração para mostrar uma mensagem de erro se o DHT perder sua energia ou algo inesperado acontecer.
float temp = dht.readTemperature (); // lê os dados de temperatura if (isnan (h) - isnan (t)) { Serial.println (F ("Falha ao ler do sensor DHT!")); Retorna; }
Salve o valor no Buffer e analise-o no módulo BLE. Envie também o valor da temperatura para o módulo BLE. O módulo BLE anunciará os dados de temperatura. O aplicativo Android pode pesquisar o módulo BLE e receber os dados do 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 falhou..!"); }
Quando terminar, basta pular para o próximo canal.
btle.hopChannel ();
Visto que a documentação do sensor DHT recomenda manter um atraso mínimo de 2 segundos após uma leitura, então adicione um atraso de 2 segundos.
atraso (2000);
Depois de fazer o upload e emparelhar o smartphone com o módulo nRF, você começará a obter os valores no nRF Temp 2.0 para o aplicativo Android BLE como mostrado abaixo. O procedimento completo de emparelhamento e obtenção de dados no aplicativo Android também é explicado no vídeo:
Isso conclui o tutorial completo sobre como anunciar os dados do sensor no Nordic Android App usando BLE nRF24L01. Se você encontrar alguma dificuldade, comente abaixo ou escreva para o nosso fórum. Para explorar mais sobre o nRF24L02, você também pode tentar criar uma sala de bate-papo privada usando Arduino, nRF24L01 e Processing.