IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Répeteur LoRa32u4 (repeater)


Sujet :

Embarqué

  1. #1
    Membre régulier
    Homme Profil pro
    Owner
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 124
    Points
    124
    Par défaut Répeteur LoRa32u4 (repeater)
    Bonjour,
    J'ai une série de sondes en Lora32u4 (pas en LoRaWan)
    Aussi un récepteur pour collecter les valeurs des sondes.
    Enfin, j'ai développé un répéteur qui renvoie tout ce qu'il reçois, si la distance ou le conditions de communications ne sont pas suffisantes.
    Tout cela marche très bien.
    Voilà où ça coince.
    Je souhaite avoir plusieurs répéteurs qui soit vont chainé l'information soit traiter des secteurs différents dans un batiment.
    Le problème est que si deux répéteurs se "parlent", ils vont faire un ping-pong infini.
    Pour éviter ce problème, j'ajoute un caractère spécial quand le message vient d'un répéteur, et donc j'interdit à un répéteur d'envoyer un message commençant par ce caractère.
    ça fonctionne en général, mais de temps en temps, ça boucle quand même
    Aussi avec cette logique, je ne peux pas "chainer" les répéteurs.
    Si quelqu'un à une idée?
    Je pense que cette logique doit pouvoir être appliquée pour d'autres systèmes radio, du 433, du WiFi, du Bt...
    Merci d'avance,

    PhilLu

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    avril 2002
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2002
    Messages : 3 099
    Points : 11 212
    Points
    11 212
    Par défaut
    Bonjour,
    Il faudrait regarder les essais LORA Mesh, c'est ce que tu cherches à faire ; un réseau maillé (mesh) avec des répéteur comme Zigbee où les endpoint sont les sondes, les routers sont les répéteurs et ton gateway est le coordinator.

    Je n'ai pas eu le temps de chercher sur le net.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 526
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 526
    Points : 16 521
    Points
    16 521
    Par défaut
    Salut à tous.

    Je te propose d'ordonnancer les nœuds de ton réseau, si tu le fait par programme.
    Tu nommes chaque nœud de ton réseau sachant que le cheminement va se faire de la valeur la plus faible vers la valeur la plus forte.
    Le nœud ayant la plus petite valeur est le nœud le plus éloigné du nœud de sortie.
    Le point de sortie de ton réseau aura la plus forte valeur. Voici un exemple très simplifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        +---- 2 ----+
        |     |     |
    --> 1     |     +--> 4
        |     |     |
        +---- 3 ----+
    Avec cette méthode, tu n'as aucun effet ping pong. Voici le principe.
    Tu as quatre nœuds numérotés de 1 à 4. J'ai symbolisé les chemins du réseau.

    a) Un message entrant arrive dans le nœud 2 ayant comme origine le nœud 3.
    La valeur d'origine est plus grande que le nœud de réception alors aucune répétition ne sera faite.

    b) Un message entrant arrive dans le nœud 3 avec comme origine le nœud 2.
    La valeur d'origine est plus petite que le nœud de réception alors tu peux répéter ton message.

    Un nœud est susceptible de recevoir le même message en doublon des autres nœuds ayant une valeur plus petite que lui.
    Par exemple, le nœud 3 peut recevoir le même message du nœud 1 et du nœud 2 et sont susceptible d'être envoyé deux fois.
    Afin de ne pas avoir cette répétition, je te propose de créer une topographie de ton réseau.

    Un message entrant arrive dans le nœud 1.
    Tu consultes la topographie de ton réseau qui est le même pour chaque nœud afin de connaitre le chemin le plus court vers la sortie.
    La topographie au nœud 1 indique que tu as le choix entre le nœud 2 et 3.
    Pour choisir, tu peux t'aider d'une variable cyclique qui va te dire où as-tu envoyé ton dernier message.
    Si la valeur est 3 alors tu sais que le prochain envoie se fera vers le nœud 2.
    Pourquoi avoir le choix entre le nœud 2 et 3 ?
    Parce que ta topographie indique que ces deux nœuds sont équivalents en terme de distance vers la sortie.

    Quand tu arrives au nœud 2, le meilleur chemin est vers le nœud 4 et non vers le nœud 3.
    Même raisonnement pour le nœud 3 dont le meilleur chemin est vers le nœud 4.

    Ainsi aucun effet ping pong entre deux nœuds mais tu as en plus, le chemin le plus court vers la sortie.
    Le principe se fait par propagation du message selon l'ordonnancement des nœuds.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre régulier
    Homme Profil pro
    Owner
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 124
    Points
    124
    Par défaut
    Super, merci, je regarde asap...

  5. #5
    Membre régulier
    Homme Profil pro
    Owner
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par PhilLU Voir le message
    Super, merci, je regarde asap...
    Salut Artemus24,
    Merci pour ton explication
    Concernant la variable cyclique, est-il possible de récupérer la force du signal de chaque nœud et de donner préférence au nœud le plus puissant?
    (force du signal car la distance n'est pas tout)
    Donc, si un nœud reçois des messages de plusieurs nœuds 'd'index plus petits' il ne prends que ceux qui proviennent du nœud le plus puissant.
    Si la configuration change, ou un nœud tombe, le trajet est adapté automatiquement.
    ... ou c'est ce que tu m'as expliqué en d'autres mots?

    Encore merci pour tes idées et conseils
    PhilLu

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 526
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 526
    Points : 16 521
    Points
    16 521
    Par défaut
    Salut PhilLu.

    Citation Envoyé par PhilLU
    est-il possible de récupérer la force du signal de chaque nœud et de donner préférence au nœud le plus puissant?
    Je comprends ta question puisque tu désires émettre vers un nœud en activité au cas où un autre nœud serait tombé.
    La seule idée que j'ai, serait de recevoir un accusé de réception de la part du nœud vers lequel tu as envoyé le message.
    Si tu as la réponse dans un temps raisonnable (à toi de juger ce temps), tout va bien, l'envoie est validé.
    Si pas de réponse, tu peux à nouveau envoyer ton message et attendre l'accusé de réception.
    Si au bout de N envoies (détermine la valeur de ce N selon ta convenance), tu n'as toujours pas de réponses, tu peux changer de nœud et refaire la même chose.

    Ce que tu peux faire, est d'envoyer de temps en temps, un message pour identifier les nœuds en activité et ainsi cartographier ton réseau (broadcasting).

    Citation Envoyé par PhilLU
    Donc, si un nœud reçois des messages de plusieurs nœuds 'd'index plus petits' il ne prends que ceux qui proviennent du nœud le plus puissant.
    La première solution que je t'ai donné, est d'éviter de faire des ping pong entre deux nœuds.
    De cette façon, tu ne peux pas créer une boucle à N nœuds qui se renvoie cycliquement le même message, puisque ton réseau est ordonné.
    Mais pour éviter d'avoir plusieurs fois le même message en circulation, avec un décalage dans le temps, il faudra l'identifier.
    Ainsi le message identifié et dont l'envoie a été validé, s'il revenait, ne serait pas à nouveau envoyé.
    Sauf que je ne sais pas comment identifier un message puisque la trame de ton message est courte et tu ne peux pas stocker grand chose.
    La solution serait de considérer qu'il existe un et un seul chemin possible du nœud ou tu te trouves vers la sortie.

    Citation Envoyé par PhilLU
    Si la configuration change, ou un nœud tombe, le trajet est adapté automatiquement.
    Oui, c'est bien cela car ton accusé de réception va t'indiquer si le nœud est en activité ou pas.
    Cela va compliquer grandement la gestion de ton réseau.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre régulier
    Homme Profil pro
    Owner
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut PhilLu.


    Je comprends ta question puisque tu désires émettre vers un nœud en activité au cas où un autre nœud serait tombé.
    La seule idée que j'ai, serait de recevoir un accusé de réception de la part du nœud vers lequel tu as envoyé le message.
    Si tu as la réponse dans un temps raisonnable (à toi de juger ce temps), tout va bien, l'envoie est validé.
    Si pas de réponse, tu peux à nouveau envoyer ton message et attendre l'accusé de réception.
    Si au bout de N envoies (détermine la valeur de ce N selon ta convenance), tu n'as toujours pas de réponses, tu peux changer de nœud et refaire la même chose.

    Ce que tu peux faire, est d'envoyer de temps en temps, un message pour identifier les nœuds en activité et ainsi cartographier ton réseau (broadcasting).


    La première solution que je t'ai donné, est d'éviter de faire des ping pong entre deux nœuds.
    De cette façon, tu ne peux pas créer une boucle à N nœuds qui se renvoie cycliquement le même message, puisque ton réseau est ordonné.
    Mais pour éviter d'avoir plusieurs fois le même message en circulation, avec un décalage dans le temps, il faudra l'identifier.
    Ainsi le message identifié et dont l'envoie a été validé, s'il revenait, ne serait pas à nouveau envoyé.
    Sauf que je ne sais pas comment identifier un message puisque la trame de ton message est courte et tu ne peux pas stocker grand chose.
    La solution serait de considérer qu'il existe un et un seul chemin possible du nœud ou tu te trouves vers la sortie.


    Oui, c'est bien cela car ton accusé de réception va t'indiquer si le nœud est en activité ou pas.
    Cela va compliquer grandement la gestion de ton réseau.

    Cordialement.
    Artemus24.
    @+
    Salut Artemus24,
    Merci pour ces détails très instructifs
    Je compte utiliser le pour récupérer la force du signal, (mais je pense ne pas en avoir besoin - lire la suite...)
    aussi pour identifier le nœud d'origine, je compte préfixer le paquet du numéro du nœud suivi de # ('34#' par exemple)
    chaque nœud reçois donc des copies d'autres nœuds, l'identifiant du nœud d'origine (et la force du signal de celui-ci).
    le premier message reçu est forcément le plus rapide, et donc avec le meilleurs signal... (logique?)
    Je compare donc la chaine initiale aux chaines suivantes pour ne pas propager des messages identiques reçus de 2 ou plusieurs nœuds.
    Il faut donc stocker la dernière chaine reçue de chaque nœud
    En fonction de ton idée de numérotation, seuls des messages de nœuds de valeurs inférieures sont propagés (pas de ping pong)

    Merci pour tes conseils
    PhilLu

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    avril 2002
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2002
    Messages : 3 099
    Points : 11 212
    Points
    11 212
    Par défaut
    Juste au cas où quelqu'un voudrait s'en inspirer https://nootropicdesign.com/projectl...sh-networking/ (c'est un réseau mesh en LoRa, comme tu souhaites faire)

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  9. #9
    Membre régulier
    Homme Profil pro
    Owner
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Juste au cas où quelqu'un voudrait s'en inspirer https://nootropicdesign.com/projectl...sh-networking/ (c'est un réseau mesh en LoRa, comme tu souhaites faire)

    A+
    Merci Vincent,
    Je m'en imprègne pour intégrer cette solution et publierai mes commentaires là dessus.

    Super
    PhillLu

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 526
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 526
    Points : 16 521
    Points
    16 521
    Par défaut
    Salut à tous.

    Le projet que tu fais, est intéressant dans la mesure où tu es confronté aux mêmes problèmes que le réseau internet.
    Voici les idées que tu peux ensuite enrichir et compléter selon ta compréhension des problèmes que tu vas rencontrer.

    a) cartographier le réseau.
    A partir d'un nœud donné, tu utilises la multidiffusion pour connaitre les nœuds qui sont à proximités.
    La force du signal n'est pas une bonne astuce.
    Je pense plutôt au temps mis (en timestamp) pour aller du nœud émetteur vers le nœud destinataire. Tu fais cela de bout en bout.
    Il y a un retour à l'envoyeur où tu indiqueras les nœuds intermédiaires, la sortie, le sens de propagation et les priorités.
    En numérotant tes nœuds, tu sauras ceux qui sont actifs et quel est le meilleur chemin pour la sortie.
    Le nœud de sortie peut poser la question à chaque nœud, par propagation. Le nœud de sortie sera le numéro 1.
    Le premier nœud qui répond, voire celui qui a la priorité la plus importante, aura le numéro suivant.
    De même pour les nœuds intermédiaires, et ainsi de suite jusqu'à ce que tous tes nœuds ont un identifiant.
    Cela se fait par des questions/réponses où la réponse fournie les informations nécessaire pour cartographier le réseau
    Chaque nœud connaitra les identifiants des nœuds précédant et suivants, et la force du signale qui sera la priorité.
    Afin de bien organiser ton réseau, le nœud de sortie est le nœud maitre, puisqu'il va commander à tous les autres nœuds.

    b) l'envoie du message.
    La propagation se fait du nœud émetteur vers le nœud destinataire.
    Quand tu envoies l'accusé réception, tu inverses la numérotation.
    Un nœud qui n'est pas le destinataire du message, ne sera pas traité.
    Si pas d'accusé réception, cela signifie que le nœud destinataire est hors service.
    Comme tu connais l'architecture de ton réseau, tu sais où envoyer ton message si le nœud i n'est plus actif.
    Cela signifie que ton réseau doit être maillé. Il doit y avoir deux nœuds précédent et deux nœuds suivants pour ton nœud courant.

    c) Il faut de temps en temps réactualiser la cartographie de ton réseau, disons toutes les heures.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [LG]repeat/until comportement etrange
    Par scifire dans le forum Langage
    Réponses: 11
    Dernier message: 25/03/2005, 21h56
  2. [VB.NET] Repeater imbriqué
    Par Sadneth dans le forum ASP.NET
    Réponses: 8
    Dernier message: 18/02/2005, 15h31
  3. [VB.NET] Affichage conditionnel dans un repeater
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/02/2005, 12h58
  4. [VB.Net]Evenement dans un Repeater !!
    Par m-mas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/09/2004, 17h13
  5. [C#] Déclencher action dans Repeater avec LinkButton
    Par globeriding dans le forum ASP.NET
    Réponses: 13
    Dernier message: 13/05/2004, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo