[Notes d'étude ESP32 les plus complètes (protocole) - 2.ESP32 LoRa]

À propos de ce tutoriel :

Les bases de l'ESP32                                

1. Introduction à ESP32                                                                

2. Environnement de développement intégré ESP32 Arduino

3. VS Code et PlatformIO

4. Broches ESP32

5. Entrée et sortie ESP32

6. Modulation de largeur d'impulsion ESP32

7. Entrée analogique ESP32

8. Minuterie d'interruption ESP32

9 .ESP32 sommeil profond

Protocole ESP32

1. Serveur Web ESP32

2.ESP32LoRa

3. ESP32 BLE

4.ESP32 client-serveur BLE

5. Bluetooth ESP32

6.ESP32 MQTT

7.ESP32 ESP-MAINTENANT

8. Wi-Fi ESP32

9.ESP32 WebSocket

10.ESP32 ESP-MESH

11. Boîte aux lettres ESP32

12.SMS ESP32

13. ESP32 HTTP obtenir POST

14. API Web HTTP GET

15. API Web HTTP POST

 Articles sur le serveur ESP32

Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !

 Module de capteur ESP32

Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !

Combat ultime ESP32

Plus de 100 projets pratiques ESP32, faites attention ! ! !

ESP32 Utilisation de l'IDE Arduino et de LoRa - Mise en route

Dans ce didacticiel, nous allons explorer les principes de base de LoRa et comment l'utiliser avec l'ESP32 pour les projets IoT à l'aide de l'IDE Arduino. Pour vous aider à démarrer, nous vous montrerons également comment créer un émetteur et un récepteur LoRa simples à l'aide du module émetteur-récepteur RFM95.

Qu'est-ce que LoRa ?

LoRa est une technologie de communication de données sans fil qui utilise des techniques de modulation radio qui peuvent être générées par les puces d'émetteur-récepteur Semtech LoRa.

Cette technique de modulation permet la communication à longue portée de petites quantités de données (ce qui signifie une faible bande passante), une grande immunité aux interférences, tout en minimisant la consommation d'énergie. Ainsi, il permet une communication longue distance avec de faibles besoins en énergie.

Fréquence LoRa

LoRa utilise des fréquences sans licence disponibles dans le monde entier. Voici les fréquences les plus utilisées :

  • Europe 868MHz
  • Amérique du Nord 915 MHz
  • Bande Asie 433 MHz

Application LoRa

Les caractéristiques longue portée et basse consommation de LoRa le rendent idéal pour les capteurs alimentés par batterie et les applications basse consommation :

  • Internet des objets (IdO)
  • Maison intelligente
  • communication de machine à machine
  • et plus...

Par conséquent, LoRa est un bon choix pour fonctionner sur une batterie à bobine ou un nœud de capteur à énergie solaire, transmettant de petites quantités de données.

Gardez à l'esprit que LoRa ne convient pas aux projets suivants :

  • Une transmission à haut débit de données est requise ;
  • nécessitent des transferts très fréquents ;
  • Ou dans un réseau densément peuplé.

Topologie LoRa

Vous pouvez utiliser LoRa des manières suivantes :

 

  • communication entre pairs
  • Ou construisez un réseau LoRa (prenez LoRaWAN comme exemple)

communication entre pairs

Dans la communication peer-to-peer, deux appareils compatibles LoRa communiquent entre eux à l'aide de signaux de radiofréquence.

Ceci est utile, par exemple, pour l'échange de données entre deux cartes ESP32 équipées de puces d'émission-réception LoRa, qui sont éloignées l'une de l'autre ou dans des environnements sans couverture Wi-Fi.

Contrairement au Wi-Fi ou au Bluetooth, qui ne prennent en charge que la communication à courte portée, deux appareils LoRa avec des antennes appropriées peuvent échanger des données sur de longues distances.

Vous pouvez facilement configurer votre ESP32 avec une puce LoRa pour transmettre et recevoir des données de manière fiable à des distances de plus de 200 mètres (vous pouvez obtenir de meilleurs résultats en fonction de votre environnement et des paramètres LoRa). Il existe d'autres solutions LoRa qui peuvent facilement atteindre une portée de plus de 30 kilomètres.

LoRaWAN

Vous pouvez également utiliser LoRaWAN pour créer un réseau LoRa.

 Le protocole LoRaWAN est une spécification LPWAN (Low Power Wide Area Network) dérivée de la technologie LoRa standardisée par la LoRa Alliance. Nous n'explorerons pas LoRaWAN dans ce didacticiel, mais pour plus d'informations, vous pouvez consulter les sites Web LoRa Alliance et The Things Network.

Comment LoRa peut-il jouer un rôle dans votre projet domotique ?

Regardons une application pratique.

Imaginez que vous vouliez mesurer l'humidité dans un champ. Bien qu'il ne soit pas loin de chez vous, il n'a probablement pas de couverture Wi-Fi. Vous pouvez donc construire un nœud de capteur avec un ESP32 et un capteur d'humidité qui envoie les relevés d'humidité une ou deux fois par jour à un autre ESP32 en utilisant LoRa .

 Plus tard, les ESP32 ont accès au Wi-Fi, qui peut exécuter un serveur Web qui affiche les relevés d'humidité.

 Ceci est juste un exemple pour montrer comment utiliser la technologie LoRa dans le projet ESP32.

ESP32 et LoRa

Dans cette section, nous allons vous montrer comment commencer à utiliser LoRa avec ESP32 en utilisant Arduino IDE. Par exemple, nous allons construire un simple émetteur LoRa et un récepteur LoRa.

L'émetteur LoRa enverra un message "hello" suivi d'un compteur à des fins de test. Ce message peut facilement être remplacé par des données utiles, telles que des lectures de capteurs ou des notifications.

Pour remplir cette section, vous avez besoin des composants suivants :

2x ESP32 DOIT DEVKIT V1 Development Board
2x LoRa Transceiver Module (RFM95)
RFM95 LoRa Breakout Board (Facultatif)
Jumper
Wires Breadboard ou Strip Board
Facultatif: 2x TTGO LoRa32 SX1276 OLED

Préparer l'IDE Arduino

L'IDE Arduino dispose d'un module complémentaire qui vous permet de programmer l'ESP32 à l'aide de l'IDE Arduino et de son langage de programmation. Si vous n'avez pas l'IDE Arduino prêt à utiliser l'ESP32, suivez-le.

Installer la bibliothèque LoRa

Il existe plusieurs bibliothèques disponibles pour envoyer et recevoir facilement des paquets LoRa à l'aide d'ESP32. Dans cet exemple, nous utiliserons la bibliothèque arduino-LoRa de sandeep mistry .

Ouvrez votre IDE Arduino, allez dans Sketch  >  Include Library  >  Manage Libraries et recherchez «  LoRa  ». Sélectionnez la bibliothèque LoRa mise en évidence dans l'image ci-dessous et installez-la.

Obtenez le module émetteur-récepteur LoRa

Pour envoyer et recevoir des messages LoRa à l'aide d'ESP32, nous utiliserons  le module émetteur-récepteur RFM95, le module émetteur-récepteur RFM95, le module émetteur-récepteur RFM95 . Tous les modules LoRa sont des émetteurs-récepteurs, ce qui signifie qu'ils peuvent envoyer et recevoir des informations. Il vous en faut 2.

Vous pouvez également utiliser d'autres modules compatibles tels que les cartes à base de Semtech SX1276/77/78/79 notamment : RFM96W, RFM98W etc...

Préparer le module émetteur-récepteur RFM95

Si vous avez une carte de développement ESP32 avec LoRa intégré, vous pouvez ignorer cette étape.

Les émetteurs-récepteurs RFM95 ne conviennent pas aux maquettes. Une rangée de broches d'en-tête régulières de 2,54 mm ne rentre pas dans une broche d'émetteur-récepteur. L'espace entre les connexions est plus court que d'habitude.

Plusieurs options sont disponibles pour accéder aux broches de l'émetteur-récepteur.

  • Vous pouvez souder certains fils directement sur l'émetteur-récepteur ;
  • Déconnectez les broches d'en-tête et soudez chacune individuellement ;
  • Ou vous pouvez acheter une carte de dérivation pour la rendre plus conviviale.

Nous avons soudé les en-têtes au module comme indiqué dans l'image ci-dessous.

De cette façon, vous pouvez utiliser des fils de connexion réguliers pour accéder aux broches du module, et même placer des broches d'en-tête pour les connecter directement à un stripboard ou à une planche à pain.

antenne

La puce d'émetteur-récepteur RFM95 nécessite une antenne externe connectée à la broche ANA.

Vous pouvez soit brancher une "vraie" antenne, soit en fabriquer une vous-même en utilisant du fil comme indiqué dans l'image ci-dessous. Certaines cartes de dérivation sont livrées avec un connecteur spécial pour ajouter une antenne appropriée.

La longueur du fil dépend de la fréquence :

  • 868 MHz : 86,3 mm (3,4 pouces)
  • 915 MHz : 81,9 mm (3,22 pouces)
  • 433 MHz : 173,1 mm (6,8 pouces)

Pour notre module, nous devons utiliser des fils de 86,3 mm soudés directement aux broches ANA de l'émetteur-récepteur. Notez que l'utilisation d'une antenne appropriée augmentera la portée de communication.

REMARQUE IMPORTANTE : Vous devez connecter l'antenne au module.

Connecter le module émetteur-récepteur RFM95 LoRa

Le module émetteur-récepteur RFM95 LoRa utilise le protocole de communication SPI pour communiquer avec ESP32. Par conséquent, nous utiliserons les broches SPI par défaut de l'ESP32. Connectez les deux cartes ESP32 aux modules émetteurs-récepteurs correspondants comme indiqué dans le schéma suivant :

Voici la connexion entre le module émetteur-récepteur RFM95 LoRa et ESP32 :

  • ANA : Antenne
  • GND:GND
  • DIO3 : pas de connexion
  • DIO4 : pas de connexion
  • 3,3 V :  3,3 V
  • DIO0 :   GPIO 2
  • DIO1 : non connecté
  • DIO2 : non connecté
  • GND : non connecté
  • DIO5 : non connecté
  • RÉINITIALISER : GPIO 14
  • NSS : GPIO 5
  • SCK : GPIO 18
  • MOSI : GPIO 23
  • MISO : GPIO 19
  • GND : non connecté

Remarque :  Le module émetteur-récepteur RFM95 possède 3 broches GND. Peu importe celui que vous utilisez, mais vous avez besoin d'au moins un connecté.

    

Pour des raisons pratiques, nous avons réalisé ce circuit sur des lattes. Il est plus facile à manipuler et les fils ne se cassent pas. Vous pouvez utiliser une planche à pain si vous préférez.

Code émetteur LoRa

Ouvrez votre IDE Arduino et copiez le code suivant. Cette esquisse est basée sur l'exemple de la bibliothèque LoRa. Il utilise LoRa pour transmettre un message toutes les 10 secondes. Il envoie un "bonjour" suivi d'un nombre qui est incrémenté à chaque message.

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

//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2

int counter = 0;

void setup() {
  //initialize Serial Monitor
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Sender");

  //setup LoRa transceiver module
  LoRa.setPins(ss, rst, dio0);
  
  //replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    Serial.println(".");
    delay(500);
  }
   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing OK!");
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  //Send LoRa packet to receiver
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(10000);
}

