Arduino mkrwan 1310 con libreria arduino-LoRa

Buongiorno a tutti,
sto cercando un modo per far comunicare l'arduino mkrwan 1310 direttamente ad un arduino Uno con dragino LoRa shield (con chip Semtech SX1276), tramite la libreria GitHub - sandeepmistry/arduino-LoRa: An Arduino library for sending and receiving data using LoRa radios.
usando gli esempi di default sia per il sender (mkrwan 1310) che per il receiver (arduino + dragino shield);
Vi spiego il problema, leggendo su altri forum mi pare di capire che per far funzionare correttamente l'mkr è necessario assegnare i pin corretti del chip the Murata CMWX1ZZABZ LoRa®
Dalla scheda fornita sembra che i pin siano i seguenti:


di conseguenza ho provato ad utilizzare il seguente sketch:

#include <SPI.h>              // include libraries
#include <LoRa.h>

const int csPin = 23;          // LoRa radio chip select
const int resetPin = 39;       // LoRa radio reset
const int irqPin = 41;         // change for your board; must be a hardware interrupt pin

byte msgCount = 0;            // count of outgoing messages
int interval = 5000;          // interval between sends
long lastSendTime = 0;        // time of last packet send


void setup() {
  Serial.begin(9600);                   // initialize serial
  while (!Serial);

  Serial.println("LoRa Duplex - Set spreading factor");

  // override the default CS, reset, and IRQ pins (optional)

  LoRa.setPins(csPin, resetPin, irqPin); // set CS, reset, IRQ pin
  if (!LoRa.begin(868E6)) {             // initialize ratio at 915 MHz
    Serial.println("LoRa init failed. Check your connections.");
    while (true);                       // if failed, do nothing
  }

  LoRa.setSpreadingFactor(8);           // ranges from 6-12,default 7 see API docs
  Serial.println("LoRa init succeeded.");
}

void loop() {
  if (millis() - lastSendTime > interval) {
    String message = "HeLoRa World! ";   // send a message
    message += msgCount;
    sendMessage(message);
    Serial.println("Sending " + message);
    lastSendTime = millis();            // timestamp the message
    interval = random(2000) + 1000;    // 2-3 seconds
    msgCount++;
  }
}

void sendMessage(String outgoing) {
  LoRa.beginPacket();                   // start packet
  LoRa.print(outgoing);                 // add payload
  LoRa.endPacket();                     // finish packet and send it
  msgCount++;                           // increment message ID
}

Purtroppo stampo sul serial monitor:
LoRa init failed. Check your connections.

No, no nid, ha perfettamente senso, è un numero in notazione scientifica ed indica 868 x 106 :wink:

E' caso mai il commento che non è stato aggiornato, quella è la frequenza LoRa degli 868 MHz (banda Europea).

Guglielmo

Per non confonderlo con numero esa sarebbe meglio scriverlo 868e6

Credo che il cuore del problema sia questo, di default la libreria utilizza questa config:

#define LORA_DEFAULT_SS_PIN        10
#define LORA_DEFAULT_RESET_PIN     9
#define LORA_DEFAULT_DIO0_PIN      2

Funziona perfettamente su comunicazione diretta delle shield con chip sx1276 LoRa (testato anche con ESP32 LoRa), Siccome sono fedele alla casa, vorrei utilizzare l'mkr se possibile :roll_eyes:
allego il datasheet con Mappatura;
MKRWAN1310V3.0_sch.pdf (1.5 MB)

Per quanto riguarda il resto dello sketch è solo un example poco modificato :grinning_face_with_smiling_eyes:

Chiedo scusa per la forma del (!LoRa.begin(868E6) ma l'ho sempre scritto in questo modo e fino ad ora ha funzionato correttamente in altri test con questo protocollo.

Sto facendo dei test disabilitando la Serial.begin(9600); e tutti i Serial.print sembra che stia rispondendo bene. E' possibile che il modulo LoRa interferisca con la Serial port della Usb?

No è solo questione di lettura del codice, a prima vista con la E maiuscola sembrava un numero esadecimale scritto male. Di solito i numeri in notazione scientifica hanno la e minuscola e i numeri in esa le lettere in maiuscolo. Tutto qui.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.