Go Down

Topic: Reception d'un Signal RF (Read 5797 times) previous topic - next topic

CycloneSeb

Salut à tous;

je recherche qq informations sur la réception d'un signal RF.

Je m'explique .... j'ai décodé la trame du signal envoyé par un détecteur d'ouverture au moyen de mon oscilloscope, malheureusement, le codage de cette trame n'est pas recoonu par les biblioth!èques comme VirtualWire, RCswitch,... , ce n'est pas un codage façon Protocol 1, 2, 3, ni même Manchester, et en utilisant ces bibliothèques, l'arduine ne "reçoit" rien.

Etant donné que je connais la trame du message (le nbre et la durée des 1/0), il est sûrement possible de faire un programme qui déclenche une action à la reception de cette trame ?

Quelqu'un a-t-il déjà réalisé ce code ? qq'un a t-il des idées pour sa réalisation ?

Merci d'avance !


skywodd

Bonjour,

Déjà c'est quoi la source de ce signal ?
Ensuite pour détecter une trame il faut savoir à quoi elle ressemble, pour ça il faut un analyseur logique.
Quand tu sait comment ta trame est construite il est bien plus simple de la détecter ;)

Voici un exemple de trame décodée avec l'aide d'un analyseur logique et de plusieurs membres du forum :
http://skyduino.wordpress.com/2012/07/19/hack-partie-2-reverse-engineering-des-interrupteurs-domotique-blyss/

Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

fdufnews


Etant donné que je connais la trame du message (le nbre et la durée des 1/0), il est sûrement possible de faire un programme qui déclenche une action à la reception de cette trame ?


Pour reconnaître une trame il faut déduire des règles du message que tu as capturé qui permettent de coder une fonction qui analysera le signal reçu et conclura à l'identification ou non d'un message correct.
Le programme dépend donc du format des trames. Tu peux éventuellement t'inspirer de code existant comme la librairie IRRemote.

Maintenant, t'es-tu assuré que ton capteur envoie toujours le même code et qu'il n'utilise ps un code variable ce qui compliquerait passablement ton programme.

CycloneSeb

Salut !

merci pour vos messages !

