Go Down

Topic: LoRa et SX1278 (Read 2495 times) previous topic - next topic

J4l13n

Bonjour,

J'essaye de faire communiquer avec les exemples de la bibliothèque :
https://github.com/sandeepmistry/arduino-LoRa


Une paire d'Arduino UNO et des SV1278.

j'utilise le code exemple pour le "sender":
(j'ai rajouter la Led pour avoir un oeil sur la boucle car il est brancher sans le moniteur).
Code: [Select]
#include <SPI.h>
#include <LoRa.h>

int Led13=4;
int counter = 0;

void setup() {
  pinMode (Led13,OUTPUT);
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Sender");

  if (!LoRa.begin(915E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  digitalWrite(Led13,0);
}

void loop() {
  //Serial.print("Sending packet: ");
  //Serial.println(counter);
   counter++;
  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
 
  digitalWrite(Led13,1);
  delay(100);
  digitalWrite(Led13,0);

 
  delay(1000);
}


et le code "récepteur" :
Code: [Select]
#include <SPI.h>
#include <LoRa.h>

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

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(915E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}


Il y a peut être un soucis sur le branchement :
Le SV1278 :

L'arduino UNO :


Mon branchement :

SV1278       Uno
VCC       --> 3.3V ( ils ont tjrs été branché en 3V3.)
GND       --> GND
NSS       --> Pin10
MOSI     --> Pin 11
MISO     --> Pin12
SCK       --> Pin13
DI0        --> Pin2
RESET    -->Pin9


Le transmetteur ne fonctionne pas  la led ne clignote pas et n'envoie rien ...
Les 2 Arduino fonctionne sur d'autre sketch.

Une idée ?

Cordialement Julien 

al1fch

#1
Oct 28, 2018, 07:17 pm Last Edit: Mar 22, 2019, 01:05 pm by al1fch
Bonsoir

2 pcs RF LoRa module SX1278 puce PM1280 Long-Distance communication Récepteur et Émetteur SPI LORA IOT + 2 pcs 433 mhz antenne

1)Fréquence : le vendueur indique 433 MHz comme fréquence pour ces modules LoRa (ça correspond aux capacoités d'un SX1278  ne pas laisser telle quelle la ligne qui les initialise à 915 MHz !!

Code: [Select]
if (!LoRa.begin(915E6)) {
remplacer 915E6 par 433E6 !!
(915MHZ c'est pour des SX1876 utilisés de l'autre côte de l'Atlantique)

2) Niveaux de tension  : le module a été alimenté en 3,3V OK,  mais supporte-t-il des tensions de 5V sur ses entrées de signaux numériques (SPI et autres si besoin)? Une adaptation de niveaux de tension 5V -> 3,3V n'est elle pas nécessaire ? cette adaptation est peut être effectué sur le module... son schéma lèverait le doute

Sur la page du vendeur et avec une traduction "à la Aliexpress" on lit une phrase qui pourrait signifier qu'il faut 'faire quelquechose' si le MCU 'Arduino) est en 5V et ne pas relier directement les signaux sortant[/b] de l'Arduino aux entrees du module
Quote
5. si l'alimentation de MCU est 3.3 v, il peut se connecter avec module sans série résistance; si l'alimentation de MCU est 5 v, 3.3 v/5 v niveau de commutation circuit devrait être consulté
Doc des SX1276/77/78/79 de Semtech

al1fch

#2
Oct 28, 2018, 07:45 pm Last Edit: Oct 28, 2018, 08:02 pm by al1fch
Des informations simportantes figurent dans le fichoier readme.md de la librairie LoRa de Sandeep Mistry
elles concernent :

  • Reset nécessaire, DIO0 optionnel
  • L'adaptation 5V/3,3V pour les signaux envoyés au SX1278, absente sur ceratins modules.
  • le courant dont le SX peut avoir besoin en émission (120mA)

Code: [Select]
### Semtech SX1276/77/78/79 wiring

| Semtech SX1276/77/78/79 | Arduino |
| :---------------------: | :------:|
| VCC | 3.3V |
| GND | GND |
| SCK | SCK |
| MISO | MISO |
| MOSI | MOSI |
| NSS | 10 |
| NRESET | 9 |
| DIO0 | 2 |


`NSS`, `NRESET`, and `DIO0` pins can be changed by using `LoRa.setPins(ss, reset, dio0)`. `DIO0` pin is optional, it is only needed for receive callback mode. If `DIO0` pin is used, it **must** be interrupt capable via [`attachInterrupt(...)`](https://www.arduino.cc/en/Reference/AttachInterrupt).

**NOTES**:
 * Some boards (like the Arduino Nano), cannot supply enough current for the SX127x in TX mode. This will cause lockups when sending, be sure to use an external 3.3V supply that can provide at least 120mA's when using these boards.
 * If your Arduino board operates at 5V, like the Arduino Uno, Leonardo or Mega, you will need to use a level converter for the wiring to the Semtech SX127x module. Most Semtech SX127x breakout boards do not have logic level converters built-in.




J4l13n

#3
Oct 28, 2018, 08:32 pm Last Edit: Oct 28, 2018, 08:37 pm by J4l13n
Bonsoir al1fch !


1)Fréquence : le vendueur indique 433 MHz comme fréquence pour ces modules LoRa (ça correspond aux capacoités d'un SX1278  ne pas laisser telle quelle la ligne qui les initialise à 915 MHz !!
if (!LoRa.begin(915E6)) {
remplacer 915E6 par 433E6 !!
(915MHZ c'est pour des SX1876 utilisés de l'autre côte de l'Atlantique)

Thx  M'sieur...

ça fonctionne parfaitement :)

je m'était demander à quoi correspondait le 915E6 ....


Par contre peut-on les "coupler" ensemble?
afin que le récepteurs lui seul reçoivent les données du sender ?

Merci encore... et  bonne soirée

 


Artouste

Bonsoir al1fch !


Thx  M'sieur...

ça fonctionne parfaitement :)

je m'était demander à quoi correspondait le 915E6 ....


Par contre peut-on les "coupler" ensemble?
afin que le récepteurs lui seul reçoivent les données du sender ?

Merci encore... et  bonne soirée

 


Bonsoir
433E6 est la frequence que tu choisi  c'est un long = là à 433000000 Hz = 433 MHz
tu peux choisir  une autre frequence avec un pas de 65Hz il me semble (à verifier dans le datasheet )
evite les frequences chargées comm 43392000 par exemple

al1fch

#5
Oct 28, 2018, 09:07 pm Last Edit: Oct 28, 2018, 09:13 pm by al1fch
Quote
Par contre peut-on les "coupler" ensemble?
afin que le récepteurs lui seul reçoivent les données du sender ?
peut être quelquechose dans ce sens avec la fonction setSyncWord()

voir l'exemple qui utilise cette fonctionalité qui permettrait de particulariser une émission etainsi ne ne pas permettre a tous les modules de rececoir les données.

Après il ya toujours la possiblilité d'ajouter un cryptage perso par dessus la couche Lora

J4l13n

#6
Oct 28, 2018, 09:51 pm Last Edit: Oct 28, 2018, 10:14 pm by J4l13n
j'ai tester :
Code: [Select]
  LoRa.setSyncWord(0xF3);           // ranges from 0-0xFF, default 0x34,
Mais qques trames sont lu par le récepteur.

Mais je vais crypter par dessus la couche LoRa vous avez raison.


J4l13n

#7
Oct 29, 2018, 12:33 am Last Edit: Oct 29, 2018, 12:43 am by J4l13n
Je tente maintenant de faire afficher le "hello" et le compteur sur un lcd monter sur le recepteur

Code: [Select]

#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {
  lcd.begin(16,2) ;
  lcd.backlight() ;
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {

    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      lcd.setCursor(4,0) ;
      lcd.print((char)LoRa.read());
    }

    // print RSSI of packet
      lcd.setCursor(0,1);
      lcd.print("'RSSI :");
      lcd.print(LoRa.packetRssi());
  }
}


le RSSI et sa valeur s'affiche mais pas le hello et le counter

Une idée ?

J4l13n

Bonjour,

J'ai fait quelques essais du genre :
Code: [Select]
// read packet
    while (LoRa.available()) {
     //lcd.clear();
     String reception =(String)LoRa.read();
      lcd.setCursor(4,0) ;
      //lcd.print((String)LoRa.read());
      lcd.print(reception);
    }


sans succes..

je pense qu'il faut faire un string ou un char de la lecture de LoRa.read();

Bizzare que sur le serial ça ce fait facilement et que sur le lcd il faut faire une pirouette

une idée ?

J4l13n

Bon j'ai réussi avec une boucle for en incrémentant les lignes du lcd :)

Prochaine étape augmenter la portée de l'émetteur.

pomme-poire

bonjour,

Quelle distance à tu atteintes avec ton système ?

Arzou

J4l13n,

Il fonctionne ?
Tu pourrais mettre une photo de ton montage?

Merci
"Si vous voulez juste marcher vite, marchez seul! Mais si vous voulez marcher loin, marchez ensemble!"
Proverbe Africain.

Go Up