TTN Example
TTN Example
TTN Example
ino
maandag 21 augustus 2017 8:46
#include <TinyGPS.h>
#include <LoRaWan.h>
TinyGPS gps;
char memBuffer[256];
char packetBuffer[51];
#define DEBUG 1
void setup(void)
{
if (DEBUG) {
SerialUSB.begin(115200);
// while(!SerialUSB);
}
Serial.begin(9600);
lora.init();
if (DEBUG) {
memset(memBuffer, 0, 256);
lora.getVersion(memBuffer, 256, 1);
SerialUSB.print(memBuffer);
}
if (DEBUG) {
memset(memBuffer, 0, 256);
lora.getId(memBuffer, 256, 1);
SerialUSB.print(memBuffer);
}
lora.setId(devAddr,DevEUI,AppEUI);
if (DEBUG) {
-1-
D:\Mijn Documenten\01. Commint\13. Ontwikkelingsprojecten\43, Seeeduino\SW\Implementaties\GPS\ABP-ttn-gps-0.2b-test\ABP-ttn-gps-0.2b-test.ino
maandag 21 augustus 2017 8:46
SerialUSB.println();
}
lora.setReceiceWindowFirst(1);
//lora.setReceiceWindowSecond(869.525, DR3);
// Set RXwin2
memset(memBuffer, 0, 256);
SerialLoRa.print("AT+RXWIN2=869.525,DR3\r\n");
if (DEBUG) {
SerialUSB.print(memBuffer);
}
lora.setPower(LoraPower);
lora.setDeciveMode(LoraDeviceMode);
lora.setDataRate(LoraDataRate, EU868);
lora.setPort(LoraPort);
if (DEBUG) {
SerialUSB.println("Setup completed");
}
}
void loop(void)
{
packetString = get_gpsdata();
if (DEBUG) {
SerialUSB.println(packetString);
}
int strLength = packetString.length() + 1;
packetString.toCharArray(packetBuffer, strLength);
if (DEBUG) {
SerialUSB.println("Start transmission");
}
memset(memBuffer, 0, 256);
length = lora.receivePacket(memBuffer, 256, &rssi);
if (DEBUG) {
if(length)
{
SerialUSB.print("Length is: ");
SerialUSB.println(length);
-2-
D:\Mijn Documenten\01. Commint\13. Ontwikkelingsprojecten\43, Seeeduino\SW\Implementaties\GPS\ABP-ttn-gps-0.2b-test\ABP-ttn-gps-0.2b-test.ino
maandag 21 augustus 2017 8:46
SerialUSB.print("RSSI is: ");
SerialUSB.println(rssi);
SerialUSB.print("Data is: ");
for(unsigned char i = 0; i < length; i ++)
{
SerialUSB.print("0x");
SerialUSB.print(memBuffer[i], HEX);
SerialUSB.print(" ");
}
SerialUSB.println();
}
}
}
delay(120*1000);
}
String get_gpsdata() {
bool newData = false;
String returnString = "";
float flat, flon;
unsigned long age;
// For one second we parse GPS data and report some key values
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (Serial.available())
{
char c = Serial.read();
// Serial.write(c); // uncomment this line if you want to see the GPS data flowing
if (gps.encode(c)) // Did a new valid sentence come in?
newData = true;
}
}
if (newData)
{
gps.f_get_position(&flat, &flon, &age);
returnString = "LAT=";
returnString += String(flat,6);
returnString += " LON=";
returnString += String(flon,6);
returnString += " SAT=";
returnString += String(gps.satellites());
returnString += " PREC=";
returnString += String(gps.hdop());
returnString += " AGE=";
returnString += String(age);
} else {
returnString = "NO GPS data available!";
}
return returnString;
}
-3-