Skip to content

Mestrado Computação Móvel 2018/19: Implementação de uma rede de sensores LoRa para o envio de valores recolhidos por diversos sensores para o TTN, na Disciplina de Redes de sensores IPG MCM 2019

Notifications You must be signed in to change notification settings

daeynasvistas/LoRa-TTN-Node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPG MCM 2018/19

ezgif-1-477448af6497 111

The Things Network Node LoRa Arduino UNO

Os dados ficam muito mais bonitos quando os pode visualizar. Este projeto torna fácil enviar dados de sensores de nodes LoRaWAN conectados à rede Things.

Neste repositório encontra um step by step para registar um Node (Arduino UNO) na plataform TTN e a forma de enviar para esta os valores dos sensores: GPS, Humidade, Temperatura e luminosidade utilizando LoRa.

Para visualizar os dados num mapa e na forma de um gráfico, pode utilizar este repositório: https://github.com/daeynasvistas/LoRa-TTN-map

66425186_342349106659933_6656448965128486912_n

Alterar em cada Node (Main.cpp)

static const PROGMEM u1_t NWKSKEY[16] = { 0x82, 0x60 };  //COLOCAR AQUI "Network Session Key" (ver screenshot)
static const u1_t PROGMEM APPSKEY[16] = { 0x59, 0x76 };  //COLOCAR AQUI "App Session Key"
static const u4_t DEVADDR = 0x26011874;                  //COLOCAR AQUI "0xDevice Address"

Alterar em cada Node (Main.cpp)

indicar de forma implícita a freq. que configurou no dragino, neste caso "868300000"

   #if defined(CFG_eu868)
   //LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI);      // g-band
   //LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
   //LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK,  DR_FSK),  BAND_MILLI);      // g2-band

Como instalar

1. Clonar repositório

(Foi utilizado VisualStudio Code + PlatformIO, mas pode editar Main.cpp com Arduino IDE)

$ git clone https://github.com/daeynasvistas/LoRa-TTN-Node

Librarias utilizadas

lib_deps =
   # Depend on specific version
   DHTlib
   LMIC-Arduino@1.5.0+arduino-2
   TinyGPS

2. Configurar Gateway Dragino:

2 3

Utilizar MAC do Gateway com ID: ''' a840411bc834ffff <- adicionar f até 16bit '''

3. Na Consola TTN

3.1 Registar uma nova GATEWAY

4 5 6

3.2 Adicionar uma nova aplicação

7 8

Obtemos Assim a chave da applicação (App ID)

9

4. Registar um novo Node (na aplicação anteriormente criada)

10

4.1 Obtemos as chaves necessárias aqui

11

5. Foi implementado um Payload "custom"

12

5.1 Payload Custom

function Bytes2Float32(bytes) {
  var sign = (bytes & 0x80000000) ? -1 : 1;
  var exponent = ((bytes >> 23) & 0xFF) - 127;
  var significand = (bytes & ~(-1 << 23));

  if (exponent == 128) 
      return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);

  if (exponent == -127) {
      if (significand == 0) return sign * 0.0;
      exponent = -126;
      significand /= (1 << 22);
  } else significand = (significand | (1 << 23)) / (1 << 23);

  return sign * significand * Math.pow(2, exponent);
}

// Test using 0xFF1641 for -23.4 and 65%, or 0x00EA41 for +23.4 and 65%
function Decoder(bytes, port) {
  var lat = bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
var lon = bytes[7] << 24 | bytes[6] << 16 | bytes[5] << 8 | bytes[4];
  
var lux =  bytes[8] << 8 | bytes[9];

var temp = bytes[10] << 24 >>16 | bytes[11];
var hum = bytes[12] << 8 | bytes[13];


return {
  latitude:  Bytes2Float32(lat),
  	longitude: Bytes2Float32(lon),
  Temperatura: (temp/100),
  Humidade: (hum/100),
  Luminosidade: (lux),		
};
}

Resultado

13

About

Mestrado Computação Móvel 2018/19: Implementação de uma rede de sensores LoRa para o envio de valores recolhidos por diversos sensores para o TTN, na Disciplina de Redes de sensores IPG MCM 2019

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages