Diferència entre revisions de la pàgina «LoRa 2023-2024»
(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...».) |
m (→LoRa OTAA) |
||
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
Contingut
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)
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