Guide pour connecter un module LoRa à une
Raspberry Pi
École Nationale des Sciences Appliquées - Berrechid
Année universitaire 2024-2025
Introduction
C’est un projet très intéressant et ambitieux ! Je vais te guider étape par étape pour
connecter ton module LoRa à la Raspberry Pi, écrire le code nécessaire, et gérer la
communication entre l’émetteur et le récepteur.
Étape 1 : Connexion du module LoRa à la Raspberry
Pi
Matériel nécessaire
— Module LoRa (par exemple, un module basé sur SX1276 ou SX1278)
— Raspberry Pi (avec GPIO disponibles)
— Câbles de connexion (jumpers)
Connexion physique
1. Alimentation : Connecte la broche VCC du module LoRa à une broche 3.3V
de la Raspberry Pi. La broche GND doit être connectée à une broche GND de la
Raspberry Pi.
2. Communication SPI : Le module LoRa utilise généralement le protocole SPI
pour communiquer avec la Raspberry Pi. Connecte les broches suivantes :
— SCK (Serial Clock) à la broche GPIO 11 (SCLK)
— MISO (Master In Slave Out) à la broche GPIO 9 (MISO)
— MOSI (Master Out Slave In) à la broche GPIO 10 (MOSI)
— NSS (Slave Select) à la broche GPIO 8 (CE0)
— RST (Reset) à une broche GPIO libre (par exemple, GPIO 25)
— DIO0 (Data In/Out 0) à une broche GPIO libre (par exemple, GPIO 24)
1
Université Hassan 1er Projet IoT & IA
Étape 2 : Configuration de la Raspberry Pi pour SPI
Activer SPI
Sur la Raspberry Pi, active l’interface SPI via raspi-config ou en éditant le fichier
/boot/config.txt :
1 sudo raspi - config
Sélectionne ”Interfacing Options” ¿ ”SPI” et active-le.
Installer les bibliothèques nécessaires
Installe la bibliothèque RPi.GPIO et spidev pour gérer les GPIO et la communication
SPI :
1 sudo apt - get update
2 sudo apt - get install python3 - rpi . gpio python3 - spidev
Étape 3 : Écrire le code pour la communication LoRa
Code pour l’émetteur (ESP32)
Tu as déjà configuré l’ESP32 avec le module LoRa. Assure-toi que le code de l’émetteur
envoie les données correctement. Voici un exemple simplifié :
1 # include < SPI .h >
2 # include < LoRa .h >
3
4 void setup () {
5 Serial . begin (9600) ;
6 while (! Serial ) ;
7
8 if (! LoRa . begin (433 E6 ) ) {
9 Serial . println ( " LoRa init failed . Check your connections . " ) ;
10 while ( true ) ;
11 }
12 }
13
14 void loop () {
15 // Envoyer des d o n n e s
16 LoRa . beginPacket () ;
17 LoRa . print ( " Hello , LoRa ! " ) ;
18 LoRa . endPacket () ;
19
20 delay (5000) ;
21 }
Page 2 sur 5
Université Hassan 1er Projet IoT & IA
Code pour le récepteur (Raspberry Pi)
Sur la Raspberry Pi, tu peux utiliser Python pour recevoir les données LoRa. Voici
un exemple de code :
1 import RPi . GPIO as GPIO
2 import spidev
3 import time
4
5 # Configuration des broches
6 NSS = 8
7 RST = 25
8 DIO0 = 24
9
10 # Initialisation SPI
11 spi = spidev . SpiDev ()
12 spi . open (0 , 0)
13 spi . max_speed_hz = 500000
14
15 # Configuration des GPIO
16 GPIO . setmode ( GPIO . BCM )
17 GPIO . setup ( NSS , GPIO . OUT )
18 GPIO . setup ( RST , GPIO . OUT )
19 GPIO . setup ( DIO0 , GPIO . IN )
20
21 def setup_lora () :
22 GPIO . output ( RST , GPIO . HIGH )
23 time . sleep (0.1)
24 GPIO . output ( RST , GPIO . LOW )
25 time . sleep (0.1)
26 GPIO . output ( RST , GPIO . HIGH )
27 time . sleep (0.1)
28
29 # Configuration du module LoRa ( exemple pour SX1276 )
30 write_register (0 x01 , 0 x8C ) # Mode sleep
31 write_register (0 x01 , 0 x8F ) # Mode LoRa
32 write_register (0 x0D , 0 x72 ) # F r q u e n c e
33 write_register (0 x1D , 0 x74 ) # Configuration du modem
34 write_register (0 x1E , 0 x04 ) # Configuration du modem
35 write_register (0 x26 , 0 x0C ) # Configuration du modem
36
37 def write_register ( address , value ) :
38 GPIO . output ( NSS , GPIO . LOW )
39 spi . xfer2 ([ address | 0 x80 , value ])
40 GPIO . output ( NSS , GPIO . HIGH )
41
42 def read_register ( address ) :
43 GPIO . output ( NSS , GPIO . LOW )
Page 3 sur 5
Université Hassan 1er Projet IoT & IA
44 response = spi . xfer2 ([ address & 0 x7F , 0])
45 GPIO . output ( NSS , GPIO . HIGH )
46 return response [1]
47
48 def receive_lora () :
49 if GPIO . input ( DIO0 ) :
50 print ( " Data received ! " )
51 # Lire les d o n n e s r e u e s
52 # ...
53
54 setup_lora ()
55 while True :
56 receive_lora ()
57 time . sleep (1)
Étape 4 : Tester la communication
Test de l’émetteur
Assure-toi que l’ESP32 envoie bien des données via LoRa.
Test du récepteur
Vérifie que la Raspberry Pi reçoit les données correctement.
Étape 5 : Intégration avec le reste du système
Une fois que la communication LoRa fonctionne, tu peux intégrer les données reçues
dans ton système global. Par exemple, tu peux stocker les données dans une base de
données sur la Raspberry Pi et les afficher via une interface web ou mobile.
Étape 6 : Développement de l’interface web et mobile
Pour l’interface web, tu peux utiliser des frameworks comme Flask ou Django en
Python. Pour l’application mobile, Android Studio avec Java ou Kotlin est une bonne
option.
Conclusion
Tu as maintenant les bases pour connecter ton module LoRa à la Raspberry Pi et
gérer la communication entre l’émetteur et le récepteur. N’hésite pas à poser des questions
Page 4 sur 5
Université Hassan 1er Projet IoT & IA
supplémentaires si tu as besoin de plus de détails ou d’aide pour d’autres parties du projet.
Bon courage !
Page 5 sur 5