Modifications

Sauter à la navigation Sauter à la recherche
3 747 octets ajoutés ,  21 novembre 2016 à 14:41
aucun résumé de modification
Ligne 1 : Ligne 1 : −
{{traduction}}
  −
   
{{ADFImage|FEATHER-32U4LORA-45.jpg|640px}}
 
{{ADFImage|FEATHER-32U4LORA-45.jpg|640px}}
   Ligne 26 : Ligne 24 :  
== La bibliothèque RadioHead RFM9x ==
 
== La bibliothèque RadioHead RFM9x ==
   −
Pour commencer à utiliser la radio, vous devrez télécharger la bibliothèque RadioHead.  
+
Pour commencer à utiliser la radio, vous devrez [http://www.airspayce.com/mikem/arduino/RadioHead/ télécharger la bibliothèque RadioHead].  
Vous pouvez le faire en visitant le repo de github et en téléchargeant manuellement ou, plus simplement, cliquez simplement '''ici pour télécharger le zip correspondant à la version 1.62'''
+
Vous pouvez le faire en visitant le repo de github et en téléchargeant manuellement ou, plus simplement, cliquez simplement [https://cdn-learn.adafruit.com/assets/assets/000/035/106/original/RadioHead-1.62.zip?1472068723 '''ici pour télécharger le zip correspondant à la version 1.62''']
   −
Notez que tout le code dans les exemples ci-dessous est basé sur cette version, vous pouvez visiter la page de documentation de RadioHead pour obtenir la version la plus récente qui peut avoir des corrections de bugs ou plus de fonctionnalités.
+
Notez que tout le code dans les exemples ci-dessous est basé sur cette version, vous pouvez visiter [http://www.airspayce.com/mikem/arduino/RadioHead/ la page de documentation de RadioHead pour obtenir la version la plus récente qui peut avoir des corrections de bugs ou plus de fonctionnalités.]
    
Décompresser le zip et trouver le dossier nommé RadioHead et vérifier que le dossier RadioHead contient RH_RF95.cpp et RH_RF95.h (ainsi que quelques dizaines d'autres fichiers pour les radios qui sont pris en charge)
 
Décompresser le zip et trouver le dossier nommé RadioHead et vérifier que le dossier RadioHead contient RH_RF95.cpp et RH_RF95.h (ainsi que quelques dizaines d'autres fichiers pour les radios qui sont pris en charge)
Ligne 36 : Ligne 34 :  
Vous devrez peut-être créer le sous-dossier des bibliothèques si c'est votre première bibliothèque. Redémarrez l'IDE pour que cela soit pris en compte.
 
Vous devrez peut-être créer le sous-dossier des bibliothèques si c'est votre première bibliothèque. Redémarrez l'IDE pour que cela soit pris en compte.
   −
Nous avons également un excellent didacticiel sur l'installation de la bibliothèque Arduino à: '''LIEN VERS TUTO'''
+
Nous avons également un excellent didacticiel sur l'installation de la bibliothèque Arduino à: [https://wiki.mchobby.be/index.php?title=Installation_d%27un_librairie_Arduino '''en suivant ce tutoriel''']
    
== Exemple de base RX & TX ==
 
== Exemple de base RX & TX ==
Ligne 452 : Ligne 450 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== Code de l'emetteur ==
+
== Code de l'émetteur ==
   −
Si vous utilisez l'émetteur, ce code attendra 1 seconde, puis transmettra un paquet avec "Hello World #" et un numéro de paquet incrémental.
+
Si vous utilisez l'émetteur, ce code attendra 1 seconde, puis transmettra un paquet avec "Hello World #" et un numéro de paquet incrémenté à chaque envoi.
 +
 
 +
<syntaxhighlight lang="python">
 +
void loop()
 +
{
 +
  delay(1000); // Wait 1 second between transmits, could also 'sleep' here!
 +
  Serial.println("Transmitting..."); // Send a message to rf95_server
 +
 
 +
  char radiopacket[20] = "Hello World #      ";
 +
  itoa(packetnum++, radiopacket+13, 10);
 +
  Serial.print("Sending "); Serial.println(radiopacket);
 +
  radiopacket[19] = 0;
 +
 
 +
  Serial.println("Sending..."); delay(10);
 +
  rf95.send((uint8_t *)radiopacket, 20);
 +
 
 +
  Serial.println("Waiting for packet to complete..."); delay(10);
 +
  rf95.waitPacketSent();
 +
</syntaxhighlight>
 +
 
 +
c'est assez simple, le ""delay"" fixe un temps d'attente. (vous pouvez remplacer celui avec un script de mise en veille de faible puissance).
 +
 
 +
Ensuite, il génère le paquet et ajoute un nombre qui augmente à chaque transmission (TX).
 +
Ensuite, il appelle simplement la fonction '''send()''' pour transmettre les données, et passe en paramètre le tableau de données et la longueur des données.
 +
Notez qu'il ne fait aucun adressage ou sous-réseau - si vous voulez vous assurer que le paquet va à une radio particulière, vous devrez peut-être ajouter un identifiant / adresse octet dans le message !
 +
Ensuite, vous appelez waitPacketSent() pour attendre que la transmission radio soit terminée.
 +
Vous ne recevrez pas un accusé de réception automatique, à partir de l'autre radio, à moins qu'il ne sache renvoyer un paquet. C'est un peu comme le protocole 'UDP' en réseau- les données sont envoyées, mais ce n'est pas certain qu'il a été reçu! En outre, il n'y aura pas de nouvelles tentatives automatiques en cas d'échec sauf si vous prévoyez une fonction dédiée qui attendra une réponse avec un timeout pour un nouvel envoi si celle-ci n'est pas reçue dans un temps imparti.
 +
 
 +
=== Code du récepteur ===
 +
 
 +
Le Récepteur a le même code de configuration, mais la boucle est différente:
 +
 
 +
<syntaxhighlight lang="python">
 +
void loop()
 +
{
 +
  if (rf95.available())
 +
  {
 +
    // Should be a message for us now 
 +
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
 +
    uint8_t len = sizeof(buf);
 +
   
 +
    if (rf95.recv(buf, &len))
 +
    {
 +
      digitalWrite(LED, HIGH);
 +
      RH_RF95::printBuffer("Received: ", buf, len);
 +
      Serial.print("Got: ");
 +
      Serial.println((char*)buf);
 +
      Serial.print("RSSI: ");
 +
      Serial.println(rf95.lastRssi(), DEC);
 +
</syntaxhighlight>
    +
Au lieu d'émettre, il vérifie constamment s'il ya des paquets de données qui ont été reçus.
 +
available() renvoie true si un paquet avec correction d'erreur correcte a été reçu.
 +
Si c'est le cas, le récepteur l'affiche en hexadécimal et aussi comme une 'chaîne de caractères'  (dans la console série).
 +
Il affiche également le RSSI qui est l'indicateur de puissance du signal du récepteur.
 +
Ce nombre sera compris entre environ -15 et environ -100.
 +
Plus le nombre est bas, (-15 étant le plus élevé que vous verrez probablement) plus le signal est fort. (ce chiffre représente en fait le taux d'atténuation du signal par une valeur numérique)
 +
Une fois terminé, il répondra automatiquement, ce qui est un moyen pour les radios de savoir qu'il y avait un accusé de réception.
    +
<syntaxhighlight lang="python">
 +
// Send a reply
 +
      uint8_t data[] = "And hello back to you";
 +
      rf95.send(data, sizeof(data));
 +
      rf95.waitPacketSent();
 +
      Serial.println("Sent a reply");
 +
</syntaxhighlight>
    +
Il renvoie simplement une chaîne et attend jusqu'à ce que la réponse soit complètement envoyée.
    
{{FEATHER-32U4LORA-TRAILER}}
 
{{FEATHER-32U4LORA-TRAILER}}
704

modifications

Menu de navigation