jpmeijers / RN2483-Arduino-Library

Arduino C++ code to communicate with a Microchip RN2483 module
Apache License 2.0
86 stars 60 forks source link

RN2903 Stuck on SF10 #58

Closed ElectronicallyE closed 6 years ago

ElectronicallyE commented 6 years ago

Been using your library for a while now and the transmissions will not change from SF10, no matter the distance I am from a gateway or the gateway which I use. I don't know the exact cause of this, but I can't seem to find anything in my code which indicates this. I am located in Australia and use the AU915 frequency plan.

My hardware setup consists of an Adafruit WICED Feather Developer Edition with a LoRaWAN FeatherWing add-on board

For reference, my code is below:

/*
 * Author: JP Meijers
 * Date: 2016-09-07
 *
 * This program is meant to be used on a The Things Uno board.
 *
 * Transmit a one byte packet via TTN. This happens as fast as possible,
 * while still keeping to the 1% duty cycle rules enforced by the RN2483's built
 * in LoRaWAN stack. Even though this is allowed by the radio regulations of the
 * 868MHz band, the fair use policy of TTN may prohibit this.
 *
 * CHECK THE RULES BEFORE USING THIS PROGRAM!
 *
 * CHANGE ADDRESS!
 * Change the device address, network (session) key, and app (session) key to
 * the values that are registered via the TTN dashboard.
 * The appropriate line is "myLora.initABP(XXX);" or "myLora.initOTAA(XXX);"
 * When using ABP, it is advised to enable "relax frame count" on the dashboard.
 *
 */
#include <rn2xx3.h>

//create an instance of the rn2483 library, using the given Serial port
rn2xx3 myLora(Serial1);

// the setup routine runs once when you press reset:
void setup()
{
  pinMode(PC5, OUTPUT);
  digitalWrite(PC5, HIGH);

  // Open serial communications and wait for port to open:
  Serial.begin(57600); //serial port to computer
  Serial1.begin(57600); //serial port to radio

  // make sure usb serial connection is available,
  // or after 10s go on anyway for 'headless' use of the
  // node.
  while ((!Serial) && (millis() < 10000));

  Serial.println("Startup");

  initialize_radio();

  //transmit a startup message
  myLora.tx("TTN Mapper on TTN Uno node");
}

void initialize_radio()
{
  delay(100); //wait for the RN2xx3's startup message
  Serial1.flush();

  //print out the HWEUI so that we can register it via ttnctl
  String hweui = myLora.hweui();
  while(hweui.length() != 16)
  {
    Serial.println("Communication with RN2xx3 unsuccessful. Power cycle the TTN UNO board.");
    delay(10000);
    hweui = myLora.hweui();
  }
  Serial.println("When using OTAA, register this DevEUI: ");
  Serial.println(hweui);
  Serial.println("RN2xx3 firmware version:");
  Serial.println(myLora.sysver());

  //configure your keys and join the network
  Serial.println("Trying to join TTN");
  bool join_result = false;

  //ABP: initABP(String addr, String AppSKey, String NwkSKey);
  join_result = myLora.initABP("", "", "");

  while(!join_result)
  {
    Serial.println("Unable to join. Are your keys correct, and do you have TTN coverage?");
    delay(10000); //delay a minute before retry
    join_result = myLora.init();
  }
  Serial.println("Successfully joined TTN");

}

// the loop routine runs over and over again forever:
void loop()
{
    Serial.println("TXing");
    myLora.tx("!"); //one byte, blocking function
    delay(2000);
}
ElectronicallyE commented 6 years ago

ADR occurs after 20 uplinks.