Diferència entre revisions de la pàgina «LoRa 2023-2024»

De binefa.com
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «= The Things Stack (Community Edition) '''TTSv3''' = [https://eu1.cloud.thethings.network/ Consola de The Things Stack (Community Edition)] de [https://www.thethingsn...».)
 
 
Línia 16: Línia 16:
 
== LoRa OTAA ==
 
== LoRa OTAA ==
 
[https://www.binefa.cat/training/codes/esp32/lora/IoT-02-22_ttn-otaa_dam_01.zip Exemple de microprogramari emprant OTAA]
 
[https://www.binefa.cat/training/codes/esp32/lora/IoT-02-22_ttn-otaa_dam_01.zip Exemple de microprogramari emprant OTAA]
 +
==  Uplink payload formatter ==
 +
function decodeUplink(input) {
 +
  var data = {};
 +
  var bufferT = new ArrayBuffer(4);
 +
  var bytesT = new Uint8Array(bufferT);
 +
  bytesT[0] = input.bytes[0];
 +
  bytesT[1] = input.bytes[1];
 +
  bytesT[2] = input.bytes[2];
 +
  bytesT[3] = input.bytes[3];
 +
  var viewT = new DataView(bufferT);
 +
  data.temperatura=parseFloat(parseInt(100*viewT.getFloat32(0, false)))/100;
 +
  var bufferP = new ArrayBuffer(4);
 +
  var bytesP = new Uint8Array(bufferP);
 +
  bytesP[0] = input.bytes[4];
 +
  bytesP[1] = input.bytes[5];
 +
  bytesP[2] = input.bytes[6];
 +
  bytesP[3] = input.bytes[7];
 +
  var viewP = new DataView(bufferP);
 +
  data.pressio=parseFloat(parseInt(100*viewP.getFloat32(0, false)))/100;
 +
  var bufferRH = new ArrayBuffer(4);
 +
  var bytesRH = new Uint8Array(bufferRH);
 +
  bytesRH[0] = input.bytes[8];
 +
  bytesRH[1] = input.bytes[9];
 +
  bytesRH[2] = input.bytes[10];
 +
  bytesRH[3] = input.bytes[11];
 +
  var viewRH = new DataView(bufferRH);
 +
  data.humitatRelativa=parseFloat(parseInt(100*viewRH.getFloat32(0, false)))/100;
 +
  // data.pressio=((input.bytes[4]<<24)+(input.bytes[5]<<16)+(input.bytes[6]<<8)+input.bytes[7])/100;
 +
  // data.humitatRelativa=((input.bytes[8]<<24)+(input.bytes[9]<<16)+(input.bytes[10]<<8)+input.bytes[11])/100;
 +
  return {
 +
    data: data,
 +
    warnings: [],
 +
    errors: []
 +
  };
 +
}
  
 
= The Things Network '''TTNv2''' =
 
= The Things Network '''TTNv2''' =

Revisió de 12:48, 29 gen 2024

The Things Stack (Community Edition) TTSv3

Consola de The Things Stack (Community Edition) de The Things Network

LoRa ABP

Per a fer les pràctiques amb LoRa ABP haurem de desactivar el comptador de trames (cada cop que es reprograma la placa IoT-02 el comptador torna a zero. TTSv3 verifica que el comptatge de trames sigui correcta. Si no es desactiva el comptador de trames semblarà que no es rep la trama). Fera fer-ho, aneu al dispositiu, seleccioneu la pestanya General Settings, premeu el botó EXPAND a la secció Network layer, desplegueu l'enllaç Advanced MAC settings i seleccioneu Enabled a Resets frame counters. Al final deseu els canvis prement el botó Save changes.

Exemple de microprogramari emprant ABP

 // TTN uses SF9 for its RX2 window.
 LMIC.dn2Dr = DR_SF9;
 // Set data rate and transmit power for uplink (note: txpow seems to be ignored by the library)
 LMIC_setDrTxpow(DR_SF7, 14);

LoRa OTAA

Exemple de microprogramari emprant OTAA

Uplink payload formatter

function decodeUplink(input) {
 var data = {};
 var bufferT = new ArrayBuffer(4);
 var bytesT = new Uint8Array(bufferT);
 bytesT[0] = input.bytes[0];
 bytesT[1] = input.bytes[1];
 bytesT[2] = input.bytes[2];
 bytesT[3] = input.bytes[3];
 var viewT = new DataView(bufferT);
 data.temperatura=parseFloat(parseInt(100*viewT.getFloat32(0, false)))/100;
 var bufferP = new ArrayBuffer(4);
 var bytesP = new Uint8Array(bufferP);
 bytesP[0] = input.bytes[4];
 bytesP[1] = input.bytes[5];
 bytesP[2] = input.bytes[6];
 bytesP[3] = input.bytes[7];
 var viewP = new DataView(bufferP);
 data.pressio=parseFloat(parseInt(100*viewP.getFloat32(0, false)))/100;
 var bufferRH = new ArrayBuffer(4);
 var bytesRH = new Uint8Array(bufferRH);
 bytesRH[0] = input.bytes[8];
 bytesRH[1] = input.bytes[9];
 bytesRH[2] = input.bytes[10];
 bytesRH[3] = input.bytes[11];
 var viewRH = new DataView(bufferRH);
 data.humitatRelativa=parseFloat(parseInt(100*viewRH.getFloat32(0, false)))/100;
 // data.pressio=((input.bytes[4]<<24)+(input.bytes[5]<<16)+(input.bytes[6]<<8)+input.bytes[7])/100;
 // data.humitatRelativa=((input.bytes[8]<<24)+(input.bytes[9]<<16)+(input.bytes[10]<<8)+input.bytes[11])/100;
 return {
   data: data,
   warnings: [],
   errors: []
 };
}

The Things Network TTNv2

Presentació LoRaWAN (esborrany v0.4)

Ús pràctic de LoRaWAN TTNv2

Recursos

Recull introductori per a treballar amb LoRa ( usuari: dam / contrasenya: dam2324)

Recull de pràctiques de 2n de DAM. Curs 2023-2024

Transmissió d'un número real de tipus IEEE-754 (4 bytes) i llur recuperació a NodeRED

Downlink LoRaWAN fent servir TTSv3