Diferència entre les pàgines «WisNode LoRa» i «Fitxer:Comunitat TTNcat.png»

De The Things Network Catalunya Wiki
(Diferència entre pàgines)
Jump to navigation Jump to search
(Es crea la pàgina amb «'''Introducció''' '''Requeriments''' '''Exemple''' <pre> /* WISNODE-LORA example for Arduino Leonardo Copyright (C) 2018 Xose Pérez <xose dot perez at gmail d...».)
 
(Monica ha carregat una nova versió de Fitxer:Comunitat TTNcat.png)
 
Línia 1: Línia 1:
'''Introducció'''
 
  
 
'''Requeriments'''
 
 
 
'''Exemple'''
 
 
<pre>
 
/*
 
 
WISNODE-LORA example for Arduino Leonardo
 
 
Copyright (C) 2018
 
Xose Pérez <xose dot perez at gmail dot com>
 
for The Things Network Catalunya Wiki (http://thethingsnetwork.cat)
 
 
Requires RAK811 library (https://github.com/RAKWireless/RAK811-AT-Command/tree/master/Arduino/RAK811)
 
 
*/
 
 
#include "RAK811.h"
 
 
// -----------------------------------------------------------------------------
 
// Configuració
 
// -----------------------------------------------------------------------------
 
 
#define SEND_EVERY      60000  // Envia un missatge cada 60s
 
#define WORK_MODE      LoRaWAN // Mode LoRaWan
 
#define JOIN_MODE      OTAA    // OTAA or ABP
 
 
#if JOIN_MODE == ABP
 
    #define NWKSKEY    ""      // Configura el teu dispositiu amb les dades de TTN
 
    #define APPSKEY    ""      // Configura el teu dispositiu amb les dades de TTN
 
    #define DEVADDR    ""      // Configura el teu dispositiu amb les dades de TTN
 
#endif
 
 
#if JOIN_MODE == OTAA
 
    #define DEVEUI      ""      // Configura el teu dispositiu amb les dades de TTN
 
    #define APPEUI      ""      // Configura el teu dispositiu amb les dades de TTN
 
    #define APPKEY      ""      // Configura el teu dispositiu amb les dades de TTN
 
#endif
 
 
 
// -----------------------------------------------------------------------------
 
 
// L'Arduno Leonardo fa servir Serial per l'USB i
 
// Serial1 per els GPIO RX i TX de la capçalera
 
RAK811 rak811(Serial1);
 
 
// Valor a enviar
 
byte counter = 0;
 
 
// -----------------------------------------------------------------------------
 
 
void setup() {
 
 
    // Inicialitzem el pport de debug (USB)
 
    Serial.begin(115200);
 
    while (!Serial);
 
    Serial.println("WisNode-LoRa example @ttncat");
 
 
    // Inicialitzem l'UART al mòdul RAK811
 
    Serial1.begin(115200);
 
 
    Serial.print("Versió del mòdul: ");
 
    Serial.println(rak811.rk_getVersion());
 
    Serial.print("Banda: ");
 
    Serial.println(rak811.rk_getBand());
 
 
    Serial.println("Mode de treball LoRaWan");
 
    if (!rak811.rk_setWorkingMode(WORK_MODE)) {
 
        Serial.println("Error configurar el mode de treball");
 
        while(true);
 
    }
 
 
    #if JOIN_MODE == OTAA
 
        Serial.println("Configurant OTAA");
 
        if (!rak811.rk_initOTAA(DEVEUI, APPEUI, APPKEY)) {
 
            Serial.println("Error en els paràmetres de configuració");
 
            while(true);
 
        }
 
    #endif
 
 
    #if JOIN_MODE == ABP
 
        Serial.println("Configurant ABP");
 
        if (!rak811.rk_initABP(DEVADDR, NWKSKEY, APPSKEY)) {
 
            Serial.println("Error en els paràmetres de configuració");
 
            while(true);
 
        }
 
    #endif
 
 
    Serial.println("Connectant");
 
    if (!rak811.rk_joinLoRaNetwork(JOIN_MODE)) {
 
        Serial.println("Error connectant-se a la xarxa");
 
        return;
 
    }
 
 
    Serial1.setTimeout(8000);
 
    String response = Serial1.readStringUntil('\n');
 
    Serial.print("Responsta: ");
 
    Serial.println(response);
 
 
    if (!response.startsWith(STATUS_JOINED_SUCCESS)) {
 
        Serial.println("Resposta incorrecte");
 
        while(true);
 
    }
 
    Serial.println("Connectat!!");
 
 
}
 
 
void loop() {
 
 
    static unsigned long last = 0;
 
    if ((last == 0) || (millis() - last > SEND_EVERY)) {
 
        last = millis();
 
 
        // Al missatge ha de ser un string d'hexadecimals
 
        char buffer[3];
 
        snprintf(buffer, sizeof(buffer), "%02X", counter++);
 
 
        // Enviant missatge
 
        if (rak811.rk_sendData(1, 1, buffer)) {
 
            Serial.println("Missatge enviat, resposta: ");
 
            Serial.println(rak811.rk_recvData());
 
        } else {
 
            Serial.println("Error enviant missatge :(");
 
        }
 
 
    }
 
 
}
 
 
</pre>
 

Revisió de 19:05, 8 feb 2018