MKR1310 verbinden met LoRa

Arduino specifieke Software
Berichten: 18
Geregistreerd: 05 Apr 2015, 21:50

MKR1310 verbinden met LoRa

Berichtdoor janvb » 18 Jan 2020, 12:16

Ik kocht een Arduino MKR 1310 om te kunnen connecten met het LoRa-netwerk. Om zeker te zijn dat de afstand tussen de MKR 1310 en een LoRa toegangspunt niet te groot zou zijn, heb ik ook bij mij thuis een indoor toegangspunt geplaatst. ( Dragino LG02 )

Als de Arduino MKR 1310 werkt, en ik inlog bij mijn account op het LoRa-netwerk,, dan zie ik dat de Arduino data verstuurd. Daaruit kan ik concluderen dat het toegangspunt werkt, en dat het Lora netwerk data ontvangt.

Maar de schetch op de Arduino geeft steeds deze melding : Something went wrong; are you indoor? Move near a window and retry


Uiteraard zijn zowel in de Arduino software als in LoRa de appEui-code en de appKey-code identiek.

Ik gebruik een standaard stukje software dat je terugvindt in de voorbeeld-bibliotheek :

Code: Alles selecteren
/*
  Lora Send And Receive
  This sketch demonstrates how to send and receive data with the MKR WAN 1300 LoRa module.
  This example code is in the public domain.
*/

#include <MKRWAN.h>

LoRaModem modem;

// Uncomment if using the Murata chip as a module
// LoRaModem modem(Serial1);

#include "arduino_secrets.h"
// Please enter your sensitive data in the Secret tab or arduino_secrets.h
String appEui = SECRET_APP_EUI;
String appKey = SECRET_APP_KEY;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  while (!Serial);
  // change this to your regional band (eg. US915, AS923, ...)
  if (!modem.begin(EU868)) {
    Serial.println("Failed to start module");
    while (1) {}
  };
  Serial.print("Your module version is: ");
  Serial.println(modem.version());
  Serial.print("Your device EUI is: ");
  Serial.println(modem.deviceEUI());

  int connected = modem.joinOTAA(appEui, appKey);
  if (!connected) {
    Serial.println("Something went wrong; are you indoor? Move near a window and retry");
    while (1) {}
  }

  // Set poll interval to 60 secs.
  modem.minPollInterval(60);
  // NOTE: independently by this setting the modem will
  // not allow to send more than one message every 2 minutes,
  // this is enforced by firmware and can not be changed.
}

void loop() {
  Serial.println();
  Serial.println("Enter a message to send to network");
  Serial.println("(make sure that end-of-line 'NL' is enabled)");

  while (!Serial.available());
  String msg = Serial.readStringUntil('\n');

  Serial.println();
  Serial.print("Sending: " + msg + " - ");
  for (unsigned int i = 0; i < msg.length(); i++) {
    Serial.print(msg[i] >> 4, HEX);
    Serial.print(msg[i] & 0xF, HEX);
    Serial.print(" ");
  }
  Serial.println();

  int err;
  modem.beginPacket();
  modem.print(msg);
  err = modem.endPacket(true);
  if (err > 0) {
    Serial.println("Message sent correctly!");
  } else {
    Serial.println("Error sending message :(");
    Serial.println("(you may send a limited amount of messages per minute, depending on the signal strength");
    Serial.println("it may vary from 1 message every couple of seconds to 1 message every minute)");
  }
  delay(1000);
  if (!modem.available()) {
    Serial.println("No downlink message received at this time.");
    return;
  }
  char rcv[64];
  int i = 0;
  while (modem.available()) {
    rcv[i++] = (char)modem.read();
  }
  Serial.print("Received: ");
  for (unsigned int j = 0; j < i; j++) {
    Serial.print(rcv[j] >> 4, HEX);
    Serial.print(rcv[j] & 0xF, HEX);
    Serial.print(" ");
  }
  Serial.println();
}


Mijn vraag is dus, waarom werkt dit niet ? Wat doe ik fout ? Heb ik iets over het hoofd gezien ? Dank voor jullie hulp.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: MKR1310 verbinden met LoRa

Berichtdoor Koepel » 18 Jan 2020, 14:27

Dit is je board: https://store.arduino.cc/mkr-wan-1310.
Ik zie het bij Antratek: https://www.antratek.nl/arduino-mkr-wan-1310-lora.
En bij Kiwi-Elektronics: https://www.kiwi-electronics.nl/arduino-mkr-wan-1300-with-ufl-connector.

De functie modem.joinOTAA() zet de keys en stuurt dan het AT commando "+JOIN". Dat mislukt.
https://github.com/arduino-libraries/MKRWAN/blob/master/src/MKRWAN.h.
Het aanmelden bij het netwerk wordt door de LoRa module gedaan, daar kun je zelf weinig aan doen in je sketch. Als de keys kloppen en het is beschikbaar dan kun je alleen maar hopen dat het lukt om je aan te melden.

Kijk eens bij de issues, heeft dit er mee te maken: https://github.com/arduino-libraries/MKRWAN/issues/73 ?
Is er nieuwe firmware voor de LoRa module ?

Ik ben niet bekend met LoRa en het is me niet duidelijk wat er nu wel werkt en wat niet.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: MKR1310 verbinden met LoRa

Berichtdoor shooter » 18 Jan 2020, 14:31

zit er een antenne op en hoe groot is de afstand?
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: MKR1310 verbinden met LoRa

Berichtdoor nicoverduin » 18 Jan 2020, 16:25

Volgens mij zit de gateway op een (1) frequentie te luisteren. Als de LoRaNode op die frequentie verstuurd dan komt dat ook goed binnen bij de gateway. Echter de node wisselt (als het goed is) de frequentie elke keer dus krijg je veel Nacks. Soms komt het door en soms dus niet. Om volledig te testen moet je dus een echte Gateway selecteren. Toen ik nog met de 1276SX zat te testen een jaartje of wat geleden, haalde ik 1.5km met de antenne (gewoon zo'n opschroef ding) en een in de auto. Dus in huis zal het wel werken tenzij het allemaal metalen containers zijn.

Lora werkt als volgt:
Gateway
Deze luistert tegelijkertijd op een stuk of 8 frequenties. Dus als een bericht op een van deze frequenties stuurt komt die gewoon binnen

LoRaNode
Deze stuurt at-random op een van de 8(kunnen er ook wat meer zijn) frequenties. Dus de ene keer op bijv. 868,1 Mhz en dan weer op 868,3Mhz. Een echte gateway vangt dat wel op. In dit geval als de Gateway luistert op een enkele frequentie (welke is mij ff niet bekend) dan moet de node dat ook doen. ik weet bij de 1276SX dat ik dat toen kop opgeven. Van die MKR 1300 weet ik het niet.

mogelijk helpt dit je iets verder : https://github.com/sandeepmistry/arduino-LoRa
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 18
Geregistreerd: 05 Apr 2015, 21:50

Re: MKR1310 verbinden met LoRa

Berichtdoor janvb » 23 Jan 2020, 12:54

Dank voor jullie opmerkingen.
De afstand tussen het Arduino board en de gateway is welgeteld enkele meters, dus dat kan ook werken zonder antenne. Maar daar ligt het niet aan.

Mijn kennis in deze zaak is ondermaats. Maar ik kan wel enkele conclusies trekken :

De software in de Arduino is een standaard voorbeeld. Daarin moet je enkel je APP-EUI en je APP-KEY wijzigen. Dit moet overeenkomen met datgene wat in je Device is ingebakken in het TTN netwerk. Dat komt overeen. Zonder gateway zou het moeten werken, maar mijn locatie is te ver van een LoRa toegangspunt, anders zou het wel werken. Daaruit concludeer ik dat het door mij geplaatste toegangspunt niet werkt. Als ik even ga googelen dan kan ik dat ook vaststellen. Een Dragino LG02 is niet geschikt voor dit werk. ( schrijven ze ). Ik overweeg dan ook om gewoon een andere gateway (indoor) te kopen. Natuurlijk wil ik wel de juiste gateway, aan een betaalbare prijs kopen. Hebben jullie een suggestie ? Dank.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: MKR1310 verbinden met LoRa

Berichtdoor nicoverduin » 26 Jan 2020, 13:12

jouw toegangspunt werkt wel maar alleen op een enkele frequentie. Je zegt zelf dat er data binnenkomt op TTN. Maar dan alleen op die enkele frequentie. De overigen niet omdat jouw gateway die niet ontvangt en krijgt de node een timeout error omdat de gateway niet reageert.
Dus of je zoekt uit op welke frequentie de gateway luistert en stelt de MKR1300 daarop in (en je bent niet de eerste op het web met deze vraag) en wordt het een single channel gateway met single channel Node of je koopt een gateway die op alle kanalen luistert op de specifieke frequentie (in Europa 868Mhz). Denk bijv aan de LPS8 van dragino.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 18
Geregistreerd: 05 Apr 2015, 21:50

Re: MKR1310 verbinden met LoRa

Berichtdoor janvb » 26 Jan 2020, 21:14

Hoi Nico,

Dank voor je heldere uitleg. Ik heb ondertussen een 8 kanaals gateway gekocht. Die ga ik in de komende dagen testen.


Dank voor jouw hulp

Berichten: 18
Geregistreerd: 05 Apr 2015, 21:50

Re: MKR1310 verbinden met LoRa

Berichtdoor janvb » 29 Feb 2020, 11:28

Met deze gateway werkt het prima:

https://www.antratek.be/the-things-indoor-gateway?gclid=Cj0KCQiAtOjyBRC0ARIsAIpJyGM51qMPTkaM980YdaH2QXJ93Dheamm4eGfXGHkhzQBj6JhcmS5Gdo8aAkF0EALw_wcB

Ik heb ondertussen een DHT 11 sensor aangesloten op het MKR 1310 board, en de temperatuurwaarden en de vochtigheidswaarden komen netjes aan in het TTN netwerk, hetzij dan wel in een Hexadecimale notitie. Een stapje verder. Maar ik wil deze data visualiseren in een browser. Niet alleen op één enkele pc, maar ook op externe computers.

Mijn volgende vraag is dus, hoe kan ik dit doen ? Welke software kan je het best hiervoor benutten om de Hexadecimale waardes om te toveren in leesbare tekst / grafieken ?

Dank voor jullie hulp.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: MKR1310 verbinden met LoRa

Berichtdoor nicoverduin » 29 Feb 2020, 12:46

Je stuurt ze nu hexadecimaal weg dus klopt het. Je kan natuurlijk ook as als ascii wegsturen maar dan zit je gauw aan je 32bytes max lengte. Alternatief is om bijv een javascript functie te schrijven in jouw web pagina die de waardes op splitst in losse variabelen en die gebruiken in de web pagina.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 22 gasten