Jetons un coup d'œil rapide au code.

Il inclut d'abord les bibliothèques requises.

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

Ensuite, définissez les broches utilisées par le module LoRa. Si vous avez suivi le schéma précédent, vous pouvez utiliser les définitions de broches utilisées dans le code. Si vous utilisez une carte ESP32 avec LoRa intégré, veuillez vérifier les broches utilisées par le module LoRa dans la carte et faire l'affectation correcte des broches.

#define ss 5
#define rst 14
#define dio0 2

Vous initialisez la variable compteur à partir de 0 ;

int counter = 0;

Dans setup() , vous initialisez la communication série.

Serial.begin(115200);
while (!Serial);

Définissez les broches du module LoRa.

LoRa.setPins(ss, rst, dio0);

Et initialisez le module émetteur-récepteur avec la fréquence spécifiée.

while (!LoRa.begin(866E6)) {
  Serial.println(".");
  delay(500);
}

Vous devrez peut-être modifier la fréquence pour qu'elle corresponde à celle utilisée dans votre région. Choisissez l'une des options suivantes :

  • 433E6
  • 866E6
  • 915E6

Le module émetteur-récepteur LoRa écoute les paquets à sa portée. Peu importe d'où viennent les paquets. Pour vous assurer que vous ne recevez que des paquets de l'expéditeur, vous pouvez définir un mot de synchronisation (plage de 0 à 0xFF).

