Leitura analógica do LoRaMesh da Radioenge

A leitura analógica com o LoRaMesh possibilita com que possamos fazer um amplo sistema de sensoriamento remoto sem precisar necessariamente de microcontrolador adicional na parte do slave.

Por qual motivo usar a leitura analógica do LoRaMesh da Radioenge?

Uma leitura digital em muito dos casos já é mais que o suficiente para saber se algo está ou não funcionando, mas a leitura analógica do LoRaMesh da Radioenge nos da uma precisão muito maior a respeito do funcionamento de tal sensor. Fazendo uma analogia com medição de distância a leitura digital vai informar apenas se está perto ou longe enquanto a leitura analógica informa o quão perto e o quão longe está algo.

No caso do módulo LoRaMesh da Radioenge, temos uma resolução AD de 12bits o que totaliza 4096 amostras o que é acima da maioria dos chips Atmega (AVR) usado pela Arduino que tem apenas 10bits (1024 amostras).

Como usar a leitura ADC do LoRaMesh

Para usarmos a leitura analógica do LoRaMesh da Radioenge só precisamos definir o pino como entrada e usar uma função da biblioteca, essas funções tem um comportamento bem similar com as do Arduino e funciona com o mesmo comando, a diferença é que precisamos definir qual dispositivo da rede que será feito a leitura, podendo ser remoto ou localmente.

  • pinMode(<ID>, <GPIO 5:6>, INPUT);
  • analogRead(<ID>, <GPIO 5:6>);

É importante ressaltar que a leitura remota só pode ser feita do master para o slave e nunca de slave para slave, então é importante considerarmos isso para as aplicações. Além disso o valor AD retornado corresponde a 12bits.

Exemplo de aplicação

Para fins de exemplo, vamos usar um termistor NTC para fazer uma leitura remota em um slave que estará sendo alimentado por bateria ou qualquer outra fonte de sua preferência, respeitando as limitações do hardware é claro.



O termistor funciona em um circuito divisor de tensão onde temos um resistor de referência e precisamos saber o valor do outro resistor e consequentemente converter de ohms para temperatura. Esse tipo de conversão já foi retratada neste link, mas de qualquer forma o calculo já estará embutido na biblioteca para facilitar sua vida.

Para demonstrar um funcionamento completo onde não só realizamos a leitura analógica como também consultamos o valor remotamente é necessário dois circuitos, um onde será o master e o outro o slave.

Circuito do master

No circuito do master é necessário que tenha um microcontrolador para fazer todo o gerenciamento da rede e consequentemente fazer as consultas.

ESP32 e LoRaMesh da Radioenge

Circuito do slave

O principal ponto do slave é a alimentação, pois não será necessário adicionar um microcontrolador para fazer o gerenciamento, o único ponto em que devemos nos atentar é que o slave precisa já esta previamente configurado (senha, bps e id) para que seja possível consulta-lo.

Leitura analógica do módulo LoRaMesh da Radioenge

Código do master

Para que todo o processo funcione adequadamente é necessário baixar a biblioteca que está disponível através deste link do github.

#include "LoRaMESH.h"

LoRaMESH LoRa(&Serial2);

uint8_t ID = 0;

void setup() {
  Serial.begin(115200);
  delay(2000);
  Serial2.begin(9600);
  LoRa.begin(true);

  if(LoRa.localId != ID)
  {
    if(!LoRa.setNetworkID(ID)){
      Serial.println("Erro ao definir o novo ID");
    }

    Serial.println("ID configurado com sucesso!");

    if(!LoRa.setBPS(BW500, SF7, CR4_5)){
      Serial.println("Erro ao configurar bps");
    }

    Serial.println("Parametros LoRa configurados com sucesso!");
    
    if(!LoRa.setClass(CLASS_C, WINDOW_15s)){
      Serial.println("Erro ao configurar a classe");
    }

    Serial.println("Modo de operacao configurado com sucesso!");

    if(!LoRa.setPassword(123)){
      Serial.println("Erro ao gravar a senha ou a senha gravada não condiz com a senha definida");
    }

    Serial.println("Senha configurada com sucesso!");
  }

  if(ID == 0){
     LoRa.pinMode(1, 5, INPUT);  // Define o pino 5 do slave 1 como entrada (caso seja compatível com ADC a configuração será feita para ADC, mas será possível fazer leitura digital mesmo assim)
     //LoRa.pinMode(1, 6, INPUT);
  }

  Serial.println("LocalID: " + String(LoRa.localId));
  Serial.println("UniqueID: " + String(LoRa.localUniqueId));
  Serial.println("Pass <= 65535: " + String(LoRa.registered_password));
}

void loop() { 
   if(ID == 0){
      Serial.println("TempC: " + String(LoRa.getTemp(LoRa.analogRead(1, 5), 5000))); // obtêm o valor da temperatura do pino 5 do slave 1 onde o beta do termistor é 5000
      delay(1000);
   }
}

Funcionamento da leitura analógica do LoRaMesh da Radioenge

Nesse vídeo abaixo é possível perceber que ao colocar o dedo no termistor do slave o valor muda, aumentando a temperatura e quando retirado a termperatura abaixa.

Deixe uma resposta

Descubra mais sobre elcereza

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading