SERIN et timeout

zebulon

Member
Bonjour à tous,

Quelques jours que je ne suis pas venu et je vois que l'aspect du site a changé. Je préférais avant ... mais ce n'est pas là l'objet de ma visite.

Je suis en train d'expérimenter avec les modules emission/reception TX/RX433.
Pas de problème avec cela, mais plutôt avec la fonction SERIN.

J'ai un 1er montage à base de 08M qui lit une température et qui l'envoie avec un SEROUT.
J'ai un 2ème montage à base de 18M2 qui reçoit cette température et l'affiche sur un afficheur LCD 4x20.
Voici des extraits de codes :
1) Emission :
Code:
serout  4, N1200, ("CAPT", 1, B0, B1)
2) Reception :
Code:
serin [2000, erreur], C.6, N1200, ("CAPT"), numero_capteur_low, temperature_lsb, temperature_msb
Le problème est le suivant :
Je m'attendais à ce que, lorsqu'il n'y a pas de donnée qui arrive sur le module de reception, la fonction SERIN débranche vers la routine erreur,
mais ce n'est pas le cas ! En fait, la fonction SERIN reste bloquée jusqu'à ce qu'elle reçoive enfin des données.

J'ai essayé en utilisant le muli-tâche, mais ce n'est pas mieux. Si la fonction SERIN ne reçoit rien, l'autre tâche n'est pas exécutée.

Avez-vous déjà rencontré ce problème ? Auriez-vous une solution ?

Merci,
Guillaume
 

zebulon

Member
Bonjour PieM,

Merci pour ta réponse.
J'ai lu tes indications dans le post.
J'ai essayé à tout hasard, mais ce qui n'a rien changé. Ce qui est normal étant donné que je n'ai pas de problème de transmission.
Avec ou sans l'ajout de la "trame de réveil", la réception fonctionne à merveille, même sur une distance de 30m (je n'ai pas testé plus pour l'instant). Le récepteur dans la maison et l'émetteur situé dehors à environ 30m.

Mais mon problème reste entier.
Je répète que mon problème n'est pas un problème de réception, mais un problème de timeout de la fonction serin.

Par exemple, si la pile de l'emetteur est vide et que le montage n'émet plus (simulé en débranchant l'alimentation du montage émetteur), le récepteur reste bloqué sur la fonction serin malgrès le timeout.
Actuellement, mon montage récepteur affiche la température intérieur, la température extérieur (qui est envoyée par le module émetteur que je mets dehors).
Si je débranche la pile du montage émetteur (donc module extérieur qui envoie la température), le montage récepteur reste bloqué sur l'affichage de la température extérieur (plutôt la fonction serin juste avant) alors que ma routine d'erreur lorsque le timeout survient devrait affichée des tirets à la place.
Dès que je rebranche le module extérieur, la fonction serin se débloque et ma boucle d'affichage continue.

Je reste preneur de toutes autres idées.

Personne n'a encore utilisé serin avec un timeout ?

Merci,
Guillaume
 

zebulon

Member
Merci PieM. Je regarderais dans la journée.
La tout de suite, je suis en congé et je dois aller faire du béton avant qu'il ne fasse trop chaud.

A+,
Guillaume
 

PieM

Senior Member
Bonjour Guillaume,

J'ai lu un peu les réponses faites par Technical et hippy à propos du timeout.

L'utilisation du timeout n'est donc pas possible avec les modules classique 433 MHz en raison des parasites HF. C'est important !


Il est vrai que je n'ai jamais été confronté à ce problème, utilisant systématiquement un 08M dédié à la gestion de la réception radio et quelque tâches annexes sur les données reçues.
La solution de hippy d'utiliser un codeur décodeur Manchester est certes une excellente solution, mais un peu lourde!
Dédier un 08M à la réception me semble plus simple, bien que moins sûr sur le plan sécurité de la transmission.

La nouvelle gamme M2 (sauf le 18 et 08) ainsi que les X2 intègrent dans les commandes rfin et rfout le codage décodage Manchester ... mais ne gèrent pas le timeout !
 

zebulon

Member
Bonjour Guillaume,

J'ai lu un peu les réponses faites par Technical et hippy à propos du timeout.

L'utilisation du timeout n'est donc pas possible avec les modules classique 433 MHz en raison des parasites HF. C'est important !


Il est vrai que je n'ai jamais été confronté à ce problème, utilisant systématiquement un 08M dédié à la gestion de la réception radio et quelque tâches annexes sur les données reçues.
La solution de hippy d'utiliser un codeur décodeur Manchester est certes une excellente solution, mais un peu lourde!
Dédier un 08M à la réception me semble plus simple, bien que moins sûr sur le plan sécurité de la transmission.

La nouvelle gamme M2 (sauf le 18 et 08) ainsi que les X2 intègrent dans les commandes rfin et rfout le codage décodage Manchester ... mais ne gèrent pas le timeout !
Bonsoir PieM,
Oui, le problème n'est pas un problème de timeout en fait, mais un problème de parasitage du module HF qui empèche le timeout de commencer un décompte puisque dès que le SERIN reçoit un parasite, il interrompt décomptage du timeout.
Si tu as lu mes interventions sur l'autre fil, j'y expliquait que je n'avais aucun problème en filaire, avant de mettre les modules HF.
Je pense la même chose que toi en ce qui concerne le codage Manchester.
En ce qui concerne la sécurité de la transmission, mon application finale (station météo) n'est pas touchée car je n'ai pas de problème de confidentialité.

Cependant, c'est un vrai problème pour des applications "sensibles".

Je réfléchi à une solution sans timeout mais cela va ajouter du code dans le programme et manger de la place.
En fait, je réfléchi à n'importe quelle solution permettant de rendre mon programme non bloquant.

Est-ce qu'il y a moyen, dans les PICAXE, de rajouter des routines en assembleur ? Ou ne peut-on faire que du basic PICAXE ? Je crois deviner la réponse mais bon ...

A+,
Guillaume
 

PieM

Senior Member
Bonjour,

A faire du développement en assembleur, il faudrait le faire sur un PIC annexe... l'intérêt est limité.

Vu le prix des picaxes je n'hésite jamais à séparer les fonctions entre plusieurs picaxes (et d'autre microcontrôleurs) qui communiquent.
(Actuellemment un robot solaire qui comprend un 08M, deux 18M2 et un 28X2.)

C'est pour cela que je conseillerais plutôt de gérer la connexion RF via un 08M qui lui, fera office de tampon, gérera le défaut de transmission et peut en plus transmettre les infos au 18M2 via une interruption.
 

zebulon

Member
Bonjour PieM,

Effectivement, maintenant que je vois comment faire, ce sera nettement plus simple et meilleur marché en utilisant un 08M pour gérer la réception des données.
Je pourrais alors utiliser le timeout de la fonction serin sur le 18M2 puisque la lisaison entre le 18M2 et le 08M sera filaire.

Pourrais-tu en dire un peu plus sur les interruptions du 18M2 car j'ai bien vu les interruptions sur le 28x2, mais pas sur le 18M2.

Mon projet de station météo final sera à base de 28x2 car je suis un peu limité en nombre d'instruction avec le 18M2.

Guillaume
 

PieM

Senior Member
Bonjour Guillaume,

Par rapport au 28X2, sur le 18M2, l'instruction setintflags n'est hélas pas possible; la seule possibilité est de provoquer une interruptions via une entrée câblée.
sinon le setint permet de définir le masque et les conditions logiques.
Fuse a fait un petit topo au sujet des interruptions: ICI
 

nand

Member
bonjour
pour contourner le probleme (timeout), il suffit de garder le module emetteur en porteuse pure apres l'envois de la trame , plus longtemps que le timeout programé. ce qui satture le recepteur qui ne voie plus les trames parasites .
je reconnait que ce n'est pas économique au niveau energie . mais cela fonctionne .
 

PieM

Senior Member
Bonjour,
il suffit de garder le module emetteur en porteuse pure apres l'envois de la trame
je ne comprends pas trop, car le problème du timeout se situe avant la réception de la trame effective !
d'autre part, l'émission n'est jamais coupée juste après la fin du timeout du récepteur. Comment le serait elle ?
enfin, le problème est lié au parasitage HF qui fait que la sortie du récepteur est toujours active. Donc prolonger l'émission HF ne change rien au problème.
Comme déjà dit, cela concerne les modules basiques.

mais cela fonctionne
:confused:
 

nand

Member
en conservant l'emetteur en porteuse sans modulation , le recepteur ne recoit plus de parasite et sort du timeout " point important il faut que votre emetteur neutralise completement les trames parasites "
 
Last edited:

zebulon

Member
Je veux bien essayé. Juste pour le fun car pour mon appli actuelle, je cherche à consommer le moins possible.
Comment fait-on cela ?
As-tu un schéma, un bout de code ?

Guillaume
 

PieM

Senior Member
Bonjour,

il faut que votre emetteur neutralise completement les trames parasites "
Ce n'est pas l'émetteur qui envoit des trames parasites ! C'est le récepteur qui en reçoit.

Il suffit de brancher un oscillo sur la sortie d'un récepteur basique sans émetteur en fonctionnement pour se rendre compte que cette sortie reçoit en permanence des signaux parasites. Et l'émission d'une porteuse "pure" ne change rien à l'affaire. C'est déjà son état avant d'envoyer les trames!

@ Guillaume

Dans la mesure ou la partie réception est à l'écoute permanente sur un 08M dédié, il suffit de réveiller le picaxe émetteur juste le temps d'envoyer quelques trames. L'émetteur doit donc être alimenté via une sortie du picaxe (avec un transistor, ou un relais). Eventuellement , si ils le peuvent, les capteur externes peuvent également être alimenté temporairement.
en résumé ...
début:
activation de l'alim émetteur (+ capteurs)
effectuer les mesures
envoi de x trames
arrêt de l'alim émetteur
sleep x secondes ou minutes
retour début


Voir l'instruction disablebod aussi pour réduire la consommation...
 
Last edited:

nand

Member
Bonjour,



Ce n'est pas l'émetteur qui envoit des trames parasites ! C'est le récepteur qui en reçoit. ???????????? ou j'ai ecrit que c'etait l'emetteur qui envoyer des parasites ????

Il suffit de brancher un oscillo sur la sortie d'un récepteur basique sans émetteur en fonctionnement pour se rendre compte que cette sortie reçoit en permanence des signaux parasites. Et l'émission d'une porteuse "pure" ne change rien à l'affaire. C'est déjà son état avant d'envoyer les trames! :eek: comment un récepteur saturé par une porteuse peut il encore recevoir qlq chose ?

@ Guillaume

Dans la mesure ou la partie réception est à l'écoute permanente sur un 08M dédié, il suffit de réveiller le picaxe émetteur juste le temps d'envoyer quelques trames. L'émetteur doit donc être alimenté via une sortie du picaxe (avec un transistor, ou un relais). Eventuellement , si ils le peuvent, les capteur externes peuvent également être alimenté temporairement.
en résumé ...
début:
activation de l'alim émetteur (+ capteurs)
effectuer les mesures
envoi de x trames
arrêt de l'alim émetteur
sleep x secondes ou minutes
retour début


Voir l'instruction disablebod aussi pour réduire la consommation...
bon moi ici ca fonctionne tres bien chacun fait comme il veut , ca fait 30 ans que je fait de la radio je pense savoir de quoi je parle .
 
Last edited:

PieM

Senior Member
comment un récepteur saturé par une porteuse peut il encore recevoir qlq chose
bon moi ici ca fonctionne tres bien chacun fait comme il veut , ca fait 30 ans que je fait de la radio je pense savoir de quoi je parle
c'est bien . félicitations!
Vous expliquerez comment vous "saturez un récepteur" !

Je vous signale que dans la plupart des applications, l'émetteur reste sous tension continuellement. Donc la porteuse est toujours présente.
Si vous faites de la radio, vous utilisez les modules Rx/Tx 433 MHz sans traitement du signal ?
Et vous savez que certains de ces modules d'émission se mettent en veille dès qu'il n'y a plus de signal à l'entrée ?

Moi, je vous confirme qu'avec ou sans porteuse active ces récepteurs voient des parasites sur leurs sorties (et mon oscillo aussi !).
Ce fait a été signalé maintes fois sur le site anglais et a fait l'objet d'une mise en garde de la part du support technique.

Quand vous certifiez que ça marche, indiquez précisément quel matériel vous utilisez, et quels tests vous avez effectués en réalité. ça peut faire gagner du temps.
Dans ce forum, tous les schémas et parties de codes sont les bienvenus ... :)
 

nand

Member
c'est bien . félicitations!
Vous expliquerez comment vous "saturez un récepteur" ! <- --- il suffit qu'il reçoive une émission sur sa fréquence de réception

Je vous signale que dans la plupart des applications, l'émetteur reste sous tension continuellement. Donc la porteuse est toujours présente. FAUX ce n'est pas le fait qu'il soit alimenté , que la porteuse soit présente
Si vous faites de la radio, vous utilisez les modules Rx/Tx 433 MHz sans traitement du signal ? au niveau de l&#8217;émetteur c'est du tout ou rien ( vous voulez parler de protocole ? )
Et vous savez que certains de ces modules d'émission se mettent en veille dès qu'il n'y a plus de signal à l'entrée ? si l&#8217;émetteur se met en veille tout seul, elle est ou la porteuse ? ceci contredis ce qui est ecrit 2 ligne plus haut

Moi, je vous confirme qu'avec ou sans porteuse active ces récepteurs voient des parasites sur leurs sorties (et mon oscillo aussi !).
Ce fait a été signalé maintes fois sur le site anglais et a fait l'objet d'une mise en garde de la part du support technique.

Quand vous certifiez que ça marche, indiquez précisément quel matériel vous utilisez, et quels tests vous avez effectués en réalité. ça peut faire gagner du temps.
Dans ce forum, tous les schémas et parties de codes sont les bienvenus ... :)
se sont pour l&#8217;émetteur un module aurel TX SAW 4333/sz antenne 1/4 d'onde et pour le récepteur aurel RF 290 a-5-s antenne yagis
pour l'émetteur il suffit de maintenir la patte (2) mod in a 1 pour qu'il reste en émisssion pour faire tomber le timeout du récepteur

en présence d'une porteuse la patte 14 (data out) du module récepteur se retrouve a 0 sans aucun parasite. sur mon oscillo , des que l&#8217;émetteur cesse d'emettre il y apparait un tas de cochonneries qui bloquent le timeout.

pour les docs aurels -> http://www.aurelwireless.com/trasmettitori-radiofrequenza/

bon la discutions s'annonce sans fin a se rythme , mon inter initiale avais pour but de permettre de sortir du timeout , justement par cette astuce ,libre a ceux qui ne veulent pas l'appliquée de chercher d'autre solutions
 
Last edited:

PieM

Senior Member
Tous les modules émetteurs ne sont pas des TX SAW 4333/sz de chez Aurel ! Il y a d'autres modèles, et d'autres fabricants.
Et votre documentation ne parle de la broche 2 que pour une modulation quand la tension est de 12V !

Certains modules miniatures ne comportent que 4 broches et la porteuse est toujours présente si ils sont alimentés!
Il n'y a pas de contradictions dans ce que j'ai écrit : je dis que certains modules emetteurs ont eux une mise en veille si il n'y a pas de modulation. Certains, ce n'est pas tous.

Sinon, j'ignorais qu'en AM, il suffisait de recevoir une émission sur sa fréquence de réception pour "saturer le récepteur" et ne pas recevoir de parasite ! Et quel que soit le niveau du signal et l'environnement ?