LoRa.setSyncWord(0xF3);

Le destinataire et l'expéditeur doivent utiliser le même mot de synchronisation. De cette façon, le récepteur ignorera tous les paquets LoRa qui ne contiennent pas ce mot de synchronisation.

Ensuite, dans loop() vous envoyez des paquets LoRa. Vous initialisez un paquet avec la méthode beginPacket () .

LoRa.beginPacket();

 Vous utilisez la méthode print() . Comme vous pouvez le voir dans les deux lignes suivantes, nous envoyons un message hello suivi du compteur.

LoRa.print("hello ");
LoRa.print(counter);

 Ensuite, fermez la méthode packet endPacket () .

LoRa.endPacket();

 Ensuite, le message du compteur est incrémenté de 1 dans chaque boucle, qui se produit toutes les 10 secondes.

counter++;
delay(10000);

Tester le code de l'expéditeur

Téléchargez le code sur votre carte ESP32. Assurez-vous que la carte et le port COM corrects sont sélectionnés.

Après cela, ouvrez le moniteur série et appuyez sur le bouton d'activation ESP32. Vous devriez voir un message de réussite, comme illustré dans l'image ci-dessous. Le compteur doit s'incrémenter toutes les 10 secondes.

Code récepteur LoRa

Maintenant, prenez un autre ESP32 et téléchargez le code suivant (code récepteur LoRa). Ce code écoute un paquet LoRa avec un mot de synchronisation que vous définissez et imprime le contenu du paquet sur le moniteur série et RSSI. RSSI mesure la force relative du signal reçu.

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

