Outils pour utilisateurs

Outils du site


e45-ttl-100

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
e45-ttl-100 [2019/01/16 22:31] – [Emetteur] bigMaxe45-ttl-100 [2020/10/29 13:58] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
-====== Le transceiver (émetteur/récepteur) LoRa E45-TTL-100 ======+====== Le modem LoRa E45-TTL-100 ====== 
 +<WRAP center round important 60%> 
 +Ce device n'est pas compatible avec LoRaWAN. 
 +</WRAP> 
 + 
 +  * "Transceiver" : émetteur / récepteur
   * Basé sur le SX1276 de semtech.   * Basé sur le SX1276 de semtech.
   * "E32-868T20D"   * "E32-868T20D"
Ligne 8: Ligne 13:
   * Consommation un peu trop élever pour être alimenté par le 3.3V de l'ESP32.   * Consommation un peu trop élever pour être alimenté par le 3.3V de l'ESP32.
  
-===== Fabrication d'un kit de mesure du signal LoRa ===== +===== Fabrication d'un kit de mesure du signal radio LoRa sur la fréquence 868 MHz ===== 
-2 Modules : +[[ max_lora_signal_test_kit | Une page est dédié ]]
-  * Une module mobile qui emet des messages et mesure la qualité du signal et le débit (ou meilleut spread factor) utilisable. +
-  * Une simili gateway fixe qui répond au message LoRa +
- +
- +
-Algorithme de négociation du spread factor : +
-  * Si pas de méssage valide depuis linkDeadTimeout, on écoute sur le plus gros SF. +
-  * Si validMessageCountSpeedIncreaseThreshold messages séquentielle valides reçu alors on tente d'augmenter le SF +
-  * Si on a reçu speedIncreaseRequestCount demandes séquentielles valides de changement de SF on change de SF. +
-  * Si on a pas reçu de message depuis tooFastTimeout on décrémente le SF. +
-  * Après un retour à la normal suite à un tooFastTimeout on ne retente pas l'augmentation de SF avant un temps waitBeforeSpeedIncreaseInterval +
-  * La gateway acquitte les méssages en retournant le message avec le numéro de sequence incrémenté. +
-  * Tant qu'un message n'est pas acquitté il est retransmis. +
-  * linkDeadTimeout > 2 x tooFastTimeout +
-  * tooFastTimeout dépend du SF tel que tooFastTimeout > 2 x messageTransmissionTime +
-  * messageTransmissionTime = messageSize / SFdebit +
-  * waitBeforeSpeedIncreaseInterval > 10 * messageTransmissionTime ? +
- +
-Contenu des messages : +
-  * indicateur de session +
-  * indicateur de sequence +
-  * SF demandé +
- +
- +
-Code : +
- +
-==== Gateway ==== +
- +
-String sessionId = random; +
-int seqId = 0; +
-byte requestedSpreadFactor = 0; +
-int sequentialValidMessages = 0; +
-int speedIncreaseReqCount = 0; +
- +
-long lastValidMessageReceivedTimestamp = now(); +
- +
-while(lastValidMessageReceivedTimestamp + LINK_DEAD_TIMEOUT > now()) { +
-   +
-  while (lastMessageSentTimestamp + TOO_FAST_TIMEOUT > now()) { +
-    String message = receiveMessage(); +
-     +
-  } +
-     +
-+
- +
- +
-==== Emetteur ==== +
- +
-SPEED_INC_VALID_MSG_COUNT =  +
-SPEED_INC_REQ_COUNT =  +
-WAIT_ACK_TIMEOUT = +
-TOO_FAST_TIMEOUT =  +
-LINK_DEAD_TIMEOUT =  +
-MIN_AIR_RATE = 0; +
-MAX_AIR_RATE = 5; +
- +
-String sessionId = random; +
-int seqId = 0; +
-byte requestedAirRate = 0; +
-int sequentialValidMessages = 0; +
-int speedIncreaseReqCount = 0; +
- +
-long lastValidMessageReceivedTimestamp = now(); +
- +
-while(lastValidMessageReceivedTimestamp + LINK_DEAD_TIMEOUT > now()) { +
-  message = sessionId + "_" + seqId + "_"; +
-  if (sequentialValidMessages > SPEED_INC_VALID_MSG_COUNT) { +
-    message = message + (requestedAirRate + 1); +
-  } +
- +
-  boolean notAckedMessage = true; +
-  while (notAckedMessage && lastMessageSentTimestamp + TOO_FAST_TIMEOUT > now()) { +
-    // Try to send a message and get an ACK for TOO_FAST_TIMEOUT +
-     +
-    sendMessage(message); +
-    long lastMessageSentTimestamp = now(); +
-    while (notAckedMessage && lastMessageSentTimestamp + WAIT_ACK_TIMEOUT > now()) { +
-      // Try to get an ACK for WAIT_ACK_TIMEOUT +
-       +
-      String receivedMsg = receiveMessage(); +
-      int msgSessionId = receivedMsg.substring(); +
-      int msgSeqId = receivedMsg.substring(); +
-     +
-      if (msgSessionId == sessionId && msgSeqId == seqId + 1) { +
-        sequentialValidMessages += 1; +
-        int msgRequestedAirRate = receivedMsg.substring(); +
-        if (msgRequestedAirRate == requestedAirRate + 1) { +
-          speedIncreaseReqCount += 1; +
-         +
-          if (speedIncreaseReqCount > SPEED_INC_REQ_COUNT) { +
-            speedIncreaseReqCount = 0; +
-            requestedAirRate = min(requestedAirRate + 1, MAX_AIR_RATE); +
-            configLora(requestedSpreadFactor); +
-          } +
-        } +
-       +
-        notAckedMessage = false; +
-        seqId = msgSeqId + 1; +
-        lastValidMessageReceivedTimestamp = now(); +
-         +
-      } else { +
-        sequentialValidMessages = 0; +
-      } +
-    } +
-  } +
-   +
-  if (notAckedMessage) { +
-    sequentialValidMessages = 0; +
-    requestedAirRate = max(requestedAirRate - 1, MIN_AIR_RATE); +
-  } +
-+
  
 +===== Incompatible avec LoRaWAN =====
 +Le e45-ttl-100 n'est pas compatible avec LoRaWAN.
  
 +Tous les device LoRa ne semble pas compatible LoRaWAN. cf [[ https://github.com/sandeepmistry/arduino-LoRa/issues/203 ]].
 +La bibliothèque [[ https://github.com/sandeepmistry/arduino-LoRa ]] est codé pour dialoguer avec le protocole sérié SPI. Or le e45-ttl-100 communique avec le protocole série UART.
  
 ===== Ressources ===== ===== Ressources =====
-  * {{ ::e45-ttl-100_datasheet_en_v1.0.pdf | Datasheet du E45-TTL-100 }} +  * {{ media_03:e45-ttl-100_datasheet_en_v1.0.pdf | Datasheet du E45-TTL-100 }} 
-  * {{ ::lora_e32-868t20d_usermanual_en_v1.30.pdf | Datasheet de la game des E32 devices}} +  * {{ media_08:lora_e32-868t20d_usermanual_en_v1.30.pdf | Datasheet de la game des E32 devices}} 
   * [[ http://www.cdebyte.net/e45-ttl-100.html | site web du E45-TTL-100 ]]   * [[ http://www.cdebyte.net/e45-ttl-100.html | site web du E45-TTL-100 ]]
   * Quelques billets de blog : [[ https://quadmeup.com/tag/e45-ttl-100/ ]]   * Quelques billets de blog : [[ https://quadmeup.com/tag/e45-ttl-100/ ]]
 +
 +
 +{{tag>périphérique sans_fil max}}
e45-ttl-100.1547677915.txt.gz · Dernière modification : 2019/01/16 22:31 de bigMax