---
# System prepended metadata

title: LoRa E5 mini Tuto
tags: [EVOLUTEK]

---

# LoRa E5 mini

![113990939_preview-07](https://hackmd.io/_uploads/rkv-AQipT.png)

Cette carte permet de de communiquer en utilisant le LoRa et inclus de base un firmware avec lequelle on peut intéragir par des commandes AT en UART (configuré par defaut en 9600 bauds).

## Vocabulaire

**Spread Factor**: Une valeur entre 7 et 12 qui influence la vitesse de transmission et la porté du signal (plus la valeur est élevé et plus la porté est grande mais moins la débit est important).

**Fequency**: C'est la frequence minimal d'une plage de frequence (car les information ne son jamais transmis sur une frequence en particulier mais sur une plage de frequences définie par la bandwidth et le frequence minimal de cette plage).

**Bandwidth**: C'est la différence entre la frequence minimal et la frequence maximal d'une plage de frequences.

**Duty Cycle**: C'est le pourcentage de temps pour lequelle le module est active et transmet des informations sur une certeine plage de frequences.


## Commandes AT

#### Voici une liste des commandes AT qui pourais nous être utiles:

`AT`
Renvoie `+AT: OK` si la carte fonctionne bien. Il s'agit d'un bon premier teste pour tester la connectivité a la carte.

---

`AT+TEMP`
Renvoie la température en °C.
Exemple de retour:
`+TEMP: 20.5`

---

`AT+UART=BR,115200`
Met le baudrate de l'UART à 115200. Le changement est opérationel seulement apres reset de la carte.
Exemple de retour:
`+UART=BR,115200`

---

`AT+MODE=TEST`
Passe en mode test (le mode qui nous intérraisse pour transmettre directement des packets sans passer par le protocol LoRaWan).
Retourne:
`+MODE: TEST`

---

`AT+TEST=?`
Retourne la configuration radio actuelle.

---

`AT+TEST=RFCFG,FREQUENCY,SF,BANDWIDTH,TX PX,RX PR,TX
POWER,CRC,IQ,NET`
Définis la configuration radio à utilisé.

Description des paramettres:
* FREQUENCY: La frequences minimal de la plage de frequence à utilisé (en Mhz et peut être un nombre décimale).
* SF: The spread factor: SF7, SF8, SF9, SF10, SF11, SF12
* BANDWIDTH: La largeur de la plage de frequence à utilisé. Les seule valeurs possible sont: 125, 250, 500
* TX PX: TX Preamble: Je ne sais pas ce que c'est mais 12 fonctionne bien
* RX PX: RX Preamble: Je ne sais pas ce que c'est mais 15 fonctionne bien
* TX POWER: La puissance de transmission radio en dBm.
* CRC: Si vous voulez activer le CRC (valeurs possible: ON, OFF)
* Inverted IQ: Mettre OFF
* Public LoRaWAN: Mettre OFF

Exemple:
`AT+TEST=rfcfg,869,sf10,250,12,15,14,on,off,off`
Retourne:
`+TEST: RFCFG F:869000000, SF10,BW250K,TXPR:12,RXPR:15, POW:14dBm, CRC:ON, IQ:OFF, NET:OFF`

---

`AT+TEST=TXLRPKT,"HEX STRING"`
Permet d'envoyer un packet avec un argument au format hexadecimal.
Example:
`AT+TEST=TXLRPKT,"404EA99000800A00089F6E770959"`
Retourne:
`+TEST: TXLRPKT "404EA99000800A00089F6E770959"`
`+TEST: TX DONE`

---

`AT+TEST=TXLRSTR,"TEXT"`
Permet d'envoyer un packet avec un argument au format text.
Example:
`AT+TEST=TXLRSTR,"Hello, World"`
Retourne:
`+TEST: TXLRSTR "Hello, World"`
`+TEST: TX DONE`

---

`AT+TEST=RXLRPKT`
Permet de recevoir un packet.
Exemple de retour:
`+TEST: LEN:250, RSSI:-106, SNR:10`
`+TEST: RX "48656C6C6F20576F726C64"`

---

`AT+TEST=RSSI,frequency,times`
Permet d'approximer l'occupation d'une certein plage de frequences avec la bandwidth configurer par AT+TEST=RFCFG.
Exemple:
`AT+TEST=RSSI,868.7,1000`
Format de retour:
`+TEST: RSSI, average, maximum, minimum`
Exemple de retour (l'unité est le dBm):
`+TEST: RSSI, -127, -126, -128`

### Notes

L'emeteur et le recepteur doivent avoir la même configuration radio pour pouvoir fonctioner correctement.

Les commandes AT ne sont pas sensible à la case.

## Limites

La taille limite d'un packet LoRa est de 252 octets, mais garder en tête que plus un packet est long et moins il a de chance d'atteindre sa destination intacte.

#### Limite de débit en fonction du spread factor et de la bandwith:

![Capture d'écran 2024-03-10 143014](https://hackmd.io/_uploads/ryfMUEopT.png)

#### Relation entre le spread factor et la sensibilité de reception pour une bandwith de 125 Khz:
| Spread Factor | Sensibilité |
| ------------- | ----------- |
| SF7           | -123 dBm    |
| SF8           | -126 dBm    |
| SF9           | -129 dBm    |
| SF10          | -132 dBm    |
| SF11          | -134.5 dBm  |
| SF12          | -137 dBm    |

Voici un site très utile pour calculer le temps de transmission d'un packet LoRa:
https://kongduino.github.io/Lora-Calculations/

## Bandes de frequences "libre" en France et leur limitations



| Min Fequency | Max Frequency | Max Power      | Max Duty Cycle |
| ------------ | ------------- | -------------- | -------------- |
| 863          | 865           | 25 mW (14 dBm) | 0.1 %          |
| 865          | 868.6         | 25 mW (14 dBm) | 1 %            |
| 868.7        | 869.2         | 25 mW (14 dBm) | 0.1 %          |
| 869.4        | 869.65        | 500 mW (27 dBm)| 10 %           |
| 869.7        | 870           | 25 mW (14 dBm) | 1 %            |


## Example

Vous aurez besoin d'une carte pour emettre et d'une carte pour recevoir.

Il est également néccéssaire d'avoir un terminal serial qui peut envoyer '\r\n' à la fin de chaque ligne (Putty de ne pas le faire mais le terminal de l'IDE Arduino peut en sélectionnent "Both NL & CR").

Le baudrate par defaut de l'UART est 9600.

Maintenant il ne reste plus cas brancher en USB les cartes sur votre ordinateur.

Il se peut que le port série n'apparaisse pas après avoir brancher les cartes. Dans ce cas vous pouvez esseiller d'installer le driver serial pour le composant CP210x (https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads).

Executer les commandes suivante sur les deux cartes (le texte légerement indenté est le retour que vous devriez obtenir et ne sont pas des commandes à faire):
`at`
> `+AT: OK`

`at+mode=test`
> `+MODE: TEST`
> `+TEST: STOP`

`at+test=rfcfg,869,sf10,250,12,15,14,on,off,off`
> `+TEST: RFCFG F:869000000, SF10,BW250K,TXPR:12,RXPR:15, POW:14dBm, CRC:ON, IQ:OFF, NET:OFF`

Executer sur la premier carte:

`at+test=rxlrpkt`
> `+TEST: RXLRPKT`

Puis sur la deuxième carte:

`AT+TEST=TXLRSTR,"Hello, World"`
> `+TEST: TXLRSTR "Hello, World"`
> `+TEST: TX DONE`

Vous devriez alors recevoir sur la premier carte quelque chose comme:
> `+TEST: LEN:11, RSSI:-98, SNR:-1`
> `+TEST: RX "48656C6C6F20576F726C64"`

## Ressources
- https://wiki.seeedstudio.com/LoRa_E5_mini/
- https://files.seeedstudio.com/products/317990687/res/LoRa-E5+AT+Command+Specification_V1.0+.pdf
- https://qrvradio.fr/Bandes.htm#UHF
- https://www.arcep.fr/la-regulation/grands-dossiers-reseaux-mobiles/le-guichet-start-up-et-innovation/le-portail-bandes-libres.html
- https://www.rapidtables.com/convert/power/mW_to_dBm.html
- https://www.thethingsnetwork.org/docs/lorawan/spreading-factors/
- https://circabc.europa.eu/sd/a/e3ea717a-87cf-4810-929d-35b9b9a2c543/RSCOM19-6rev1_SRD_draft_seventh_update.pdf