//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2

void setup() {
  //initialize Serial Monitor
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Receiver");

  //setup LoRa transceiver module
  LoRa.setPins(ss, rst, dio0);
  
  //replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    Serial.println(".");
    delay(500);
  }
   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing OK!");
}

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

    // read packet
    while (LoRa.available()) {
      String LoRaData = LoRa.readString();
      Serial.print(LoRaData); 
    }

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

Ce code est très similaire au précédent. Seul loop() est différent.

Vous devrez peut-être modifier la fréquence et le mot de passe pour qu'ils correspondent à ceux utilisés dans le croquis de l'expéditeur.

À l'intérieur de loop(), le code utilise la méthode parsePacket () .

int packetSize = LoRa.parsePacket();

S'il y a un nouveau paquet, nous lisons son contenu au fur et à mesure qu'il devient disponible.

Pour lire les données entrantes, vous pouvez utiliser la méthode readString () .

while (LoRa.available()) {
  String LoRaData = LoRa.readString();
  Serial.print(LoRaData); 
}

Les données entrantes sont enregistrées dans la variable de données LoRa et imprimées dans le moniteur série.

Enfin, les deux lignes de code suivantes impriment le RSSI du paquet reçu en dB.

Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());

Tester le code du récepteur LoRa

Téléchargez ce code sur votre ESP32. À ce stade, vous devriez avoir deux cartes ESP32 avec des codes différents : émetteur et récepteur.

Ouvrez le moniteur série du récepteur LoRa et appuyez sur le bouton d'activation de l'émetteur LoRa. Vous devriez commencer à recevoir des paquets LoRa sur le récepteur.

Toutes nos félicitations! Vous avez construit un émetteur LoRa et un récepteur LoRa en utilisant ESP32.

plus loin

Vous devez maintenant tester la portée de communication entre l'expéditeur et le destinataire dans votre région. La portée de communication varie considérablement en fonction de votre environnement (si vous vivez dans une zone rurale ou urbaine avec de nombreux immeubles de grande hauteur). Pour tester la portée de communication, vous pouvez ajouter un écran OLED au récepteur LoRa et aller vous promener pour voir jusqu'où vous pouvez communiquer (c'est un sujet pour un futur tutoriel).

 Dans cet exemple, nous envoyons simplement un message d'accueil, mais l'idée est de remplacer ce texte par des informations utiles.

Résumer

En résumé, dans ce tutoriel nous vous avons montré les bases de la technologie LoRa :

  • LoRa est une technologie de modulation radio ;
  • LoRa permet la communication longue distance de petites quantités de données et nécessite une faible consommation d'énergie ;
  • Vous pouvez utiliser LoRa dans une communication ou un réseau peer-to-peer ;
  • LoRa est particulièrement utile si vous souhaitez surveiller des capteurs qui ne sont pas couverts par un réseau Wi-Fi et se trouvent à plusieurs mètres.

Je suppose que tu aimes

Origine blog.csdn.net/m0_46509684/article/details/129372384
conseillé
Classement