En résumé tant mieux si ça marche chez vous avec vos composants, mais ce n'est pas le cas pour tout le monde.
 

zebulon

Member
Bon, bon, bon,

Ca se chamaille ici ... :)

Merci nand. Merci PieM.

Moi, j'ai pris note de tous ce que vous avez dit et dès que j'ai un peu de temps, j'essaye la solution en saturation du récepteur par l'envoie de 1 en continue.
D'avantage par curiosité intellectuelle que par nécessité, car ce n'est pas une solution très économique en terme de consommation.
Mais je suis curieux de voir si ça peux fonctionner avec mes récepteurs à 4 pattes et 2$.

Je vous tiendrais au courant,
Guillaume
 

fuse

Senior Member
Bonjour à tous,

Pour moi, une seule solution pour comprendre le problème : l'expérimentation.
Je reprend donc mes platines de test
pour l'émetteur, 28X1 et émetteur Aurel TX-SAW 433 sur Out2, potentiomètre sur adc0

debut : readadc 0,b0 'lecture potentiomètre
serout 2 ,N2400, ($55,$55,$55,$55,$55) 'envoi préambule
pause 8
serout 2 ,N2400, ("CAPT",b0,b1) 'envoi données b0 et b1 avec chaine de validation
pause 100
let b1 = b1+2 'évolution de b1 pour test sur le récepteur
goto debut

pour le récepteur , 28X1, récepteur Aurel AC-RX sur In2, afficheur LCD sur Out0
programme :


debut : serout 0,N2400, (254,128) 'position LCD ligne 1
serout 0,N2400, ("b0 =", #b0," ") 'affichage b0 = valeur
serout 0,N2400, (254,192) 'position LCD ligne 2
serout 0,N2400, ("b1 =", #b1," ") 'affichage b1 = valeur
recept: serin [100,erreur], 2 , N2400, ("CAPT"), b0,b1 'reception avec timeout de 100ms
goto debut

erreur : serout 0,N2400, (254,128) 'position LCD ligne 1
serout 0,N2400, ("no recept") 'affichage no recept
goto recept
Pour effectuer le test, je me contente d'arrêter l'alimentation de l'émetteur... Tout simplement parce qu&#8217;il s'agit du problème susceptible d'arriver...

Conclusion :
dans un environnement calme (dans mon jardin) fonctionnement OK
dans un environnement perturbé (à coté de mon ordinateur, ecran...) je remarque le même problème qu'évoqué par zebulon : pas de déroutage en erreur....
Pour moi la solution de nand de continuer d'émettre n'est tout simplement pas valable parce qu'un défaut d'alimentation ne permet pas de continuer d'émettre....:rolleyes:
Pour le moment je n'ai pas de solution pour résoudre le problème. Je n'ai pas encore tester la sortie du récepteur avec mon oscillo pour savoir si le signal est perturbé. Il faut quand même résoudre ce problème de façon logiciel.
 
Last edited:

zebulon

Member
Bonjour,

Je pense que la solution proposée au post #6 par PieM est la meilleur solution (utilisation d'un 08M dédié à la réception HF).
Les avantages:
- faible coût (un PIC et quelques bout de fil)
- simple à mettre en oeuvre
- très efficace. Au lieu d'avoir par exemple un 18M2 qui bloque sur le serin car le timeout n'en fini pas, c'est le timeout sur port série filaire entre le 18M2 et 08M qui interviendra et qui lui ne bloquera pas car ne se perturbe pas aussi facilement que la HF.
Inconvénients :
- 2 PICAXEs à mettre en oeuvre.

Mais la programmation est hyper simple (comme les picaxes en général)
Donc pour moi, c'est tout vu.

Guillaume
 

fuse

Senior Member
Oui bien sur la solution de PieM est simple est efficace. C'est juste par plaisir que je souhaiterais résoudre ce problème. ;)
 
Top