/* RadioLib LoRaWAN ABP Example ABP = Activation by Personalisation, an alternative to OTAA (Over the Air Activation). OTAA is preferable. This example joins a LoRaWAN network and will send uplink packets. Before you start, you will have to register your device at https://www.thethingsnetwork.org/ After your device is registered, you can run this example. The device will join the network and start uploading data. LoRaWAN v1.1 requires the use of EEPROM (persistent storage). Running this examples REQUIRES you to check "Resets frame counters" on your LoRaWAN dashboard. Refer to the network's documentation on how to do this. For default module settings, see the wiki page https://github.com/jgromes/RadioLib/wiki/Default-configuration For full API reference, see the GitHub Pages https://jgromes.github.io/RadioLib/ For LoRaWAN details, see the wiki page https://github.com/jgromes/RadioLib/wiki/LoRaWAN */ #include "configABP.h" void setup() { Serial.begin(115200); while (!Serial); delay(5000); // Give time to switch to the serial monitor Serial.println(F("\nSetup ... ")); Serial.println(F("Initalise the radio")); int state = radio.begin(); debug(state != RADIOLIB_ERR_NONE, F("Initalise radio failed"), state, true); Serial.println(F("Initalise LoRaWAN Network credentials")); state = node.beginABP(devAddr, NwkSEncKey, AppSKey, NwkSKey, SNwkSIntKey, true); debug(state < RADIOLIB_ERR_NONE, F("Session setup failed"), state, true); Serial.println(F("Ready!\n")); } void loop() { Serial.println(F("Sending uplink")); // Read some inputs uint8_t Digital1 = digitalRead(2); uint16_t Analog1 = analogRead(A0); // Build payload byte array uint8_t uplinkPayload[3]; uplinkPayload[0] = Digital1; uplinkPayload[1] = highByte(Analog1); // See notes for high/lowByte functions uplinkPayload[2] = lowByte(Analog1); // Perform an uplink int state = node.sendReceive(uplinkPayload, sizeof(uplinkPayload)); debug((state != RADIOLIB_ERR_RX_TIMEOUT) && (state != RADIOLIB_ERR_NONE), F("Error in sendReceive"), state, false); // Wait until next uplink - observing legal & TTN FUP constraints delay(uplinkIntervalSeconds * 1000UL); }