ce signal 433 MHz provient d'un détecteur d'ouverture de porte à effet Hall  (système d'alarme), j'ai vérifié, le signal émis par le système est identique, il n'y a pas de code variable.

Ayant la trame, j'ai cherché la logique qui se cache derrière la "constitution" de cette trama, mais pour l'instant je bloque, ce n'est ni du protocol 1, ni du 2, ni un codage manchester ou manchester inverse, d'où li'dée, à défaut de pouvoir interpréter la logique du code, au moins détecter lorsqu'il est émis...

Artouste


Salut !

merci pour vos messages !

ce signal 433 MHz provient d'un détecteur d'ouverture de porte à effet Hall  (système d'alarme), j'ai vérifié, le signal émis par le système est identique, il n'y a pas de code variable.

Ayant la trame, j'ai cherché la logique qui se cache derrière la "constitution" de cette trama, mais pour l'instant je bloque, ce n'est ni du protocol 1, ni du 2, ni un codage manchester ou manchester inverse, d'où li'dée, à défaut de pouvoir interpréter la logique du code, au moins détecter lorsqu'il est émis...

Bonsoir
si tu a la trame , que tu a determiné qu'à chaque emission elle est identique, alors la suite est simple
soit tu fais de la reemission RAW , soit tu determine la durée mini d'un etat et tu reconstitue numeriquement la trame

al1fch

#5
Nov 24, 2013, 07:31 pm Last Edit: Nov 24, 2013, 07:48 pm by al1fch Reason: 1
Bonjour
Quote
Etant donné que je connais la trame du message (le nbre et la durée des 1/0), il est sûrement possible de faire un programme qui déclenche une action à la reception de cette trame ?


Nombre délements ? durée du 0 ? durée du 1 ?

Si tu publiais la trame obtenue (photo de l'écran  du scope)  tu augmenterais les chances de réponses !
Le look de la trame dira peut être quelquechose à certains. Une astuce, un 'raccourci' sera peut être alors suggéré
Ta trame a peut être des singularités.

Le détecteur d'ouverture de porte peut-il être ouvert ?
Une photo de la puce à peut être aussi quelque chose à dire !!

Quote
Quelqu'un a-t-il déjà réalisé ce code ? qq'un a t-il des idées pour sa réalisation ?

-Chercher un éventuel programme Arduino de récepteur RF à apprentissage. Un programme qui n'analyse pas le message contenu dans la trame mais se contente de dire : "je reconnais la bonne trame."
-boucle de PULSIN permettant de trier les impulsions reçues, ne garder que les bons '1', les bons '0' afin de valider ou pas la séquence
-si le principe de reconnaissance de la trame est OK , améliorer éventuellement le programme en remplaçant  PULSIN par une exploitation des interruptions, d'un Timer en mode Capture....

CycloneSeb

Salut !

oui, avec une copie du signal,ça sera probablement plus simple : voir fichier signal.jpg attaché.

Concernant le détecteur, j'ai du le démonter pour capter la trame via l'oscilloscope, malheureusement, l'IC n'est pas identifié, aucune référence n'est indiqué sur celui-ci... (voir photo détecteur.jpg attaché).

J'ai déjà essayé une boucle de PulseIn, sans résultat probant, je vais continuer à chercher dans cette voie.

Bonne soirée à tous, et merci pour votre aide.


B@tto

Ca ressemble pas mal au protocole RF X10 : http://davehouston.net/rf.htm

Bref de ce que je vois avec des pulsIn ça doit pouvoir se comprendre sans problème
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

al1fch

#8
Nov 25, 2013, 10:28 am Last Edit: Nov 25, 2013, 11:46 am by al1fch Reason: 1
Bonjour

je pense voir une régularité dans la trame... (du moins dans son début !)
Après chaque front descendant on a :
-soit le motif Bas Haut Haut     (rouge sur l'image jointe)
-soit le motif Bas Bas Haut     (Bleu)
les deux motifs ont la même durée (durée du bit constante)

Chaque bit codé commence par un état Bas et finit par un état Haut..
C'est le milieu du motif qui porte l'information 'Bit'

Le signal étant à l'état bas au repos , La première impulsion sert à produire le premier front descendant , point de départ du 'motif' du premier bit.

On choisissant "1"pour le motif Rouge et en choississant l'option 'poids fort en premier' on aurait alors ci-dessous l'octet 1110 0001

On peut récupérer les bits en échantillonnant la  broche  à intervalle constant.
En se synchronisant sur les fronts descendants ça ouvre la voie à une petite routine d'interruption qui lirait l'état Haut ou Bas après avoir attendu qq centaines de µS. Cette façon de faire ne monopoliserait pas le microncontroleur contrairement aux PulseIn()

(Peux-tu zoomer de manière à évaluer avec plus de précision  la 'durée de 2 ou 3 'motifs' ?)

Artouste

#9
Nov 25, 2013, 10:36 am Last Edit: Nov 25, 2013, 10:38 am by Artouste Reason: 1



Je m'explique .... j'ai décodé la trame du signal envoyé par un détecteur d'ouverture au moyen de mon oscilloscope, malheureusement, le codage de cette trame n'est pas recoonu par les biblioth!èques comme VirtualWire, RCswitch,... , ce n'est pas un codage façon Protocol 1, 2, 3, ni même Manchester, et en utilisant ces bibliothèques, l'arduine ne "reçoit" rien.




Bonjour
A tu essayé la lib IRremote ? (IRrecvdump)
evidemment en remplaçant l'opto par le recepteur 434  :smiley-mr-green:

https://github.com/shirriff/Arduino-IRremote

B@tto


Bonjour

je pense voir une régularité dans la trame... (du moins dans son début !)
Après chaque front descendant on a :
-soit le motif Bas Haut Haut     (rouge sur l'image jointe)
-soit le motif Bas Bas Haut     (Bleu)
les deux motifs ont la même durée (durée du bit constante)

Chaque bit codé commence par un état Bas et finit par un état Haut..
C'est le milieu du motif qui porte l'information 'Bit'

Le signal étant à l'état bas au repos , La première impulsion sert à produire le premier front descendant , point de départ du 'motif' du premier bit.

On peut récupérer les bits en échantillonnant la  broche  à intervalle constant.

(Peux-tu zoomer de manière à évaluer avec plus de précision  la 'durée de 2 ou 3 'motifs' ?)


Moi ce que je vois simplement c'est qu'il suffit de regarder l'état du signal entre deux fronts montants ou descendant : il suffit de suivre la durée passé à l'état haut ou bas entre deux, et on voit bien les 0 ou les 1

Quote

En se synchronisant sur les fronts descendants ça ouvre la voie à une petite routine d'interruption qui lirait l'état Haut ou Bas après avoir attendu qq centaines de µS. Cette façon de faire ne monopoliserait pas le microncontroleur contrairement aux PulseIn()


Pour l'instant le sujet c'était de décoder, pour le coup pulseIn() va très bien. Maintenant la "vraie" solution c'est d'utiliser les interruptions
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Artouste


...
Pour l'instant le sujet c'était de décoder, pour le coup pulseIn() va très bien. Maintenant la "vraie" solution c'est d'utiliser les interruptions


Bonjour B@tto
c'est ta suggestion sur peut etre le protocole RFX10 et le lien pointant vers ça :
Quote
the protocol that X-10 uses for RF devices is identical to the NEC IR protocol which is widely used for IR remote controls


la  librarie IRremote semblant utiliser de l'interruption ou pas.

je n'ai pas de quoi tester aujourd'hui , mais pragmatiquement avant d'eventuellement reinventer là roue, faire un test avec rendra  peut etre qq "bonnes surprises"

B@tto

Pas faux ^^ mais au pire je dois avoir un vieux code de test de RF X10 qui traine, y'a rien de bien compliqué au pire. Mais c'est vrai que pour le coup autant tenter sa chance :)
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

al1fch

#13
Nov 25, 2013, 01:17 pm Last Edit: Nov 25, 2013, 02:01 pm by al1fch Reason: 1
+1 pour 'tenter ça chance' , 'ne pas réinventer la roue', 'qq bonnes surprises'....

tenter aussi sa chance avec :
envoyer le signal (avec ou sans inversion) sur l'entrée de l'UART (RX)
voir ce que ça donne avec différends débits (bauds).... qui sait ??
tester des débits non standards avec SoftSerial ??
On récupère peut être qq caractères spécifiques ?? Juste assez pour voir causer le détecteur d'ouverture de porte !!
En gros : "je reçois un charabia  qui ne peut venir que de mon détecteur d'ouverture de porte !!"
ça resterait dans le cahier des charges du fil, sans gros effort ....


partisan du moindre effort je vous suis parfaitement.... mais ,curiosité aidant :
-je n'ai reconnu aucun des 'protocoles IR' courants , protocoles parfois repris en RF (après qq petites adaptations)
(Au premier coup d'oeuil ça avait un look  'Manchester', mais après 4 ou 5 impulsions ça ne colle pas.)
http://www.sbprojects.com/knowledge/ir/nec.php
ça n'a pas non plus le look des trames de puces PT2262/PT2272

-j'ai repéré un probable format de codage du  'bit' dans la trame fournie..... donc je le communique...ça servira peut être pour un 'plan B' !!

Artouste


+1 pour 'tenter ça chance' , 'ne pas réinventer la roue', 'qq bonnes surprises'....

tenter aussi sa chance avec :
...


Bonjour al1fch
tout est bon à tenter  :smiley-mr-green:

j'aurais bien aimé voir au moins trois trames succesives pour déjà :
- dinstinguer le delai d'inter-trames
- déjà etre bien sur qu'elles sont identiques
-  avoir un regard "etendu"  :smiley-mr-green:
-  +  8)

J'en profite pour rappeller qu'en DIY sur du RF "courant"  (petit debit de modulation : genre telco, station meteo, thermometre, sonnettes sans fil, deport de telco IR, et ... encore plein d'autres  :smiley-mr-green:  )

une bonne base accessible en reception est d'utiliser un dongle compatible SDR+  + Audacity pour depouiller

Go Up