Arduino Forum

International => Français => Topic started by: CycloneSeb on Nov 22, 2013, 05:03 pm

Title: Reception d'un Signal RF
Post by: CycloneSeb on Nov 22, 2013, 05:03 pm
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 !

Title: Re: Reception d'un Signal RF
Post by: skywodd on Nov 24, 2013, 11:51 am
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/

Title: Re: Reception d'un Signal RF
Post by: fdufnews on Nov 24, 2013, 01:07 pm

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.
Title: Re: Reception d'un Signal RF
Post by: CycloneSeb on Nov 24, 2013, 04:36 pm
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...
Title: Re: Reception d'un Signal RF
Post by: Artouste on Nov 24, 2013, 05:56 pm

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
Title: Re: Reception d'un Signal RF
Post by: al1fch on Nov 24, 2013, 07:31 pm
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....
Title: Re: Reception d'un Signal RF
Post by: CycloneSeb on Nov 24, 2013, 11:39 pm
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.

Title: Re: Reception d'un Signal RF
Post by: B@tto on Nov 25, 2013, 09:02 am
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
Title: Re: Reception d'un Signal RF
Post by: al1fch on Nov 25, 2013, 10:28 am
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' ?)
Title: Re: Reception d'un Signal RF
Post by: Artouste on Nov 25, 2013, 10:36 am



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
Title: Re: Reception d'un Signal RF
Post by: B@tto on Nov 25, 2013, 11:46 am

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
Title: Re: Reception d'un Signal RF
Post by: Artouste on Nov 25, 2013, 12:33 pm

...
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"
Title: Re: Reception d'un Signal RF
Post by: B@tto on Nov 25, 2013, 01:06 pm
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 :)
Title: Re: Reception d'un Signal RF
Post by: al1fch on Nov 25, 2013, 01:17 pm
+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 (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' !!
Title: Re: Reception d'un Signal RF
Post by: Artouste on Nov 25, 2013, 02:22 pm

+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
Title: Re: Reception d'un Signal RF
Post by: fdufnews on Nov 25, 2013, 02:48 pm
De le chronogramme que l'on voit, on dirait que les fronts descendants sont équidistants et que les 1 et 0 sont codés par la durée de l'état à 1.


Avec pulseIn() déterminer le temps entre les fronts descendants pour confirmer l'équidistance.
Ensuite une interruption sur le front descendant et on échantillonne au milieu du temps trouvé à l'étape précédente.
Il doit même y avoir moyen de le faire sans interruption (à la hussarde):
   Attente du front descendant
   delayMicroseconde() qui va bien
   digitalFastRead()
Title: Re: Reception d'un Signal RF
Post by: al1fch on Nov 25, 2013, 02:54 pm
en marge du fil de discussion.....
Quote
une bonne base accessible en reception est d'utiliser un dongle compatible SDR....

Salut Artouste !
J'ai pas fini ma lettre au Père Noel.....
En cette fin 2013 que trouve t-on comme bon dongle SDR économique (chipset ? recommendations ? compatibilité ou pas avec tel ou tel soft ...)

retour dans le fil ...
Finalement le codage du bit semble être identique à celui trouvé pour le systeme Blyss (1/3 ou  2/3  d'état haut à partir du front descendant). Voir Reply #1 de Skywodd dans ce fil.
Les softs de Skywodd sont sans doute utilisables en corrigeant au besoin la partie préambule de la trame , le nombre de bits, les durées typiques des deux durées d'état haut....

http://skyduino.wordpress.com/2012/07/19/hack-partie-2-reverse-engineering-des-interrupteurs-domotique-blyss/ (http://skyduino.wordpress.com/2012/07/19/hack-partie-2-reverse-engineering-des-interrupteurs-domotique-blyss/)
https://barbudor.wiki.zoho.com/Syst%C3%A8me-domotique-Blyss-de-Castorama.html (https://barbudor.wiki.zoho.com/Syst%C3%A8me-domotique-Blyss-de-Castorama.html)
Faudrait pas réinventer notre propre roue !!!

En revoyant les chronogrammes Blyss ça me rappelle qu'au fond d'un tiroir 'Microchip' traine encore un PicKit2 utilisé alors avec sa petite fonction  'analyse logique' pour 4 traces !!



Title: Re: Reception d'un Signal RF
Post by: Artouste on Nov 25, 2013, 03:38 pm

en marge du fil de discussion.....
Quote
une bonne base accessible en reception est d'utiliser un dongle compatible SDR....

Salut Artouste !
J'ai pas fini ma lettre au Père Noel.....
En cette fin 2013 que trouve t-on comme bon dongle SDR économique (chipset ? recommendations ? compatibilité ou pas avec tel ou tel soft ...)



j'ai une ezcap plus vendue* , mais si je devais commander à pas cher juste pour voir et debuter avec SDR+  je prendrais ça , le cout de la deception n'etant pas exorbitant  :smiley-mr-green:
http://dx.com/p/ezcap-eztv665-dvb-t-usb-2-0-hdtv-tuner-receiver-set-1-x-cr2025-158821
chips et tuner supporté par sdr

* edit si là
http://dx.com/p/mini-dvb-t-digital-tv-usb-2-0-dongle-with-fm-dab-remote-controller-92096

et tu fais une sacrée economie par rapport au premier modele --------------->[]    :smiley-mr-green:
Title: Re: Reception d'un Signal RF
Post by: CycloneSeb on Nov 25, 2013, 11:41 pm
et bien, quelle efficacité ! waouhhh !
Et surtout merci à vous tous pour vos idées, vos propositions et réflexions, je suis vraiment impressionné.

Concernant le décodage de la trame, je tentais désespérement "d'utiliser" le premier signal haut de 420 µSec, mais il sert au final à indiquer le début de la trame.
En prenant ensuite comme consigne  1= état bas de 420 µSec + état haut de 840 µSec et 0 = état bas de 840 µSec et état haut de 420 µsec (timers vérifiers via l'oscilloscope), j'ai pu décodé la trame.

Reste maintenant à compiler un programme simple (et surtout compréhensible pour le jeune padawan que je suis) pour que l'Arduino déclenche une action à la réception de ce code, je vais me baser pour cela sur vos différents lien, des nuits de folie en vue ;-)

Encore un tout grand merci pour votre passion et votre volonté d'aider et de partage !

bonne nuit !
Title: Re: Reception d'un Signal RF
Post by: B@tto on Nov 26, 2013, 09:13 am

Reste maintenant à compiler un programme simple (et surtout compréhensible pour le jeune padawan que je suis) pour que l'Arduino déclenche une action à la réception de ce code, je vais me baser pour cela sur vos différents lien, des nuits de folie en vue ;-)



Rien de plus simple : tu as normalement obtenu une suite de 0 et de 1, donc, un nombre ! Il suffit d'une simple comparaison ;)