Diferència entre les pàgines «Llista de nodes disponibles» i «WisNode LoRa»

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...».)
 
Línia 1: Línia 1:
Aquesta llista recull els nodes compatibles LoRaWan 868Mhz -i per tant compatibles amb The Things Network- que hem provat a la comunitat. No pretèn ser una llista de quin és millor o pitjor. S'aniran afegint pàgines específiques per cadascun d'aquest. Ordenació alfabètica.
+
'''Introducció'''
  
  
{|class="wikitable"
+
'''Requeriments'''
  
!Nom
 
!Fabricant / Proveïdor
 
!URL
 
!Preu
 
!Notes
 
|-
 
  
|style="vertical-align: top;"|Generic ESP32 + SX1276
+
'''Exemple'''
|style="vertical-align: top;"|Varis
 
|style="vertical-align: top;"|Fàcilment trobables a Aliexpress
 
|style="vertical-align: top;"|> 10€
 
|<ul><li>Basat en ESP32 (amb WiFi i Bluetooth LE).</li><li>Diferents SDK disponibles</li><li>Programable en C (Arduino), micropython, Lua.</li><li>Existeixen diverses versions amb pantalla OLED, caixa,... [https://ictoblog.nl/2018/01/13/my-chinese-esp32-sx1276-board-dht11-connected-to-the-things-network-1 tutorial]</li></ul>
 
|-
 
  
|style="vertical-align: top;"|LoPy
+
<pre>
|style="vertical-align: top;"|PyCom
+
/*
|style="vertical-align: top;"|https://pycom.io/product/lopy/
 
|style="vertical-align: top;"|29.95€
 
|<ul><li>Basat en ESP32 (amb WiFi i Bluetooth LE).</li><li>Programable en Micropython.</li><li>Firmware open source</li><li>Existeixen diverses carriers (entre 16 i 35€)</li></ul>
 
|-
 
  
|style="vertical-align: top;"|[[MKR WAN 1300|MKR WAN 1300]]
+
WISNODE-LORA example for Arduino Leonardo
|style="vertical-align: top;"|Arduino
 
|style="vertical-align: top;"|https://store.arduino.cc/mkr-wan-1300
 
|style="vertical-align: top;"|35€
 
|<ul><li>Basat en SAMD21, un ARM Cortex-M0+ de 32bits</li><li>Mòdul LoRa: Murata CMWX1ZZABZ (té un SX1276 i un STM32 a dins)</li><li>Compatible amb l'IDE d'Arduino</li><li>Llibreria específica per comunicar-se amb le mòdul LoRa</li><li>Programable en C (Arduino)</li></ul>
 
|-
 
  
|style="vertical-align: top;"|[[Moteino LoRa|Moteino LoRa]]
+
Copyright (C) 2018
|style="vertical-align: top;"|Low Power Lab
+
Xose Pérez <xose dot perez at gmail dot com>
|style="vertical-align: top;"|https://lowpowerlab.com/shop/product/99
+
for The Things Network Catalunya Wiki (http://thethingsnetwork.cat)
|style="vertical-align: top;"|24.95$
 
|<ul><li>Arduino de baix consum basat en ATMega328P.</li><li>Programable en C amb el framework Arduino.</li><li>Firmware open source</li><li>Requereix la llibreria LMIC per donar support LoRaWan</li></ul>
 
|-
 
  
|style="vertical-align: top;"|The Things Uno
+
Requires RAK811 library (https://github.com/RAKWireless/RAK811-AT-Command/tree/master/Arduino/RAK811)
|style="vertical-align: top;"|The Things Network
 
|style="vertical-align: top;"|https://shop.thethingsnetwork.com/index.php/product/the-things-uno/
 
|style="vertical-align: top;"|40.00€
 
|<ul><li>Arduino Leonardo amb mòdul RN2483 de Microchip</li><li>Programable en C amb el framework Arduino.</li></ul>
 
|-
 
  
|style="vertical-align: top;"|[[Wemos Lora Node|Wemos Lora Node]]
+
*/
|style="vertical-align: top;"|Charles Hallard
 
|style="vertical-align: top;"|https://github.com/hallard/WeMos-Lora<br />https://pcbs.io/share/4Q1Z4
 
|style="vertical-align: top;"|4x $5.30 (sense ràdio)
 
|<ul><li>Shield per a Wemos D1 Mini (ESP8266).</li><li>Open Source Hardware</li><li>Es compra la placa sense el mòdul de ràdio</li></ul>
 
|-
 
  
|style="vertical-align: top;"|[[Whitecat ESP32 N1|Whitecat ESP32 N1]]
+
#include "RAK811.h"
|style="vertical-align: top;"|Whitecatboard
 
|style="vertical-align: top;"|https://whitecatboard.org/whitecat-esp32-n1-board/
 
|style="vertical-align: top;"|40.00€
 
|<ul><li>Basat en ESP32 (amb WiFi i Bluetooth LE).</li><li>Programable en Lua o llenguatge de blocs.</li><li>Firmware open source</li><li>Existeix una carrier</li></ul>
 
|-
 
  
|style="vertical-align: top;"|[[WisNode LoRa|WisNode LoRa]]
+
// -----------------------------------------------------------------------------
|style="vertical-align: top;"|RAK Wireless
+
// Configuració
|style="vertical-align: top;"|http://wiki.rakwireless.com/doku.php?id=wisnode_series:wisnode-lora
+
// -----------------------------------------------------------------------------
|style="vertical-align: top;"|13.50€
 
|<ul><li>Shield per Arduino</li><li>Basat en el modul RAK811 the RAK Wireless.</li></ul>
 
|-
 
  
|}
+
#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ó del 15:03, 31 gen 2018

Introducció


Requeriments


Exemple

/*

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 :(");
        }

    }

}